夜莺(开源版)
Flashduty
夜莺开源生态
Prometheus
版权声明
第1章:天降奇兵
第2章:探索PromQL
第3章:Prometheus告警处理
第4章:Exporter详解
第5章:数据与可视化
第6章:集群与高可用
第7章:Prometheus服务发现
第8章:监控Kubernetes
第9章:Prometheus Operator
参考资料

数据查询

时序指标

即时查询

采集器将监控数据上报到服务端之后,我们就可以查询数据了,即时查询页面提供了灵活的数据查询能力,支持使用 promql 语法查询所有的时序指标。

即时查询支持两种视图,Table 和 Graph 视图

Table 视图会将时序时间最近上报的点返回回来

image-20230427144911475

Graph 视图展示的是时序值最近一个时间段内的数值变化

image-20230426180905903

对应 promql 不太熟悉的同学,夜莺也提供了 新手模式 功能,通过点选的方式将 promql 构造出来

image-20230427145128195

快捷视图

即时查询提供了通过 promql 灵活查询数据的能力,但对于不了解 promql 的同学有一些门槛,对于这些同学,可以先让资深的工程师将经常要看的监控对象在快捷视图配置出来,其他同学可以通过点选的方式,来方便地查看监控对象的监控数据,比如下图,是 mysql 的一个快捷视图

image-20230427162932977

配置方式

点击左边栏右上角的加号,可以添加新的快捷视图,视图名称可以以组件的类型命名,如果快捷视图想让其他同学都看到,可以选择公开按钮,快捷视图本质上其实是对 promql 查到的数据做特殊展示。

拿 mysql 视图举例,我们想把监控到的所有 mysql 实例列出来,我们可以找一个 mysql 的监控指标,比如 mysql_up{address="10.206.0.16:3306", ident="tt-fc-n9e.nj"} 我们的目标是把 address 提取列出来,当做实例列表,我们可以通过在前置条件中配置 __name__ = mysql_up 这个筛选条件,将所有和 mysql 相关的监控曲线都查出来,然后配置展开维度标签为 address,这样所有 address 的值,就会出现在上图中栏的地方,到这里快捷视图其实已经可以完成配置了,但有的时候,我们需要对 mysql 实例的的监控数据进行分组查看,这个时候,我们可以通过配置动态过滤标签的方式,对 address 进行分组,这个就是动态过滤标签的作用,我们可以使用 mysql_up 中的 label,对 address 进行动态过滤,比如可以配置 ident,这样筛选只和某个 ident 相关的 mysql 实例。 image-20230427162915552

记录规则

记录规则其实是将 prometheus recording rule 的能力进行了页面化,配置很简单,这里不再详细展开,这里需要注意的一点是,这里选择的时序库集群,必须先配置好 write_addr 参数,已经支持了远程写入

image-20230427163130829

日志分析

夜莺从 v6 版本支持了对接 elasticsearch 类型的数据源,在数据源管理配置好 es 数据源之后,就可以在即时查询页面查询 es 的数据了,目前过滤条件支持 query string 的查询语法,具体的语法可以到 es 官网 查看

image-20230427165033364

链路追踪

夜莺的链路追踪能力,是基于 Jaeger 来实现的,在数据源管理页面配置好 Jaeger 数据源之后,即可展示在 Jaeger 存储的 Trace 信息,夜莺提供了两种查询 Trace 信息的方式,一种是通过 Service+Opertation+标签 筛选,一种是之前根据 Trace ID 来筛选。

image-20230427171152298

仪表盘

即时查询允许用户根据需求选择并查看特定指标。仪表盘提供了更高效的解决方案,通过预先配置好想要查看的图表,用户在未来查看时只需点击即可直接浏览一系列图表,无需逐一选择。仪表盘在某种程度上还起到了知识传递的作用。例如,在 MySQL 监控中,资深 DBA 可以事先将重要的图表以及应关注的图表都配置到监控大盘中。其他人在查看这个仪表盘时便能学习到许多相关知识。

夜莺的仪表盘可以对接兼容 promethues 协议的时序库和 elasticsearch 数据源。支持了 时间序列图、指标值、表格、饼图、蜂窝图、排行榜、文字卡片、仪表盘、内嵌文档等多种图表,未来还会继续支持更多图表类型。

image-20230426162901837

图表配置

这里以时序值为例,介绍下图表是否配置。创建好一个仪表盘之后,进去仪表盘编辑页面,点击右上角的 添加图标 按钮,弹出图表编辑视图,如下图

image-20230427173825299

图表配置主要分三个区域,左上是预览图区域,展示了图表配置的最终效果,左下是数据筛选区,可以设置展示哪些数据,右边是图表的各种样式配置

左下数据筛选部分:

夜莺的仪表盘也支持配置变量,如果仪表盘配置了变量,可以写 promql 时使用 $+变量名 的方式配置,这样后续再查询大盘的时候,可以通过切换变量快速查看不同对象的多个监控图表

右边样式配置参数:

  • 标题:每个图表可以配置一个标题,方便更直观地知道图表的用途
  • 链接:有的场景我们可以先配置一个总览的图表,比如某个应用的健康度,当健康度异常时,点击点击这里配置的链接,进入另一个仪表盘,查看更详细的信息
  • 备注:对图表更详细的说明
  • Tooltip 模式: 设置为 Single 时,鼠标移动到图表上时显示单个图例,All 时显示全部的图例
  • Legand: 图例展示设置,提供了表格、列表、隐藏三种
  • 图表样式:可以配置折线图、柱状图、颜色是否渐变、是否堆叠、透明度、曲线宽度等
  • 高级配置:可以配置Y轴的上界和下界、数值的单位等
  • 阈值:可以在Y轴的某个位置标记红线阈值

通过上面这些配置,可以灵活的配置出用户想要的图表效果

大盘变量

大盘变量是夜莺仪表板中的一种动态元素,通过使用大盘变量,用户可以根据所选变量值快速查看和比较数据,增加仪表板的灵活性和易维护性。

举个具体的例子,当我们需要配置多个 MySQL 实例的仪表盘时,通过创建一个查询变量,从数据源中获取所有可用的 MySQL 实例名称。我们可以在仪表板中轻松选择所需实例,查看其性能指标、资源使用情况等。例如,使用以下 PromQL 查询作为变量来源:label_values(mysql_global_status_threads_connected, instance) ,可以把 instance 作为变量,在仪表板中,用户可以根据 instance(实例名称)快速切换,查看每个实例的连接数、查询速率、缓冲池使用情况等指标。

image-20230427231741585

内置模板

夜莺还提供了很多内置仪表盘模板,如 MySQL、Redis、Kubernetes 等,沉淀了各种基础组件的最佳监控实践,我们可以一键导入到自己的业务组,进一步简化仪表板的创建和配置过程。

image-20230427234626969

机器列表

夜莺在接收到监控数据之后,如果识别到是机器的监控指标,会从监控数据中提取出机器的 ident 信息,展示在机器列表页面。如果采集器使用的是 categraf 并且打开了 heartbeat 开关,机器列表会将机器的元信息(内存、CPU、时间偏移、核数、操作系统、CPU架构、心跳时间、来源IP等)展示出来,相当于一个简单的 cmdb 页面。

image-20230427235244180

夜莺还提供了业务组的分组方式,可以将不同业务的机器分配到不同的业务组,更方便的对机器进行管理,此外还可以通过右上角的批量操作,对机器进行打标签,打上标签之后,和机器相关的时序数据也会附上给机器打的标签,可以通过标签统一对时序数据进行筛选,配置告警规则,屏蔽规则,订阅规则等操作。

开源版
Flashcat™
Flashduty