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日志,完成后即可进行设置想要监控的内容