日志分析系统ELK(下)之kibana数据可视化
- 1、什么是kibana?
- 2、kibana安装
- 3、创建可视化访问量的指标
- 4、创建可视化访问量的垂直条形图
- 5、启用xpack安全验证
- (1)设置es集群
- (2)设置kibana
- (3)设置Logstash
- (4)设置elasticsearch-head
- 6、metricbeat轻量级采集工具
- 7、kibana控制台
- 8、补充
- (1)冷热分离
- (2)搜索速度优化
接上篇,server3、server4、server5,是Elasticsearch集群。server6是logstash。本文学习kibana
1、什么是kibana?
kibana主要从es里面加载数据然后展示数据。Kibana 核心产品搭载了一批经典功能:柱状图、线状图、饼图、旭日图,等等
还可以将地理数据融入任何地图
Kibana 开发工具为开发人员提供了多种强大方法来帮助其与 Elastic Stack 进行交互
总之kibana的功能非常强大。当然了这也就意味着比较吃内存
2、kibana安装
官网https://elasticsearch.cn/download/下载rpm包,注意ELK版本要都一致
由于开启虚拟机数量太多了,本文kibana安装在了server6,和logstash是同一台虚拟机
安装kibana,进入/etc/kibana,修改配置文件
指定端口kibana的开放端口为5601,kibana主机ip为172.25.77.6
指定es集群的主机ip,指定kibana的索引
设置为中文
开启kibana,开放了5601端口
网页访问http://172.25.77.6:5601
,进入kibana
先添加样例数据,看看效果
查看
各种各样的图,功能强大
当然es也相应的产生了几个新的索引
3、创建可视化访问量的指标
接下来我们创建一个索引,查看之前的存在es中的apache的日志数据
管理 -> 索引模式 -> 创建索引模式
选择apachelog-这个索引 -> 下一步
选择时间戳 -> 创建索引模式,现在就创建了一个和apache的日志相关联的索引了
可视化 -> 创建可视化
选择可视化类型为指标
选择索引apachelog-
可以看到访问次数为4,之前确实测试访问了四次。这里要注意时间范围的选择,默认是过去15分钟的数据,那样肯定看不到访问的次数
保存
执行grok.conf文件,即运行logstash,才能采集数据,输入给es
真机压力测试,总共访问100次172.25.77.6/index.html
,并发数为1
可以看到kibana变为了104,如果没变,点击右上角的refresh刷新
同理server3也可以压力测试
可以看到kibana变为了304次
4、创建可视化访问量的垂直条形图
可视化 -> 创建可视化
垂直条形图
选择索引
Y轴是访问的次数,默认没有X轴,添加X轴
选择词来定义,使用客户ip作为X轴,降序排列,看最高的前五名,执行
可以看到条形图,可以看到server3访问了200次,这几访问了104次
保存
上面两个图能放在一起分析吗?可以的
仪表板 -> 添加
添加websit和top5
放在一起了,公司中可以把该界面投到一个大电视上,实时监控数据信息
保存
server4也压力测试
实时数据监测
5、启用xpack安全验证
目前部署的ELK三个软件端口都是开放的,任何人都能访问,没有任何安全保障,容易受到攻击,比如日志索引被删除等恶意行为,所以使用 xpack安全组件来保护ELK,这样es都是内部运行的,不暴露外网,更安全。
(1)设置es集群
先配置传输层,使es集群可以通信
server3进入/usr/share/elasticsearch/,使用elasticsearch-certutil工具生成ca,密码可以空,方便使用
server3使用ca创建证书elastic-stack-ca.p12
密码可以为空,直接回车
把证书复制到elasticsearch的配置目录,文件拥有者改为 elasticsearch,以便elasticsearch可以使用证书,或者直接改权限大小也行。
修改elasticsearch的主配置文件
添加五句话,开启xpack安全验证
server3拷贝证书到集群中的其它节点server4和server5
server4把文件拥有者改为 elasticsearch,修改elasticsearch的主配置文件
server4添加五句话,开启xpack安全验证
server5把文件拥有者改为 elasticsearch,修改elasticsearch的主配置文件
server5添加五句话,开启xpack安全验证
server3重启elasticsearch
server4重启elasticsearch
server5重启elasticsearch
查看9200端口正常启动,es集群正常
ES集群重启正常后,server3交互式设置用户密码全部为westos
(2)设置kibana
server6进入/etc/kibana,修改主配置文件。添加访问es集群的用户和密码
重启kibana,5601端口正常
重新登陆kibana
正常了
(3)设置Logstash
server6采集数据时的文件grok.conf需要添加用户名和密码才可以运行
执行grok.conf文件,开始采集
看到kibana显示访问次数为404
server3压力测试100次
看到kibana显示访问次数为504,没问题,正常了
(4)设置elasticsearch-head
现在elasticsearch-head登陆不了了
进入server3的/etc/elasticsearch
目录,修改主配置文件,允许head认证后访问
重启elasticsearch
现在访问head不能只写ip和端口了,还需要加认证信息,http://172.25.77.3:9100/?auth_user=elastic&auth_password=westos
6、metricbeat轻量级采集工具
logstash是负责采集数据的,是入口,流向为logstash-> ES->kibana
,但是它的资源消耗很大,有时候没那么多内存给他占用,同时有些定制的采集指标logstash无法满足。所以我们想使用轻量级的采集工具metricbeat来实现采集,流向为metricbeat-> ES->kibana
,可以获取系统级的 CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据,还可针对系统上的每个进程获得与 top 命令类似的统计数据。同时Metricbeat 提供多种内部模块,用于从服务中收集指标,例如 Apache、NGINX、MongoDB、MySQL、PostgreSQL、Prometheus、Redis 等等。
进入kibana,集群 -> 使用metricbeat
点击使用metricbeat,现在是红色的,还不可用,输入监测集群URLhttp://172.25.77.3:9200
,会出现提示操作
官方下载metricbeat安装包,给server3、server4、server5
server3安装metricbeat
server4安装metricbeat
server5安装metricbeat
server3激活elasticsearch-xpack模块,进入/etc/metricbeat/modules.d查看全部模块,可以看到很多文件后面带个disable表示未激活,elasticsearch-xpack已被激活,其实激活命令本质上就是改文件的名字,编辑elasticsearch-xpack.yml文件
由于开启了xpack,需要添加用户名和密码
server4激活elasticsearch-xpack模块,编辑elasticsearch-xpack.yml文件
添加用户名和密码
server5激活elasticsearch-xpack模块,编辑elasticsearch-xpack.yml文件
添加用户名和密码
返回上一层,server3修改metricbeat主配置文件
设置es的ip(集群中任意一个都可以),添加用户名和密码
server3重启metricbeat
返回上一层,server4修改metricbeat主配置文件
设置es集群ip,添加用户名和密码
server4重启metricbeat
返回上一层,server5修改metricbeat主配置文件
设置es集群ip,添加用户名和密码
server5重启metricbeat
根据提示操作完,kibana这里会显示成功
稍等片刻,es集群的三个节点都是蓝色了,成功开启
随便点击一个节点,这里查看server5的数据
类似的轻量级采集的base还有很多,比如filebeat等等,这里不再赘述,感兴趣的同学自行查阅文档。
filebeat的数据流向为filebeat->logstash-> ES->kibana
,组合使用,假如流量很大,为了确保数据不丢失,可以加入中间件kafaka或者redis,实现消息队列,即filebeat->logstash->kafaka-> ES->kibana
7、kibana控制台
控制台插件提供一个用户界面来和 Elasticsearch 的 REST API 交互。控制台有两个主要部分: editor ,用来编写提交给 Elasticsearch 的请求; response 面板,用来展示请求结果的响应。
由于我们开启了xpack,想要输入命令时还需要用户密码,这里还有一个更加方便的方法,使用kibana的控制台,可以直接输入命令,还不用用户密码,因为登陆kibana时已经输入过了。控制台实际还是后台调用了API,找es执行,再返回给kibana展示。
下图进行简单测试,输入了健康查询语句,可以看到节点的健康状况。
当敲入一行命令,控制台会给出上下文相关的提示。这些提示可以帮助您探索每条 API 参数,或者用于提高输入速度。控制台会提示 APIs 、索引和字段名。
一旦您在左边的面板中敲入命令,您可以点击 URL 行边上的绿色小三角提交这条请求到 Elasticsearch。注意,当您移动光标的时候,会有一个小三角和扳手图标跟随着您。我们把这个叫做动作菜单。您也可以选择写多条请求并一起提交它们。
当请求响应后,您可以在侧面的面板中看到它
8、补充
(1)冷热分离
注意ELK是实时监测数据的,虽然有数据库的功能,但是完全和数据库不一样,实时监测非常消耗资源,如果只当数据库,纯属大材小用。
一般要把数据冷热分离,刚刚采集到数据可以理解为热数据(hot),实时写入ELK分析;过一段时间,数据变为温数据(warm),可以用来查询,不再写入;再过一段时间变为冷数据(cold),查询也很少了,我们可以考虑把他放到数据库中存储,或者从硬件方面来说,从高性能的节点存储换为普通性能的节点,把高性能的节点留给热数据;再过很久,会删除数据。
想要实现上面的冷热分离,进行生命周期管理,必须有
1、节点标签。区分冷热节点
2、生命周期策略。定义热阶段的大小,最长时间,存在时长等等
3、索引模板引用索引模板策略。模板创建索引,加载生命周期策略
4、索引模板指定调度节点。将新建索引分片分配到热节点
(2)搜索速度优化
为了提高es搜索速度,可以考虑下面几种方法:
1、为文件系统cache留有足够内存,内存越大,速度越快
2、提升i/o,使用固态硬盘
3、减少层层嵌套