本篇博客介绍下如何在 Kibana
中制作图表,详细介绍其参数和方法。
背景
我们将 AlertManager
中产生的报警存储到了 ES 中,接下来,需要制作报警图表,以可视化的方式观察报警的数量变化。
Kibana 安装及配置
1、下载 Kibana
安装包
|
|
2、安装 kibana
|
|
3、修改 Kibana
配置,修改 /etc/kibana/kibana.yml
文件中的如下配置项:
|
|
4、启动 Kibana
|
|
图表制作
打开地址 http://10.20.13.15:5601,使用 elastic/{ES密码} 登录 Kibana,
设置和准备
1、选择 Management
,在 Kibana
中点击 Advanced Settings
,
修改 General
中的 Date format
为:
|
|
修改 General
中的 Date with nanoseconds format
为:
|
|
然后保存。
2、选择 Kibana
中的 Index Patterns
,创建索引模式,名称为:alertmanager-alerts*
,选择索引 alertmanager-alerts
,完成后续步骤。
可视化图表
饼图
先制作一个按报警名称聚合的饼图,表示各个报警在报警总数中所占的比例。选择 Visualize
,点击 Create visualization
,点击 Pie
,选择索引模式 alertmanager-alerts*
,来到图表编辑页面
在 Metrics
下的 Slice size
中选择聚合器 Count
,Count 返回所选索引模式中元素的原始计数,Custom label
中填入这个 Count
的含义,即报警总数。
点击 Add
增加一个 Bucket
(相当于 SQL
中的 group by
),类型选择 Split slices
,
聚合器选择 Terms
,Field
选择 labels.alertname.keyword
,Order by
选择 Metric:报警总数
,Order
默认即可,Size
增大到 100,打开 Group other values in separate bucket
,在 Label for other bucket
中填入 其他
,Custom label
中填入 报警名称
Options
中的参数说明如下:
- Donut:打开后显示为空心饼图,否则填充至饼图圆心。
- Legend position:图例显示的位置,默认显示在右上方
- Show tooltip:是否显示工具提示,如果显示,当鼠标放到扇形上时,会显示该部分的数据
- Show labels:是否显示标签,在此处对应于各报警的名称
- Show values:是否显示值,在此处对应于各报警所占百分比是否显示在标签后面的括号中。
最后的饼图为:
可以看到,在所有的报警中,各报警所占的比例。
保存该图标,命名为:各报警统计
线图
或许还想观察各个报警的总数随时间的变化情况,此时,我们可以制作一个折线图,选择 Visualize
,点击 Create visualization
,点击 Line
,选择索引模式 alertmanager-alerts*
,来到图表编辑页面
在 Metrics
下的 Slice size
中选择聚合器 Count
,Custom label
中填入 报警总数
。
接下来设置 X 轴,在 Buckets
中增加 X-axis
,聚合器选择 Date Histogram
,Field
选择 startAt
,Minimum interval
填写 1h
,Custom label
填写 时间
,我们以报警发生的时间作为 X 轴数据,每小时的数据统计在一个点上。
接下来继续增加 Bucket
,选择 Split series
,使用 Terms
聚合器,Field
字段选择 labels.alertname.keyword
,Order by
选择 Metric:报警总数
,Order
默认即可,Size
设置为:50
,打开 Group other values in separate bucket
(将所有不在报警名称之中的归入此类),在 Label for other bucket
下方填写 其他,Custom label
中填写 报警名称
数据部分的工作做完了,接下来进行配置:
1、设置 Y 轴,在 Metrics & axes
中,Chart type
选择 Line
,使用线图;Line mode
选择 Smoothed
,使用平滑曲线;Line width
用来设置线宽,可自行设置。
2、设置 X 轴,Position
为 Bottom
,x 轴显示在图表下方;打开 Show axis lines and labels
,否则将不显示 x 轴的标签;Align
使用 Horizontal
,横向排列 x 轴标签。
3、其他设置,在 Panel settings
中,打开 Show tooltip
,这样当鼠标放到数据点上时,会显示该点的数据和标签;打开 Current time marker,将会以垂线的方式显示当前时间线;在 Grid 部分,打开 Show X-axis lines
,Y-axis lines
选择 LeftAxis-1
,这样会在坐标轴中显示网格线,更加直观。
最后的折线图为:
可以看出,随着时间的变化,有些报警在减少,有些报警在迅速增加。
保存该图标,命名为:各报警随时间的变化情况
百分位图
如果我们想给某给报警设置阈值,使得 95% 的报警都不发送,那么我们就需要计算这个报警的百分位数。
百分位数可以使用线图来绘制,也基本跟线图一样,区别在于以下两点:
1、Metrics
中使用 Percentiles
聚合器,Field
选择 labels.value
,注意,labels.value
必须是 ES
中的数值类型,否则不能用于计算百分位数,在 Percents
中分别填入 90
,95
,99
,表示需要计算 90% 分位数
,95% 分位数
,99% 分位数
。
2、在 Bucket
的 Split series
中,此处使用 Filters
聚合器,查询条件为:labels.alertname.keyword : "kube-admin相关容器内存使用率大于80%" and labels.severity.keyword : "critical" and labels.group.keyword : "RST"
,查询出待计算百分位数的报警,在 Filter 1 label
中填入 kube-admin相关容器内存使用率大于80%
最后的百分位图为:
可以看到,在2020年03月05日5点时,kube-admin相关容器内存使用率大于80% 报警的 90% 分位数为 77.162,也就是 value 设置为 77.162 时,90% 的报警都不会发送出来。
同时也应该注意,分位数是随着报警总数的增多而变化的,并非固定值。
保存该图,命名为:百分位图-kube-admin相关容器内存使用率大于80%
注意事项
1、在 Kibana
中创建索引模式(Index Pattern)之后,原来索引中字段的数据类型就将保持不变,即使 ElasticSearch 中的数据类型改变了,此时,需要删除原来的索引模式,重新从 ElasticSearch 的索引创建 Kibana 使用的索引模式。
2、Kibana 的图表依赖于其索引模式,删除索引模式后,图表将无法正常显示。
总结
Kibana 的图表制作还是很方便的,了解了基本的使用方法后,可以制作出来很多漂亮、实用的图表,为业务提供支持和建议。