夜莺-Nightingale
夜莺V6
项目介绍 架构介绍
快速开始
黄埔营
安装部署
升级
采集器
使用手册
API
数据库表结构
FAQ
开源生态
Prometheus
版权声明
第1章:天降奇兵
第2章:探索PromQL
第3章:Prometheus告警处理
第4章:Exporter详解
第5章:数据与可视化
第6章:集群与高可用
第7章:Prometheus服务发现
第8章:监控Kubernetes
第9章:Prometheus Operator
参考资料

夜莺功能概览

下面会按照菜单的顺序,逐一介绍夜莺的各个功能,大家一定要读,有个大概了解即可,暂不用实操,后面的文档会讲解各个需求场景的实操方法

仪表盘

监控仪表盘

管理了各个仪表盘,仪表盘的增删改查都在这里完成,全公司可能有很多仪表盘,所以仪表盘归属于各个业务组,既分门别类做了管理,又能做权限控制。仪表盘可以导出成 JSON 分享给别人,也可以导入别人分享的仪表盘,当然,也可以导入夜莺内置的仪表盘。

夜莺也支持导入 Grafana 仪表盘,不过夜莺的仪表盘和 Grafana 的仪表盘并不是兼容的,有些图表导入进来之后无法展示,如果你已经习惯了 Grafana 仪表盘,建议还是继续使用 Grafana 仪表盘。只用夜莺做告警管理,用夜莺查看基础的机器监控数据即可。

内置仪表盘

夜莺内置了一些常用的仪表盘,分门别类放在这里了。点开某个类别,可以看到相关的仪表盘列表,可以选中一批仪表盘克隆到自己的业务组下使用。采集说明 标签下面则是相关文档,讲解这类监控数据是如何采集的。

20240222162321

内置仪表盘实际是读取的 integrations 目录下的内容,integrations 下面每个目录就是一个类别,一般对应 Categraf 的一个采集插件,插件目录里有几个子目录,icon 存放图标图片,dashboards 存放仪表盘 JSON 文件,markdown 存放采集说明文档,alerts 存放告警规则。最新的 integrations 在这里:integrations,欢迎大家提交 PR 一起完善。

时序指标

这个菜单下的功能,主要是做监控数据的 ad-hoc 查询,需要你对监控指标有一定了解,会写 promql,平时排查问题的时候还是非常有用的。

即时查询

通过输入 promql 查询不同数据源的数据,比如查询最近 2 分钟内的 CPU 使用率:

20240222172249

快捷视图

直接查询 promql 对很多人来说是个门槛,我们想查看某个机器的指标或者某个 Oracle 实例的指标,通常都是想先找到对应的机器或实例,然后选择相关的指标,这样的交互更为友好。

20240222174605

默认内置了一个 Host View,中间位置会展示所有的机器列表,选中某个机器之后,右侧会展示相关的指标。你可以模仿 Host View 的配置,自定义一个 Oracle View,或者一个 Redis View,或者一个 MySQL View,这样就能更快的找到你想要的监控数据。

记录规则

记录规则相当于 Prometheus 中的 recording rule。啥是 recording rule 可以自行 Google 一下。简而言之,就是把一些重量级的 promql 周期性查询,生成新的指标,后面看图时,直接查询这个新指标,可以提升查询性能。

开源版只能对时序数据做 recording rule,商业版可以对日志数据做 recording rule,即周期性查询日志数据生成指标存入时序库,后面即可对这些时序数据绘图、配置告警。

日志分析

开源版本的日志分析就类似 Kibana 的 Discover 功能,可以查询日志数据,与 Kibana 略有不同的是,夜莺查询日志采用的是 Lucene 语法,而 Kibana 使用的是 KQL 语法,夜莺可以查询指定的索引也可以查询 index pattern,Kibana 只能查询 index pattern。index pattern 是 Elastic 生态的一个概念,这里不再赘述,索引模式菜单就是管理 index pattern 的。

告警管理

告警管理是夜莺的强项,很多公司使用夜莺实际主要就是使用告警管理功能。通常一个公司会有多套时序库分布在不同的数据中心,可以通过夜莺做中心化统一管理,夜莺内置权限管控体系,可以让各个研发团队自助服务,自己管理自己的告警规则。

告警规则

告警规则管理。初次使用可能比较陌生。可以导入夜莺内置的告警规则,在这些规则的基础上修改。导入入口在右上角,更多操作 - 导入告警规则

20240222181018

内置规则

夜莺内置了一些常用的告警规则,分门别类放在这里了。点开某个类别,可以看到相关的告警规则列表,可以选中一批告警规则克隆到自己的业务组下使用。

20240222181156

内置告警规则和内置仪表盘类似,也是读取的 integrations 目录。欢迎大家提交 PR 一起完善。

屏蔽规则

一些维护工作可能会产生告警,如果是预期内的维护,可以提前配置屏蔽规则,避免产生告警。屏蔽规则核心是配置两个信息,一个是告警事件过滤条件,符合条件的告警事件会被屏蔽,另一个是屏蔽的时间段,可以是具体的某个时间段,也可以是周期性的时间段。

注意:屏蔽规则只会生效于本业务组下的告警规则。防止有些人随意配置了错误的屏蔽规则,把整个公司的告警都给屏蔽了。

如果告警已经产生,在活跃告警列表中每个告警事件后面会有个屏蔽按钮,点击屏蔽按钮可以自动填充屏蔽规则的过滤条件,然后选择屏蔽的时间段,就可以把这个告警事件屏蔽掉。

注意:屏蔽规则创建表单最下面有个【屏蔽预览】按钮,可以预览一下这个屏蔽规则会屏蔽哪些告警事件,可以在这里顺便全选所有相关的告警事件并删除。毕竟你都要屏蔽这些事件了,这些已经产生的事件也没必要再看了。

当前夜莺版本,命中屏蔽规则的事件,在活跃告警中是看不到的,后面 V7 版本会优化告警事件的逻辑,把屏蔽中的事件也展示出来。

订阅规则

告警规则中可以直接配置告警接收人,这样告警之后相关人员就可以收到告警,即:在告警规则颗粒度指定告警接收人。订阅规则有点像是 alertmanager 中的路由规则,可以根据告警事件的标签,把告警事件路由到不同的接收人,即:不止是规则颗粒度来指定接收人,可以是各种标签维度来指定接收人。

如果某个告警规则配置了接收人(比如发给 SRE 团队),DEV 团队又订阅了这个告警规则,那么 SRE、DEV 都会收到相关告警。

活跃告警

当前版本,活跃告警就是展示所有未恢复的告警,如果某个告警恢复了,会自动从活跃告警中删除。

历史告警

历史告警是夜莺产生的所有历史告警事件,对应数据库中的 alert_his_event 表,这个表的数据不会自动删除,如果数据太多,比如超过 1000 万,可以手动清理。

告警通知

告警事件产生之后,可以通过各种方式通知相关人员,比如钉钉、企业微信、邮件、短信、电话等,不同的通知媒介可以选择不同的通知模板。跟通知相关的配置在这个菜单下。

通知设置

  • 回调地址:用于夜莺和其他系统之间的事件集成。夜莺告警事件产生之后,会通过回调地址推给第三方系统
  • 通知脚本:如果内置的通知方式不满足需求,可以自定义通知脚本,比如发短信、打电话等,告警事件产生之后,会把告警事件的信息传给通知脚本,通知脚本负责通知相关人员
  • 通知媒介:通知媒介的增删改查,可以在这里自定义通知媒介,然后在通知模板中为新媒介定义模板,之后就可以在脚本中使用新媒介了
  • 联系方式:相当于 user 的自定义属性,这是一个比较高级的功能,自定义媒介如果需要用到联系方式,可以在这里配置
  • SMTP 设置:邮件通知的 SMTP 服务器配置,SMTP 如果不知道是什么,可以自行 Google 一下

通知模板

告警事件使用不同的媒介发送的时候,需要采用不同的渲染方式,在此配置相关渲染模板。

告警自愈

告警自愈是夜莺的一个高级功能,可以在告警事件产生之后,自动执行一些命令,比如重启服务、清理磁盘、清理无用镜像等。告警自愈的配置在这个菜单下。

脚本

配置自定义脚本。相当于一个任务模板,基于脚本创建任务时会自动填充相关字段。告警规则中可以配置回调地址为 ${ibex}/345,其中 345 这个数字表示脚本的 ID,告警事件产生之后,会把告警事件的信息传给脚本,脚本去做一些自动化的动作。去哪个机器执行?就是去告警的机器执行,告警自愈场景下,会忽略脚本中默认配置的机器列表。

任务(执行历史)

历史执行的任务列表,包括夜莺告警自愈自动创建的任务以及手工创建的任务。

配置

当前版本,告警自愈依赖 ibex 模块,所以需要把 ibex 的地址告诉夜莺,我们正在做优化,后面会把 ibex 的逻辑整合到夜莺中。

基础设施

开源版本,这个下面只有机器列表一个功能,商业版 还有很多功能,比如网络设备管理、采集配置管理(在页面管理 Categraf 插件配置)、拨测、Pingmesh 等。

机器列表

展示所有安装了 Categraf 的机器,可以在这里看到机器的基本信息,也可以在这里配置机器的标签,如果某个机器打了标签 region=a,这个机器上报的所有监控数据都会自动附加上这个标签,后面就可以在告警规则和看图时用此标签做筛选。

人员组织

用户、团队、业务组、权限管理。

用户管理

管理夜莺中的所有用户。当前版本中,企微机器人、钉钉机器人也抽象为用户,比如创建一个企微机器人用户,然后在告警规则中配置告警接收团队(团队中包含这个企微机器人用户),就可以通过企微机器人发送通知。

20240222194450

企微机器人用户,关键就是配置这个 wecom_robot_token 字段,配置为企微机器人的 token,或者直接填写企微机器人的整个 webhook 地址,均可。密码设置为一个复杂点的密码,权限设置为 Guest 低权限角色,这是个虚拟用户,理论上是不应该登录系统的。

团队管理

团队就是 user 的 group。用作告警接收人,也会用作某些权限控制。

业务组管理

业务组是一个权限管控单元,可以把一批机器、一批告警规则、一批仪表盘放到某个业务组下,然后为这个业务组绑定一个团队,这个团队就有权限管理这个业务组下的所有资源。

当前版本,如果业务组的名称中包含减号,可以自动展示成树形结构,比如 业务组-子业务组,就会展示成树形结构,业务组 是根节点,子业务组业务组 的子节点。当然,可以关闭这个功能,具体配置在 系统配置 - 站点设置

系统配置

数据源

类似 Grafana,夜莺也支持多种不同的数据源,比如 Prometheus、VictoriaMetrics、M3DB、ElasticSearch、Loki、TDEngine 等等,可以在这里配置数据源地址。

变量设置

类似一个全局宏变量。在某些配置中可以引用这些变量。

单点登录

配置登录信息,比如 LDAP、CAS、OIDC、OAuth2 等。

告警引擎

告警引擎展示了各个引擎实例的心跳时间,以及关联的数据源,用于排查问题。

站点设置

站点层面的全局配置,比如配置:登录之后自动跳转的首页地址。

系统版本

展示前后端的版本。

开源版
Flashcat
Flashduty