ELK(Elasticsearch、Logstash、Kibana)

  • 一、ELK三大组件介绍

  • Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。

  • Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。

  • Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。


二、elasticsearch安装部署

单机版:


修改配置文件

编辑集群名称、主机名

锁定物理内存地址,防止elasticsearch内存被交换出去,也就是避免es使用swap交换分区

绑定ip打开端口

但此时启动服务是失败的,需要java环境

安装java环境后,启动需要解决日志报错,在/etc/security/limits.conf解除限制条件


完成后可以正常启动,网页查看如下图

安装head 插件,它是一个用浏览器跟 ES 集群交互的插件,可以查看集群状态、集群的 doc 内容、执行搜索和普通的 Rest 请求。

ip:9200/_plugin/head/访问

可以写入一个请求进行测试:黄色表示分辨率丢失,我们通过加入其他主机建立集群来解决


在另外两台机器server2、server3同样安装elasticsearch和jave环境,并在三台机器做好本地解析

编辑配置文件如下:server2和server3为数据节点只存储数据,配置文件修改大致相同,这里只给出server2、server3以此类推



当启动节点时,通过这个主机名列表进行节点发现,组建集群


同样解决日志报错



server1做主节点、不存储数据

完成后重启服务,再次访问,由黄色变成绿色,绿色表示正常,分布式存储如图



生产环境中 master节点只作master  最少3个来互相竞选master

数据节点由数据量决定 客户端节点(既不是master也不存数据来做负载均衡)


调API的操作,这里只使用了GET和DELETE如果感兴趣,可以根据官方文档继续深入


三、Logstash安装部署

rpm包安装并以键值对的形式进行输入输出

编辑完成测试



再次编辑.conf文件,显示日志信息


begining表示文件从开始开始读取,并且会记录进程号,如果没有操作再次运行不会继续存储记录,知道有操作才会继续记录,要想重新开始存储删除sincedb文件才可以重新读取


将其他节点的日志同步到master节点

编辑数据节点的日志文件,完成后重启

在主节点编辑.conf文件如下图

web端查看


将多行事件变成一行,编辑.conf文件加入过滤规则,如图



按我们的想法处理数据,格式化数据,过滤数据

这里做APACHE和NGINX的数据过滤,显示我们想要的内容

在如图目录下有httpd的显示模版,这里我们可以在.conf文件里直接调用



完成后测试查看,成功过滤出我们需要的内容



NGINX相似

我们在server2来做nginx,操作如图,安装nginx并启动,安装logstash


编辑.conf文件如图,这里比apache多出的内容对比nginx的配置文件可以找到

完成后需要修改nginx日志文件的权限,让ela可以读取,完成即可执行,成功过滤出我们想要的内容



四、Kibana的安装部署

rpm包安装,并编辑配置文件,指定Kibana接收的es信息主机IP以及端口、创建Kibana的索引


kibana的默认端口是5601


创建索引内容,这里我引用的是nginx日志,完成后即可进行设置想要监控的内容