ELKF安装及安装过程中的问题的解决

Elastic Stack(elk and so on)

[TOC]

旧称X-Pack,是一系列围绕elasticSearch的组件功能.比如常被提起的elk(日志采集分析)。
elk指 elasticsearch(存储+搜索)、logstash(收集)、kibana(展示) 三个组件.

几个常用组件介绍

  1. Filebeat: 日志采集的进程agent,负责对数据进行采集,转换,并发送到存储库.
  2. Logstash: 开源的服务器端数据处理管道,能够同时从多个来源处对数据进行采集,转换,并发送到存储库.
  3. ElasticSearch:数据存储检索引擎,you know for search.
  4. Kibana: 以图表的形式呈现数据,并且具有可扩展的用户界面,全方位可视化配置和管理 Elastic Stack.

一.ElasticSearch

1.1.本体安装

由于GFW和网络不稳定的原因,采用下载安装包安装(以7.6.1为例)
下载地址:https://www.elastic.co/downloads/elasticsearch

  1. 解压后,配置./config/elasticsearch.yml
#可以访问的ip地址
network.host: 0.0.0.0
#http访问端口
http.port: 8200
#同时设置集群名/节点名(集群名要一样,这样可以自动组网,节点名要不一样)
cluster.name: ES4ELK
node.name: master
#Pass an initial list of hosts to perform discovery when this node is started:
#启动节点主动发现的主机列表
discovery.seed_hosts: ["127.0.0.1"]

2.启动./bin/elasticsearch -d -d参数表示后台启动elasticsearch.

3.查看进程 ps aux |grep elasticsearch

1.2.插件安装(ik分词器)

1.解压插件到指定位置
unzip elasticsearch-analysis-ik-7.6.1.zip -d elasticsearch/plugins/ik
2.重启es

二、安装kibana

下载地址:https://www.elastic.co/downloads/kibana

  1. 解压后,配置./config/kibana.yml
server.port: 8400
server.host: "172.18.4.82"
server.name: "Entropy"
elasticsearch.hosts: ["http://localhost:8200"]
i18n.locale: "zh-CN"

2.后台启动kibana:nohup ./bin/kibana
3.查看进程使用 lsof -i:port 因为kibana实际及nodejs项目,并没有名为kibana的进程.

三、安装logstash

下载地址:
https://www.elastic.co/downloads/logstash

  1. 解压,配置./config/logstash.yml
node.name: logstash-master
pipeline.id: main
http.host: "172.18.4.82"
http.port: 8500
  1. 启动测试
    logstash是数据处理管道,所以除了主配置logstash.yml外,启动的时候还需要使用-e参数指定输入输出格式配置。
    解压完毕使用命令 bin/logstash -e 'input { stdin { } } output { stdout {} }'启动logstash测试。
    当看到输出Pipeline started,输入任意字符串,logstash以标准输出的方式回显:

[2020-04-03T21:20:06,326][INFO ][logstash.javapipeline    ][main] Pipeline started {"pipeline.id"=>"main"}
The stdin plugin is now waiting for input:
[2020-04-03T21:20:06,396][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2020-04-03T21:20:06,879][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
你好1
{
      "@version" => "1",
    "@timestamp" => 2020-04-03T13:20:06.401Z,
          "host" => "v-next-cloud.sz.kingdee.net",
       "message" => "你好1"
}

则表示logstash安装正确,使用ctrl+d(发送EOF)退出当前进程。

到这里logstash可以正常启动,一般的,我们filebeat来收集日志给到logstash
看到这里可以先到下一节,安装配置filebeat然后再回来继续阅读剩下的内容。安装配置filebeat
<span id="jumpback"></span>

安装好了filebeat,那么配置一个接受filebeat输入输出配置文件filebeat-pipeline.conf:

2.2 从filebeats接受输入,输出到elasticsearch

input {
    beats {
        port => "5044"
    }
}
output {
    elasticsearch { hosts => ["localhost:9200"] }
    stdout { codec => rubydebug }
}
filter {
  mutate {
    remove_field => [ "host" ]
  }
}

启动命令 ./bin/logstash -f filebeats-pipeline.conf --config.test_and_exit

--config.test_and_exit选项是测试你的配置文件写的是否正确的提示功能.当看到提示:
Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
表示配置文件正确.

配置正确则执行./bin/logstash -f filebeats-pipeline.conf --config.reload.automatic

--config.reload.automatic选项让改变的配置在不重启服务的情况下生效。

三、安装配置filebeat

<span id="jump"></span>

1.下载解压

2.配置 filebeat.yml

filebeat.inputs:
- type: log
  # Change to true to enable this input configuration.
  enabled: true
  # auto relase file handler ,default is 5m
  #close_inactive: 5m
  # scan frequency
  scan_frequency: 10s
  # ignore file modified before this confiture,must grater than close_inactive
  ignore_older: 73h
  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /var/ai/log/*.log

关闭配置文件中默认打开的elasticsearch输出相关配置并打开logstash相关的tcp端口配置:

output.logstash:
  # The Logstash hosts this port is logstash tcp not http
  hosts: ["test.tocute.cn:5044"]

then run
nohup ./filebeat -e -c filebeat.yml -d "publish" >log.log 2>&1 &

看到这里可以跳回到配置logstash的地方继续阅读 安装配置logstash

四、碰到的一些问题

1.1 启动问题:vm-max-map-count 太小报错

修复方法:
https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html

1.2 cluster health: yellow (1 of 2)

单点启动后,默认副本(replicas)个数是1,其实没有副本,所以设置成0.
所以设置index的number_of_replicas为0,可以修复状态为yellow的问题.

PUT _all/_settings
{
    "index": {
        "number_of_replicas": 0
    }
}
1.3 无法自动组成集群

拷贝安装包多个节点启动的,需要把./data目录删除,然后启动,否则无法自动组网

1.4 索引建立的时候可以设置分片(number_of_replicas),创建后不能修改

每个节点上的分片个数只能在创建索引的时候指定,一旦索引创建则不能修改。

1.5.filebeat传输到logstash碰到的一些问题

failed to parse field [host] of type [text] in document
filebeat 传输到host的字段中host是一个对象

  "host" => {
                   "id" => "f5c67b3e099849f394957ff67349b277",
         "architecture" => "x86_64",
                   "os" => {
              "family" => "redhat",
              "kernel" => "3.10.0-693.el7.x86_64",
            "platform" => "centos",
             "version" => "7 (Core)",
            "codename" => "Core",
                "name" => "CentOS Linux"
        },

这里转换字段类型的时候出了问题,可以修改logstash入参出参格式文件filebeat-pipeline.conf增加过滤器移除host字段。

filter {
  mutate {
    remove_field => [ "host" ]
  }
}
1.6 filebeat 过一段时间自动关闭

报错:File is inactive:*.log. Closing because close_inactive of 5m
或者:Reader was closed: /var/ai/log/ai.log. Closing.

一段时间被监测的文件没有新的输入filebeat(close_inactive)会自动关闭,默认值是5m.
当logback等系统滚动日志名称的时候,filebeat持有旧文件的句柄.
close_inactive时间过后会自动关闭,scan_frequency是扫描新文件的频率.
使用nohup的方式启动的话会时常挂掉,而使用service方式启动,则可以在filebeat挂掉后自动重启。
/usr/lib/systemd/system/filebeat.service

[Unit]
Description=filebeat server daemon
Documentation=/var/elk/filebeat/filebeat -help
Wants=network-online.target
After=network-online.target

[Service]
User=kduser
Group=kduser
Environment="BEAT_CONFIG_OPTS=-e -c /var/elk/filebeat/filebeat.yml"
ExecStart=/var/elk/filebeat/filebeat  $BEAT_CONFIG_OPTS
Restart=always

[Install]
WantedBy=multi-user.target

其中的用户和用户分组必须正确,并且对filebeat相关文件有权限。
创建快捷方式
sudo ln -s /usr/lib/systemd/system/filebeat.service /etc/systemd/system/multi-user.target.wants/filebeat.service

启动(第一行修改xx.service文件后让其生效):

sudo systemctl daemon-reload
sudo systemctl start filebeat
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容