接着上篇博客的内容,vm1,2,3是es集群,vm4时logstash,本文讲解kibana
1 .kibana简介
Kibana 核心产品搭载了一批经典功能:柱状图、线状图、饼图、旭日图,等等。
将地理数据融入任何地图
精选的时序性 UI,对您Elasticsearch 中的数据执行高级时间序列分析。
利用 Graph 功能分析数据间的关系
Kibana 开发工具为开发人员提供了多种强大方法来帮助其与 Elastic Stack 进行交互。
总之kibana的功能十分强大,但是也十分消耗内存
2. kibana安装与配置
官网https://elasticsearch.cn/download/ 注意ELK版本要都一致
我将kibana安装在vm4上,和logstash一台虚拟机,然后修改其配置文件
开放kibana的端口5601,指定服务的IP地址
指定es的主机IP,开启kibana的索引
查看端口,稍等一会 5601开启
访问vm4IP地址:172.25.10.14:5601 进入kibana 页面
添加示例网络日志数据 查看效果如何
查看数据
有很多数据图
es也产生了一些索引
3、创建可视化访问量的指标
我们创建一个索引,查看之前的存在es中的apache的日志数据
管理 -> 索引模式 -> 创建索引模式
使用这个索引
选择时间戳然后创建
创建可视化
选择这个
选择apachelog,可以看到访问次数,需要注意的是右上角的时间
执行grok.conf文件,即运行logstash,才能采集数据,输入给es
在真机进行压力测试,访问172.25.10.14/index.html400次,并发数为1(我执行了四次)
点击右上角刷新,增加了400次
同理在其他主机上也可以如此
保存
4、创建可视化访问量的垂直条形图
创建可视化选择垂直条形图选择apachelog
Y轴是访问的次数,默认没有X轴,添加X轴
可以看到不同服务器访问的次数,物理机访问了400次,虚拟机vm1访问了100次
点击左上角保存
将之前的两个图放在一起分析在仪表盘里创建
添加website和top 5
保存
在vm2上也进行压力测试
可以看到数据实时变更
5 . 启用xpack安全验证
目前部署的ELK三个软件端口都是开放的,任何人都能访问,没有任何安全保障,容易受到攻击,比如日志索引被删除等恶意行为,所以使用 xpack安全组件来保护ELK,这样es都是内部运行的,不暴露外网,更安全。
但是在公司内部一般都使用内网,不会使用外网。
(1)设置es集群
先配置传输层,使es集群可以通信
vm1进入/usr/share/elasticsearch/,使用elasticsearch-certutil工具生成ca,密码可以空,方便之后使用
vm1使用ca创建证书elastic-stack-ca.p12
密码都为空
把证书复制到elasticsearch的配置目录,文件拥有者改为 elasticsearch,以便elasticsearch可以使用证书
修改elasticsearch的主配置文件,添加xpack安全认证语句
将证书拷贝到其他节点
然后对每个节点重复对vm1的操作
修改证书拥有者,添加认证语句
重启三个节点的es
systemctl restart elasticsearch.service
查看9200端口
集群重启正常后,vm1交互式设置用户密码全部为westos
(2)设置kibana
在vm4上修改kibana配置文件
重启后查看5601端口正常
网页刷新kibana,账号elastic密码westos登录
进入设置模式没有报错了
(3)设置Logstash
现在用logstash往es中无法写入数据了
vm4采集数据时 文件grok.conf需要添加用户名和密码才可以运行
执行,开始采集
[root@vm4 conf.d]# /usr/share/logstash/bin/logstash -f grok.conf
在kibana中可视化中看到访问次数
在vm1上压力测试100次
[root@vm1 bin]# ab -n 100 -c1 http://172.25.10.14/index.html
增加100次
(4)设置elasticsearch-head
现在es-head无法登录
vm1修改es主配置文件,允许head认证后访问
重启服务
现在要访问es-head不能之输入IP加端口号了 还要添加认证信息http://172.25.10.11: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.10.11:9200,会出现提示操作
点击下一个可以看到
官方下载metricbeat安装包,给vm1,vm2,vm3
三个节点安装metricbeat
vm1激活elasticsearch-xpack模块
进入/etc/metricbeat/modules.d查看全部模块,可以看到很多文件后面带个disable表示未激活
使用这个命令激活elasticsearch-xpack,其实激活命令本质上就是改文件的名字
metricbeat modules enable elasticsearch-xpack
现在来编辑这个elasticsearch-xpack.yml文件
由于我们激活了xpack,所以需要添加账号密码
其他节点也这样操作
然后返回上一层,修改其主配置文件
设置esIP和账号密码
重启服务开机自启
其他节点也这样操作
操作完成后,kibana界面会显示成功
禁用内部收集,所有节点都是蓝色,成功开启监测
进入vm1查看数据
7、kibana控制台
由于我们开启了xpack,想要输入命令时还需要用户密码,这里还有一个更加方便的方法,使用kibana的控制台,可以直接输入命令,还不用用户密码,因为登陆kibana时已经输入过了。控制台实际还是后台调用了API,找es执行,再返回给kibana展示。
下图进行简单测试,输入了健康查询语句,可以看到节点的健康状况。
8、补充
(1)冷热分离
ELK是实时监测数据的,虽然有数据库的功能,但是完全和数据库不一样,实时监测非常消耗资源,如果只当数据库,纯属大材小用。
一般要把数据冷热分离,刚刚采集到数据可以理解为热数据(hot),实时写入ELK分析;过一段时间,数据变为温数据(warm),可以用来查询,不再写入;再过一段时间变为冷数据(cold),查询也很少了,我们可以考虑把他放到数据库中存储,或者从硬件方面来说,从高性能的节点存储换为普通性能的节点,把高性能的节点留给热数据;再过很久,会删除数据。
想要实现上面的冷热分离,进行生命周期管理,必须有
1、节点标签。区分冷热节点
2、生命周期策略。定义热阶段的大小,最长时间,存在时长等等
3、索引模板引用索引模板策略。模板创建索引,加载生命周期策略
4、索引模板指定调度节点。将新建索引分片分配到热节点
(2)搜索速度优化
为了提高es搜索速度,可以考虑下面几种方法:
1、为文件系统cache留有足够内存,内存越大,速度越快
2、提升i/o,使用固态硬盘
3、减少层层嵌套