Elastic Stack7.2(ELK)日志系统简介 及 搭建
ELK系列文章:
一、需求:
在我们的项目中有日志是一个必不可少的东西,但是日志的检索是一个很麻烦的事情,如每天一个日志,要找到问题就得一个一个找,并不能做到检索功能,这还算好的,如果是分布式的,每个机器都得找一遍,这种效率太低,当然可以把日志收集到一个文件中,多个机器每天的日志可以收集到一块,如果把所有的日志收集一块显然不现实;所以出现了很多的日志检索方式,这篇介绍的是Elastic Stack(ELK)。
二、简介:
1、ELK Stack:ELK是三个开源软件的缩写,分别为:Elasticsearch 、 Logstash以及Kibana ,它们都是开源软件,ELK是5.0版本前的统称;这是一套统一的日志收集分析系统。
2、Elastic Stack:是ELK5.0之后加入了Beats 套件后的新称呼。
3、fielbeat是一个轻量级日志收集工具,类似于Linux系统中tail -f监控文件变化的功能;其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比 Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。
4、Logstash是一款开源的日志收集处理框架,负责数据的采集和格式化;Logstash处理数据主要分为三个阶段,inputs、filters、outputs,其中各个阶段,官方提供了丰富的插件,可以对数据进行处理。
5、Elasticsearch是一个开源的分布式搜索引擎,用于数据的快速索引存储。
6、Kibana负责提供web展示功能;可以帮助汇总、分析和搜索重要数据日志。
7、Beats包含六种工具:
Packetbeat: 网络数据(收集网络流量数据)
Metricbeat: 指标 (收集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
Filebeat: 日志文件(收集文件数据)
Winlogbeat: windows事件日志(收集 Windows 事件日志数据)
Auditbeat:审计数据 (收集审计日志)
Heartbeat:运行时间监控 (收集系统运行时的数据)
三、采集流程:
beat采集–>Elasticsearch–>Kibana
beat采集–>Logstash–>Elasticsearch–>Kibana
- filebeat从不同服务端收集日志转发给logstash处理。
- logstash将filebeat收集的日志进行格式化处理。
- 然后通过elasticsearch对格式化后的数据进行索引和存储,最后交由kibana展示。
- 将日志进行集中化管理(filebeat)
- 将日志格式化(logstash)
- 对格式化后的数据进行索引和存储(elasticsearch)
- 前端数据的展示(kibana/grafana)
四、准备工作及官网:
- ELK官网:https://www.elastic.co/cn/products/
- ELK下载地址:https://www.elastic.co/cn/products/log-monitoring
- ELK中文指南:https://legacy.gitbook.com/book/chenryn/elk-stack-guide-cn/details
- 中文社区:https://elasticsearch.cn/
- 官方安装文档:https://www.elastic.co/guide/en/elastic-stack/current/installing-elastic-stack.html
ELK要求必须java1.8以上环境,所以先具备java1.8环境;4个服务最好使用相同版本;官网最新为7.2.0,下载Linux包;本人准备把Logstash、Elasticsearch、Kibana、放在一台机器;FileBeat放在服务所在机器。
五、安装Elasticsearch:
1、新建好elk用户,然后解压Elasticsearch的压缩包
tar -vxf elasticsearch-7.2.0.tar.gz
2、配置,打开/config/elasticsearch.yml
#ip
network.host: ***.***.*.**
#端口
http.port: 9200
#主要用于集群配置,可以先放开,不打开会报错,后边具体说;ES名称,多台服务器配置名称不可相同
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
3、启动,进入到/bin/ ./elasticsearch -d或者./elasticsearch &
4、访问http://ip:9200,有数据则成功
5、报错:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
#修改下面的文件 里面是一些内核参数
vi /etc/sysctl.conf
#添加以下配置
vm.max_map_count=655360
保存然后
sysctl -p
#-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
bootstrap checks failed max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
vi /etc/security/limits.conf
#添加如下信息
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
max number of threads [1024] for user [es] likely too low, increase to at least [2048]
vi /etc/security/limits.d/90-nproc.conf
#添加如下信息
* soft nproc 2048
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
elasticsearch.yml文件
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
elasticsearch.yml文件
node.name: node-1 前面的#打开
cluster.initial_master_nodes: ["node-1"]
六、安装kibana:
1、解压包
tar -vxf kibana-7.2.0.tar.gz
2、进入/config,修改kibana.yml
#端口
server.port: 5601
#ip
server.host: "198.218.*.**"
#elasticsearch的服务,可以配置多个
elasticsearch.hosts: ["http://198.218.6.12:9200"]
#日志输出
logging.dest: /home/elk/kibana/kibanalog/kibana.log
3、启动,进入到/bin目录,./kibana &
4、访问http://ip:5601,如果连接elasticsearch出错,会在页面报连接elasticsearch集群无法连接
5、设置kibana;Managementc菜单,进入Advanced Settings目录,修改Date format更改时间显示格式为yyyy-MM-dd HH:mm:ss:SSS,避免数据导入后显示的时间字段数据和ES存储数据不相同;进入Monitoring菜单添加监控服务,监控运行健康状态。
七、安装logstash:
1、解压包
tar –xvf logstash-7.2.0.tar.gz
2、配置;进入/config,修改logstash.yml
#ip
http.host: "198.218.*.*"
#端口,默认9600
http.port: 9600-9700
修改logstash-sample.conf
input {
#监测beats通过5044传输的数据
beats {
port => 5044
}
}
output {
elasticsearch {
#es的服务
hosts => ["http://198.218.*.*:9200"]
#主键
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
3、启动,进入/bin,./logstash -f /home/elk/logstash/logstash-7.2.0/config/logstash-sample.conf &
日志输出到logs目录的logstash-plain.log文件
4、访问,http://ip:9600;出现数据则成功
八、安装filebeat:
1、解压包
tar -vxf filebeat-7.2.0.tar.gz
2、配置;进入/config,修改filebeat.yml
filebeat.inputs:
#输入格式为log
- type: log
#此处一定设置true,否则日志采集不生效
enabled: true
#日志路径
paths:
- /home/erp/erp-interface-logs/*.log
#输出到logstash
output.logstash:
hosts: ["198.218.*.*:5044"]
3、启动,进入/bin, ./filebeat -c filebeat.yml & 查看是否启动成功,查看进程或者查看日志即可
九、注意及结束:
相比于向 elasticsearch 输出数据,个人更推荐向 logstash 输出数据。 因为 logstash 和 filebeat 一起工作时,如果 logstash 忙于处理数据,会通知 FileBeat 放慢读取速度。一旦拥塞得到解决,FileBeat 将恢复到原来的速度并继续传播。这样,可以减少管道超负荷的情况。
Filebeat 有两个主要组件:harvester:负责读取一个文件的内容。它会逐行读取文件内容,并将内容发送到输出目的地。prospector:负责管理 harvester 并找到所有需要读取的文件源。比如类型是日志,prospector 就会遍历制定路径下的所有匹配要求的文件。
对于所有服务的停止,就是直接杀进程,找不到进程可以使用fuser -n tcp 端口,如fuser -n tcp 5601,然后杀进程即可
参考文章:
安装:https://blog.****.net/xb_workspace/article/details/85165070
https://blog.****.net/weixin_43972701/article/details/85161983
错误:https://blog.****.net/Dooonald/article/details/87931435
相关:https://mp.weixin.qq.com/s/YyFrqKp9VmKA-_247UVKKw