日志分析系统ELK之Kibanaes的替代metricbeat

Posted Tuki_a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志分析系统ELK之Kibanaes的替代metricbeat相关的知识,希望对你有一定的参考价值。

Kibana

Kibana简介

Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Kibana 核心产品搭载了一批经典功能:柱状图、线状图、饼图、旭日图,等等。可以将地理数据融入任何地图;精选的时序性 UI,对Elasticsearch 中的数据执行高级时间序列分析;利用 Graph 功能分析数据间的关系;Kibana 开发工具为开发人员提供了多种强大方法来帮助其与 Elastic Stack 进行交互。

Kibana7.6指南:https://www.elastic.co/guide/en/kibana/7.6/index.html

怎么将数据导入kibana

要开始在 Kibana 中处理数据,可以:
1、使用文件数据可视化工具上传 CSV、JSON 或日志文件。
2、使用 GeoJSON 上传功能上传地理空间数据。
3、通过设置 Beats 模块索引日志、指标、事件或应用程序数据。
4、将 Kibana 与现有的 Elasticsearch 索引连接起来。

Kibana 使用索引模式来告诉它要探索哪些 Elasticsearch 索引。如果添加示例数据或运行内置教程,将免费获得一个索引模式,并且很好地开始探索。如果加载自己的数据,则可以在Management 中创建索引模式。

演示环境

es、logstash和kibana都是7.6.1版本

es集群:
server1		192.168.122.11
server2		192.168.122.12

logstash和kibana部署在一台虚拟机上:
server3		192.168.122.13

kibana安装与配置

kibana下载:https://elasticsearch.cn/download/
#注意版本要与es和logstash版本一致

[root@server3 ~]# rpm -ivh kibana-7.6.1-x86_64.rpm
[root@server3 ~]# cd /etc/kibana/
[root@server3 kibana]# ls
apm.js  kibana.yml
[root@server3 kibana]# vim kibana.yml 

设置服务端口和服务监听地址(都是本机的)

设置ES集群地址、kibana在ES中创建的索引

设置中文

开启服务,端口正常开启

到浏览器访问部署kibana端的5601端口,访问成功,进入如下界面

可以添加官方准备好的模板

查看dashborad

官方的模板做的很成熟很漂亮,这时去es端查看会看到相应的索引已经建立

可视化现有 Elasticsearch 索引中的数据

创建索引

创建一个索引,查看之前的存在es中的apache的日志数据,按下图步骤操作即可
将es中的apache的索引筛选出来
选择时间戳 -> 创建索引模式,现在就创建了一个和apache的日志相关联的索引了
选择索引apachelog-

创建可视化仪表盘图

按下图操作
选择创建仪表盘,这儿自己想创建其他的都可以,只不过是数据的表现形式不同罢了

选择索引apachelog-*
可以看到访问次数为124。这里要注意时间范围的选择,默认是过去15分钟的数据,调整为查看今天的数据

保存该可视化
取个名字直接保存

创建可视化垂直条形图

和上面的操作同理
选择垂直条形图

选择索引
条形图的Y轴是访问的次数,默认没有X轴,添加X轴

选择词来定义,使用客户ip作为X轴,降序排列,看最高的前五名,应用更改

可以看到条形图,被不同的主机访问过的次数(提前在不同主机访问kibana主机的apache,做了压测)
保存可视化图

创建仪表板

创建一个仪表板将上面保存的不同的图放到一起对比显示
添加websit和top5(前面保存的图)

如此便将不同的数据视图放在一起了,该界面可以全屏显示,展示数据信息时很方便

我们在不同的主机访问目标主机的apache再产生点数据

[root@server2 ~]# ab -n 122 -c1 http://192.168.122.13/index.html	#有ab压测工具的可以使用该命令
[root@server2 ~]# for i in 1..77;do curl 192.168.122.13;done		#没有ab工具的也可以用循环来进行大量访问

刷新可以看到数据的变化

启用xpack安全验证

目前部署的ELK三个软件端口都是开放的,任何人都能访问,没有任何安全保障,容易受到攻击,比如日志索引被删除等恶意行为,所以使用 xpack安全组件来保护ELK,这样es都是内部运行的,不暴露外网,更安全。

按下图操作查看es集群内部状态
点击右上角的进入设置模式
会不停的报错,因为我们没有开启xpack安全验证

es集群端设置

开启xpack安全验证。集群模式需要先创建证书。先配置传输层,使es集群可以通信

# cd /usr/share/elasticsearch/		
# bin/elasticsearch-certutil ca			#使用elasticsearch-certutil工具生成ca,密码可以空,方便使用
# bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12		#使用ca创建证书elastic-stack-ca.p12,密码可以为空,直接回车
# cp elastic-certificates.p12 elastic-stack-ca.p12 /etc/elasticsearch		#把证书复制到elasticsearch的配置目录
# cd /etc/elasticsearch
# chown elasticsearch elastic-certificates.p12 elastic-stack-ca.p12		#文件拥有者改为 elasticsearch,以便elasticsearch可以使用证书,或者直接改权限大小也行

修改elasticsearch的主配置文件,添加五句话,开启xpack安全验证,重新启动elasticsearch服务

[root@server1 elasticsearch]# vim /etc/elasticsearch/elasticsearch.yml

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/elastic-certificates.p12

[root@server1 elasticsearch]# systemctl restart elasticsearch.service


拷贝证书到集群中的其它节点server2,做同server1一样的修改;开启xpack安全验证,重新启动elasticsearch服务

[root@server2 elasticsearch]# chown elasticsearch elastic-certificates.p12	#文件拥有者改为 elasticsearch
[root@server2 elasticsearch]# vim /etc/elasticsearch/elasticsearch.yml		#修改elasticsearch的主配置文件
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/elastic-certificates.p12

[root@server2 elasticsearch]# systemctl restart elasticsearch.service 

ES集群重启正常后,设置用户密码

[root@server1 bin]# pwd
/usr/share/elasticsearch/bin
[root@server1 bin]# ./elasticsearch-setup-passwords interactive
#交互式设置用户密码全部为elastic

kibana端设置

这时访问kibana已经需要用户名密码了

登录进去会发现kibana状态为红即没有正常运行

所以设置kibana,修改主配置文件。添加访问es集群的用户和密码,然后重启kibana

[root@server3 conf.d]# cd /etc/kibana/
[root@server3 kibana]# vim kibana.yml 
[root@server3 kibana]# systemctl restart kibana.service 


服务正常开启
重新以elastic用户身份登陆kibana已正常,退出设置模式

logstash端设置

server3采集本机apache的数据时需要添加用户名和密码才可以正常运行采集

[root@server3 conf.d]# pwd
/etc/logstash/conf.d
[root@server3 conf.d]# vim grank.conf 

input 
        file 
                path => "/var/log/httpd/access_log"
                start_position => "beginning"
        



filter 
        grok 
        match =>  "message" => "%HTTPD_COMBINEDLOG" 
        


output 
        stdout 

        elasticsearch 
                hosts => ["192.168.122.11:9200"]
                index => "apachelog-%+yyyy.MM.dd"
                user => "elastic"			#添加用户名
                password => "elastic"		#添加密码

        


运行 Logstash 并加载grok.conf文件中定义的 Logstash 配置

# /usr/share/logstash/bin/logstash -f grok.conf

在其他主机进行压测访问apache产生日志

到kibana端查看数据上传成功,证明logstash采集成功

elasticsearch-head的设置

现在返回elasticsearch-head,会发现访问失败
进入server1的/etc/elasticsearch目录,修改主配置文件,允许head认证并重启服务

[root@server1 bin]# cd /etc/elasticsearch/
[root@server1 elasticsearch]# vim elasticsearch.yml 
[root@server1 elasticsearch]# systemctl restart elasticsearch.service 


在浏览器加上验证后缀访问成功

http://192.168.122.11:9100/?auth_user=elastic&auth_password=elastic

metricbeat轻量级采集工具

logstash是负责采集数据的,是入口,流向为logstash-> ES->kibana,但是它的资源消耗很大,有时候没那么多内存给他占用,同时有些定制的采集指标logstash无法满足。所以我们想使用轻量级的采集工具metricbeat来实现采集,流向为metricbeat-> ES->kibana,可以获取系统级的 CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据,还可针对系统上的每个进程获得与 top 命令类似的统计数据。同时Metricbeat 提供多种内部模块,用于从服务中收集指标,例如 Apache、nginx、MongoDB、mysql、PostgreSQL、Prometheus、Redis 等等。

点击使用metricbeat,现在是红色的,还不可用

输入监测集群URL:http://192.168.122.11:9200,会出现提示操作,按照提示操作即可

官方下载metricbeat安装包给server1、server2安装,并都给server1和server2(即es集群内的所有主机)进行以下步骤

[root@server1 ~]# rpm -ivh metricbeat-7.6.1-x86_64.rpm 
[root@server1 ~]# metricbeat modules enable elasticsearch-xpack		#激活elasticsearch-xpack模块
[root@server1 modules.d]# cd /etc/metricbeat/modules.d
[root@server1 modules.d]# vim elasticsearch-xpack.yml

进入/etc/metricbeat/modules.d查看全部模块,可以看到很多文件后面带disable表示未激活,elasticsearch-xpack已被激活,其实激活命令本质上就是改文件的名字,编辑elasticsearch-xpack.yml文件
由于开启了xpack,需要添加用户名和密码

修改metricbeat主配置文件

[root@server1 modules.d]# cd ..
[root@server1 metricbeat]# ls
fields.yml  metricbeat.reference.yml  metricbeat.yml  modules.d
[root@server1 metricbeat]# vim metricbeat.yml 
[root@server1 metricbeat]# systemctl enable --now metricbeat.service 

设置es集群ip,添加用户名和密码,重启metricbeat

此时到kibana查看会发现迁移状态已经自动捕捉到,点击完成即可
server2按上面相同步骤完成后也同样成功迁移

此时按照提示再点击禁用内部收集即可完成迁移

es集群的三个节点都是蓝色了,成功开启
随便点击一个节点,这里查看server1的数据,可以看到节点内存、CPU等状态

类似的轻量级采集的base还有很多,比如filebeat等等,这里不再赘述,感兴趣的同学自行查阅文档。
filebeat的数据流向为filebeat->logstash-> ES->kibana,组合使用,假如流量很大,为了确保数据不丢失,可以加入中间件kafaka或者redis,实现消息队列,即filebeat->logstash->kafaka-> ES->kibana

kibana控制台

控制台插件提供一个用户界面来和 Elasticsearch 的 REST API(REST就是一种设计API的模式) 交互。控制台有两个主要部分: editor ,用来编写提交给 Elasticsearch 的请求; response 面板,用来展示请求结果的响应。

由于我们开启了xpack,想要输入命令时还需要用户密码,这里还有一个更加方便的方法,使用kibana的控制台,可以直接输入命令,还不用用户密码,因为登陆kibana时已经输入过了。控制台实际还是后台调用了API,找es执行,再返回给kibana展示。

简单测试,输入了健康查询语句,可以看到节点的健康状况

当敲入一行命令,控制台会给出上下文相关的提示。这些提示可以探索每条 API 参数,或者用于提高输入速度。控制台会提示 APIs 、索引和字段名。

一旦在左边的面板中敲入命令,可以点击 URL 行边上的绿色小三角提交这条请求到 Elasticsearch。注意,当移动光标的时候,会有一个小三角和扳手图标跟随着。我们把这个叫做动作菜单。也可以选择写多条请求并一起提交它们。

ELK优化

数据冷热分离

注意ELK是实时监测数据的,虽然有数据库的功能,但是完全和数据库不一样,实时监测非常消耗资源,如果只当数据库,纯属大材小用。

一般要把数据冷热分离,刚刚采集到数据可以理解为热数据(hot),实时写入ELK分析;过一段时间,数据变为温数据(warm),可以用来查询,不再写入;再过一段时间变为冷数据(cold),查询也很少了,我们可以考虑把他放到数据库中存储,或者从硬件方面来说,从高性能的节点存储换为普通性能的节点,把高性能的节点留给热数据;再过很久,会删除数据。

  • 想要实现上面的冷热分离,进行生命周期管理,必须有
    1、节点标签。区分冷热节点
    2、生命周期策略。定义热阶段的大小,最长时间,存在时长等等
    3、索引模板引用索引模板策略。模板创建索引,加载生命周期策略
    4、索引模板指定调度节点。将新建索引分片分配到热节点

搜索速度优化

为了提高es搜索速度,可以考虑下面几种方法:
1、为文件系统cache留有足够内存,内存越大,速度越快
2、提升i/o,使用固态硬盘
3、减少层层嵌套

以上是关于日志分析系统ELK之Kibanaes的替代metricbeat的主要内容,如果未能解决你的问题,请参考以下文章

ELK日志分析系统搭建配置

日志分析系统ELK之Logstash

日志分析系统ELK之Logstash

运维实操——日志分析系统ELK(上)之elasticsearch

日志分析系统ELK之Elasticsearch

日志分析系统ELK之Elasticsearch