接着上篇博客的内容,vm1,2,3是es集群,vm4时logstash,本文讲解kibana

1 .kibana简介

Kibana 核心产品搭载了一批经典功能:柱状图、线状图、饼图、旭日图,等等。

kibana监控filebeat是否在线_运维


将地理数据融入任何地图

kibana监控filebeat是否在线_kibana_02


精选的时序性 UI,对您Elasticsearch 中的数据执行高级时间序列分析。

kibana监控filebeat是否在线_xpack_03


利用 Graph 功能分析数据间的关系

kibana监控filebeat是否在线_kibana_04


Kibana 开发工具为开发人员提供了多种强大方法来帮助其与 Elastic Stack 进行交互。

kibana监控filebeat是否在线_elk_05

总之kibana的功能十分强大,但是也十分消耗内存

2. kibana安装与配置

官网https://elasticsearch.cn/download/ 注意ELK版本要都一致

我将kibana安装在vm4上,和logstash一台虚拟机,然后修改其配置文件

kibana监控filebeat是否在线_xpack_06

开放kibana的端口5601,指定服务的IP地址

kibana监控filebeat是否在线_xpack_07


指定es的主机IP,开启kibana的索引

kibana监控filebeat是否在线_elasticsearch_08


查看端口,稍等一会 5601开启

kibana监控filebeat是否在线_kibana_09


访问vm4IP地址:172.25.10.14:5601 进入kibana 页面

kibana监控filebeat是否在线_elk_10


添加示例网络日志数据 查看效果如何

kibana监控filebeat是否在线_kibana_11


查看数据

kibana监控filebeat是否在线_elk_12


有很多数据图

kibana监控filebeat是否在线_kibana_13


es也产生了一些索引

kibana监控filebeat是否在线_elk_14

3、创建可视化访问量的指标

我们创建一个索引,查看之前的存在es中的apache的日志数据
管理 -> 索引模式 -> 创建索引模式

kibana监控filebeat是否在线_运维_15


使用这个索引

kibana监控filebeat是否在线_kibana_16

选择时间戳然后创建

kibana监控filebeat是否在线_xpack_17


创建可视化

kibana监控filebeat是否在线_elk_18

选择这个

kibana监控filebeat是否在线_kibana_19


选择apachelog,可以看到访问次数,需要注意的是右上角的时间

kibana监控filebeat是否在线_运维_20

执行grok.conf文件,即运行logstash,才能采集数据,输入给es

kibana监控filebeat是否在线_elk_21

在真机进行压力测试,访问172.25.10.14/index.html400次,并发数为1(我执行了四次)

kibana监控filebeat是否在线_elk_22


点击右上角刷新,增加了400次

kibana监控filebeat是否在线_运维_23

同理在其他主机上也可以如此

kibana监控filebeat是否在线_xpack_24

kibana监控filebeat是否在线_elasticsearch_25


保存

kibana监控filebeat是否在线_elasticsearch_26

4、创建可视化访问量的垂直条形图

创建可视化选择垂直条形图选择apachelog

kibana监控filebeat是否在线_elasticsearch_27


Y轴是访问的次数,默认没有X轴,添加X轴

kibana监控filebeat是否在线_xpack_28


kibana监控filebeat是否在线_运维_29

可以看到不同服务器访问的次数,物理机访问了400次,虚拟机vm1访问了100次

kibana监控filebeat是否在线_kibana_30


点击左上角保存

kibana监控filebeat是否在线_elasticsearch_31


将之前的两个图放在一起分析在仪表盘里创建

kibana监控filebeat是否在线_elk_32


添加website和top 5

kibana监控filebeat是否在线_elk_33


保存

kibana监控filebeat是否在线_运维_34


在vm2上也进行压力测试

kibana监控filebeat是否在线_xpack_35


可以看到数据实时变更

kibana监控filebeat是否在线_elk_36

5 . 启用xpack安全验证

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

(1)设置es集群

先配置传输层,使es集群可以通信
vm1进入/usr/share/elasticsearch/,使用elasticsearch-certutil工具生成ca,密码可以空,方便之后使用

kibana监控filebeat是否在线_elk_37


vm1使用ca创建证书elastic-stack-ca.p12

kibana监控filebeat是否在线_运维_38


密码都为空

kibana监控filebeat是否在线_elasticsearch_39

把证书复制到elasticsearch的配置目录,文件拥有者改为 elasticsearch,以便elasticsearch可以使用证书

kibana监控filebeat是否在线_elk_40


修改elasticsearch的主配置文件,添加xpack安全认证语句

kibana监控filebeat是否在线_elasticsearch_41


将证书拷贝到其他节点

kibana监控filebeat是否在线_运维_42

然后对每个节点重复对vm1的操作

修改证书拥有者,添加认证语句

重启三个节点的es

systemctl restart elasticsearch.service

查看9200端口

kibana监控filebeat是否在线_elasticsearch_43

集群重启正常后,vm1交互式设置用户密码全部为westos

kibana监控filebeat是否在线_elk_44

(2)设置kibana

在vm4上修改kibana配置文件

kibana监控filebeat是否在线_elk_45

重启后查看5601端口正常

kibana监控filebeat是否在线_elk_46

网页刷新kibana,账号elastic密码westos登录

kibana监控filebeat是否在线_xpack_47


进入设置模式没有报错了

kibana监控filebeat是否在线_xpack_48

(3)设置Logstash

现在用logstash往es中无法写入数据了

vm4采集数据时 文件grok.conf需要添加用户名和密码才可以运行

kibana监控filebeat是否在线_elk_49

执行,开始采集

[root@vm4 conf.d]# /usr/share/logstash/bin/logstash -f grok.conf

在kibana中可视化中看到访问次数

kibana监控filebeat是否在线_xpack_50

在vm1上压力测试100次

[root@vm1 bin]# ab -n 100 -c1 http://172.25.10.14/index.html

增加100次

kibana监控filebeat是否在线_elasticsearch_51

(4)设置elasticsearch-head

现在es-head无法登录

kibana监控filebeat是否在线_elasticsearch_52

vm1修改es主配置文件,允许head认证后访问

kibana监控filebeat是否在线_kibana_53

重启服务

kibana监控filebeat是否在线_xpack_54


现在要访问es-head不能之输入IP加端口号了 还要添加认证信息http://172.25.10.11:9100/?auth_user=elastic&auth_password=westos,具体如图所示

kibana监控filebeat是否在线_kibana_55

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设置检测

kibana监控filebeat是否在线_kibana_56


点击使用metricbeat,现在是红色的,还不可用,输入监测集群URLhttp://172.25.10.11:9200,会出现提示操作

kibana监控filebeat是否在线_运维_57


点击下一个可以看到

kibana监控filebeat是否在线_kibana_58


官方下载metricbeat安装包,给vm1,vm2,vm3

kibana监控filebeat是否在线_elasticsearch_59

三个节点安装metricbeat

kibana监控filebeat是否在线_运维_60

vm1激活elasticsearch-xpack模块

进入/etc/metricbeat/modules.d查看全部模块,可以看到很多文件后面带个disable表示未激活

kibana监控filebeat是否在线_elasticsearch_61

使用这个命令激活elasticsearch-xpack,其实激活命令本质上就是改文件的名字

metricbeat modules enable elasticsearch-xpack

kibana监控filebeat是否在线_kibana_62

现在来编辑这个elasticsearch-xpack.yml文件

由于我们激活了xpack,所以需要添加账号密码

kibana监控filebeat是否在线_运维_63


其他节点也这样操作

然后返回上一层,修改其主配置文件

kibana监控filebeat是否在线_运维_64


设置esIP和账号密码

kibana监控filebeat是否在线_elk_65


重启服务开机自启

kibana监控filebeat是否在线_elasticsearch_66


其他节点也这样操作

操作完成后,kibana界面会显示成功

kibana监控filebeat是否在线_xpack_67


禁用内部收集,所有节点都是蓝色,成功开启监测

kibana监控filebeat是否在线_运维_68


进入vm1查看数据

kibana监控filebeat是否在线_xpack_69

7、kibana控制台

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

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

kibana监控filebeat是否在线_kibana_70

8、补充

(1)冷热分离

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

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

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

(2)搜索速度优化

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