数据查询
时序指标
即时查询
采集器将监控数据上报到服务端之后,我们就可以查询数据了,即时查询页面提供了灵活的数据查询能力,支持使用 promql 语法查询所有的时序指标。
即时查询支持两种视图,Table 和 Graph 视图
Table 视图会将时序时间最近上报的点返回回来
Graph 视图展示的是时序值最近一个时间段内的数值变化
对应 promql 不太熟悉的同学,夜莺也提供了 新手模式 功能,通过点选的方式将 promql 构造出来
快捷视图
即时查询提供了通过 promql 灵活查询数据的能力,但对于不了解 promql 的同学有一些门槛,对于这些同学,可以先让资深的工程师将经常要看的监控对象在快捷视图配置出来,其他同学可以通过点选的方式,来方便地查看监控对象的监控数据,比如下图,是 mysql 的一个快捷视图
配置方式
点击左边栏右上角的加号,可以添加新的快捷视图,视图名称可以以组件的类型命名,如果快捷视图想让其他同学都看到,可以选择公开按钮,快捷视图本质上其实是对 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 实例。
记录规则
记录规则其实是将 prometheus recording rule 的能力进行了页面化,配置很简单,这里不再详细展开,这里需要注意的一点是,这里选择的时序库集群,必须先配置好 write_addr 参数,已经支持了远程写入
日志分析
夜莺从 v6 版本支持了对接 elasticsearch 类型的数据源,在数据源管理配置好 es 数据源之后,就可以在即时查询页面查询 es 的数据了,目前过滤条件支持 query string 的查询语法,具体的语法可以到 es 官网 查看
链路追踪
夜莺的链路追踪能力,是基于 Jaeger 来实现的,在数据源管理页面配置好 Jaeger 数据源之后,即可展示在 Jaeger 存储的 Trace 信息,夜莺提供了两种查询 Trace 信息的方式,一种是通过 Service+Opertation+标签 筛选,一种是之前根据 Trace ID 来筛选。
仪表盘
即时查询允许用户根据需求选择并查看特定指标。仪表盘提供了更高效的解决方案,通过预先配置好想要查看的图表,用户在未来查看时只需点击即可直接浏览一系列图表,无需逐一选择。仪表盘在某种程度上还起到了知识传递的作用。例如,在 MySQL 监控中,资深 DBA 可以事先将重要的图表以及应关注的图表都配置到监控大盘中。其他人在查看这个仪表盘时便能学习到许多相关知识。
夜莺的仪表盘可以对接兼容 promethues 协议的时序库和 elasticsearch 数据源。支持了 时间序列图、指标值、表格、饼图、蜂窝图、排行榜、文字卡片、仪表盘、内嵌文档等多种图表,未来还会继续支持更多图表类型。
图表配置
这里以时序值为例,介绍下图表是否配置。创建好一个仪表盘之后,进去仪表盘编辑页面,点击右上角的 添加图标 按钮,弹出图表编辑视图,如下图
图表配置主要分三个区域,左上是预览图区域,展示了图表配置的最终效果,左下是数据筛选区,可以设置展示哪些数据,右边是图表的各种样式配置
左下数据筛选部分:
夜莺的仪表盘也支持配置变量,如果仪表盘配置了变量,可以写 promql 时使用 $+变量名 的方式配置,这样后续再查询大盘的时候,可以通过切换变量快速查看不同对象的多个监控图表
右边样式配置参数:
- 标题:每个图表可以配置一个标题,方便更直观地知道图表的用途
- 链接:有的场景我们可以先配置一个总览的图表,比如某个应用的健康度,当健康度异常时,点击点击这里配置的链接,进入另一个仪表盘,查看更详细的信息
- 备注:对图表更详细的说明
- Tooltip 模式: 设置为 Single 时,鼠标移动到图表上时显示单个图例,All 时显示全部的图例
- Legand: 图例展示设置,提供了表格、列表、隐藏三种
- 图表样式:可以配置折线图、柱状图、颜色是否渐变、是否堆叠、透明度、曲线宽度等
- 高级配置:可以配置Y轴的上界和下界、数值的单位等
- 阈值:可以在Y轴的某个位置标记红线阈值
通过上面这些配置,可以灵活的配置出用户想要的图表效果
大盘变量
大盘变量是夜莺仪表板中的一种动态元素,通过使用大盘变量,用户可以根据所选变量值快速查看和比较数据,增加仪表板的灵活性和易维护性。
举个具体的例子,当我们需要配置多个 MySQL 实例的仪表盘时,通过创建一个查询变量,从数据源中获取所有可用的 MySQL 实例名称。我们可以在仪表板中轻松选择所需实例,查看其性能指标、资源使用情况等。例如,使用以下 PromQL 查询作为变量来源:label_values(mysql_global_status_threads_connected, instance)
,可以把 instance 作为变量,在仪表板中,用户可以根据 instance(实例名称)快速切换,查看每个实例的连接数、查询速率、缓冲池使用情况等指标。
内置模板
夜莺还提供了很多内置仪表盘模板,如 MySQL、Redis、Kubernetes 等,沉淀了各种基础组件的最佳监控实践,我们可以一键导入到自己的业务组,进一步简化仪表板的创建和配置过程。
机器列表
夜莺在接收到监控数据之后,如果识别到是机器的监控指标,会从监控数据中提取出机器的 ident 信息,展示在机器列表页面。如果采集器使用的是 categraf 并且打开了 heartbeat 开关,机器列表会将机器的元信息(内存、CPU、时间偏移、核数、操作系统、CPU架构、心跳时间、来源IP等)展示出来,相当于一个简单的 cmdb 页面。
夜莺还提供了业务组的分组方式,可以将不同业务的机器分配到不同的业务组,更方便的对机器进行管理,此外还可以通过右上角的批量操作,对机器进行打标签,打上标签之后,和机器相关的时序数据也会附上给机器打的标签,可以通过标签统一对时序数据进行筛选,配置告警规则,屏蔽规则,订阅规则等操作。