运维日志分析工具ELK:Windows与Linux皆可安装

一般提到监控,很多人就会想到监控服务器运行状态,网络运行状态 。其实由于业务需要,服务器和网络设备每时每刻产生的海量日志也同样的重要 。

运维日志分析工具ELK:Windows与Linux皆可安装

文章插图
 
为什么选用ELK?
  • 首先我们来了解一下ELK:
ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部 。
Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统 。它构建于Apache Lucene搜索引擎库之上 。
Logstash是一个用来搜集、分析、过滤日志的工具 。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志 。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch 。
Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据 。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据 。
  • ELK的优势
1.开源免费
ELK是属于免费开源软件,在初期使用阶段无需承担高额的软件费用 。
2.分布式部署以及扩容方便
Elasticsearch的高度扩展性,这一点类似于Ceph,能够在新节点加入以后,索引index会自动在新节点平衡 。摆脱了以往单节点性能瓶颈 。
3.用途
ELK开源解决方案开源用在故障排查、监控预警、关联事件、数据分析等等,用途及其广泛 。
linux部署ELK本次Linux采用centos7.6来部署ELK 。
[root@elk ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) 和之前文章类似,这次我还是采用Docker,(原因就是无需部署各种环境)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
  1. 安装Elasticsearch
先去docker官网获取最新的Elasticsearch镜像,如下图最新版本是7.9.3
运维日志分析工具ELK:Windows与Linux皆可安装

文章插图
 
拉取最新的Elasticsearch镜像:
docker pull elasticsearch:7.9.3创建网络,让其他组件运行在同一个网络下:
docker network create yunweichongzi
运维日志分析工具ELK:Windows与Linux皆可安装

文章插图
 
运行elasticsearch容器:
docker run -d --name elasticsearch --net yunweichongzi -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.9.3
运维日志分析工具ELK:Windows与Linux皆可安装

文章插图
 
浏览器或者用curl访问IP+9200端口,出现如下图的提示代表elasticsearch安装成功 。
运维日志分析工具ELK:Windows与Linux皆可安装

文章插图
 
2.安装Kibana
同样拉取kibana镜像,注意一定要和elasticsearch的版本一致 。
docker pull kibana:7.9.3
运维日志分析工具ELK:Windows与Linux皆可安装

文章插图
 
运行kibana容器 。
docker run -d --name kibana --net yunweichongzi -p 5601:5601 kibana:7.9.3通过浏览器访问ip+5601,访问到下面的页面代表安装成功 。
运维日志分析工具ELK:Windows与Linux皆可安装

文章插图
 
3.安装Logstash
拉取同版本的镜像
docker pull logstash:7.9.3创建两个文件一个是logstash.yml,另一个是test.conf
【运维日志分析工具ELK:Windows与Linux皆可安装】cat logstash.yml path.config: /usr/share/logstash/conf.d/*.confpath.logs: /var/log/logstashcat conf.d/test.conf input {beats {port => 5044codec => "json"}}output {elasticsearch { hosts => ["172.18.0.2:9200"] }stdout { codec => rubydebug }}


    推荐阅读