ELK日志分析搭建(elasticsearch+Logstash+Kibana)
一、ELK概述
ELK是Elasticsearch、Logstash和Kibana这三款开源框架首字母的缩写;
ELK职能分工 logstash做日志对接,接受应用系统的log,然后将其写入到elasticsearch中,logstash可以支持N种log渠道, kafka渠道写进来的、和log目录对接的方式、也可以对reids中的log数据进行监控读取,等等。 elasticsearch存储日志数据,方便的扩展特效,可以存储足够多的日志数据。 kibana则是对存放在elasticsearch中的log数据进行:数据展现、报表展现,并且是实时的。
二、架构设计分析
方案1:
方案一是最简单的一种ELK架构方式 缺点:Logstash运行占用CPU和内存较高
方案2:
官方推荐:将收集端logstash替换为beats,更灵活,消耗资源更少,扩展性更强。同时可配置Logstash 和 Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询
为什么要是用fifilebeat:
Filebeat和Logstash ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比 Logstash, Beats所占系统的CPU和内存几乎可以忽略不计。 Filebeat工作原理 Filebeat是使用GO语言开发,
工作原理如下:
当Filebeat启动时,它会启动一个或者多个prospector监控日志路径或 日志文件,每个日志文件会有一个对应的harvester,harvester按行读取日志内容并转发至后台程序。Filebeat维护 一个记录文件读取信息的注册文件,记录每个harvester最后读取位置的偏移量。
三、安装部署Elasticsearch集群,kibana
参数地址:http://www.xiaoshu168.com/docker/393.html
四、安装logstash
下载安装包https://pan.baidu.com/s/1XR3YzHtiZ_wJCcK6ORYtfA 提取码:vduk mkdir -p /usr/local/logstack && cd /usr/local/logstack 把文件放到创建的目录解压即可
五、安装fifilebeat
下载安装包https://pan.baidu.com/s/1mZ10Nk9rjdaeIru5Tc-QMQ 提取码:egr6 mkdir -p /usr/local/filebeat && cd /usr/local/filebeat 把文件放到创建的目录解压即可
六、配置启动
在logstash安装目录下新建一个文件fifirst-pipeline.conf input { beats { port => "5044"#端口 } } output { elasticsearch { # hosts => ["192.168.232.104:9200","192.168.232.104:9201","192.168.232.104:9202"] hosts => ["192.168.232.204:9200"]#修改为自己的es地址和端口 index => "nginx-access-log-%{+YYYY.MM.dd}" } } 检查配置并启动Logstash cd /usr/local/logstack/logstash-7.6.1 bin/logstash -f first-pipeline.conf --config.test_and_exit (--confifig.test_and_exit选项的意思是解析配置文件并报告任何错误) cd /usr/local/logstack/logstash-7.6.1 bin/logstash -f first-pipeline.conf --config.reload.automatic (--confifig.reload.automatic选项的意思是启用自动配置加载,以至于每次你修改完配置文件以后无需停止 然后重启Logstash) Filebeat配置和启动
filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/*.log #修改为自己的文件 output.logstash: hosts: ["192.168.232.104:5044"] # 修改为自己的logstash的ip和端口
在这个例子中,获取在/var/log/nginx/*.log路径下的所有文件作为输入,这就意味着Filebeat将获取/var/log/nginx 目录下所有以.log结尾的文件。
为了从预定义的子目录级别下抓取所有文件,可以使用以下模式:
/var/log/*/*.log
启动fifilebeat
cd /usr/local/filebeat/filebeat-7.6.1-linux-x86_64 ./filebeat -e -c filebeat.yml -d "publish"
注意! 上面启动fifilebeat和logstash都是在窗口交互式启动的, 实际产线环境中需要后台运行方式启动,就可以在后 台运行,关掉窗口也不会结束运行了。
本文由:xiaoshu168.com 作者:xiaoshu发表,转载请注明来源!