夜莺监控常见问题 FAQ 一览​

夜莺监控 FAQ 汇总:解释 Nightingale 是什么、与 Prometheus/Grafana/Categraf/Flashcat/Flashduty 的关系,以及排查问题时应优先查看文档、日志和 GitHub issue。

作者 巴辉特

这篇 FAQ 汇总夜莺监控(Nightingale)使用过程中最常被问到的问题,重点回答夜莺的定位、与 Prometheus/Grafana/Categraf/Flashcat/Flashduty 的关系,以及遇到问题时的排查路径。

先看一句话版结论:

  • 夜莺是开源监控项目,核心侧重是多数据源告警引擎。
  • Prometheus 可以继续负责采集和存储,夜莺可以替代或补充其告警能力。
  • Categraf 是夜莺团队维护的采集器,但夜莺不强制要求使用 Categraf。
  • Flashcat 是夜莺核心团队推出的商业化可观测性产品,覆盖更多数据类型和故障分析能力。
  • Flashduty 是 On-call 产品,专注告警事件管理、通知、排班和升级。

1、夜莺是什么?

夜莺监控(Nightingale)是一个开源监控项目,侧重点是多数据源告警引擎。

可以类比 Grafana 理解:二者都可以对接多种数据源。Grafana 更侧重可视化仪表盘;夜莺更侧重告警引擎,即根据告警规则生成告警事件,并对事件做二次处理和分发。

夜莺的开源仓库地址:

2、和 Prometheus 的关系是?

夜莺和 Prometheus 既有替代关系,也有协同关系。准确说,夜莺主要替代或增强的是 Prometheus 的告警引擎部分,而不是替代 Prometheus 的所有能力。

Prometheus 内置告警引擎,会周期性执行 Alerting rules,然后发给 Alertmanager 处理、分发。夜莺可以替代 Prometheus 内置的告警引擎。夜莺的告警引擎支持高可用和水平扩展,即便告警规则较多,也可以通过水平扩展承载压力。

夜莺可以对接多种数据源,Prometheus 是其中一种,也可以对接 VictoriaMetrics、Thanos、ClickHouse、MySQL、ElasticSearch、Loki 等等。用户既可以配置指标告警规则,也可以配置日志告警规则。

能力 Prometheus 夜莺
指标采集和存储 常用于采集、拉取、存储指标 不存储时序数据,依赖外部 TSDB
告警规则执行 内置 Alerting rules 侧重多数据源告警引擎
告警事件二次处理 通常交给 Alertmanager 支持静默屏蔽、过滤丢弃、富化、通知等处理
多数据源 主要围绕 Prometheus 生态 可对接 Prometheus、VictoriaMetrics、Thanos、ClickHouse、MySQL、ElasticSearch、Loki 等

3、夜莺只是告警?那为啥还有个 Categraf 项目?

夜莺侧重点是告警,但很多用户希望获得一站式监控体验,所以夜莺团队开发了 Categraf 监控采集器,作为夜莺的官方采集器。Categraf 负责采集机器监控指标和元信息,并上报给夜莺。

但是,Categraf 并非必须使用,用户也可以使用其他采集器,比如 Telegraf、Prometheus 生态的各类 Exporter 等等。如果使用 Categraf,在机器监控、元信息上报和自愈脚本执行等方面会有更好的体验。

如果不用 Categraf 做采集器,夜莺核心的告警引擎依然可以正常工作,Ad-hoc 查询和仪表盘也可以工作,但是机器列表为空、机器元信息不可见、自愈脚本不可用。

n9e-arch-v8.drawio

稍微展开说一下夜莺的架构:

  • 默认情况下,夜莺只有一个进程,即 n9e。这个进程有三个职能:Pushgateway 负责把收到的时序数据(Categraf 发过来的)转发给 TSDB;WebUI 负责提供 Web 界面和 API;AlertingEngine 负责执行告警规则并生成告警事件。
  • 夜莺不存储时序数据,时序数据存储在外部 TSDB 里,比如 Prometheus、VictoriaMetrics、Thanos 等等。夜莺通过 Prometheus remote write 协议把监控指标转给 TSDB。
  • 夜莺仪表盘、告警规则、告警事件等存储在 MySQL 里,机器心跳信息、元信息、JWT Token 存储在 Redis 里。
  • 夜莺产生告警事件之后可以做二次处理,比如静默屏蔽、过滤丢弃、富化 Enrichment、和 CMDB、AI 等打通整合,然后通过邮件、短信、飞书、钉钉、Flashduty 等渠道发送通知。

4、夜莺能监控 x 吗?

经常有人问:夜莺能监控 Tomcat 吗?夜莺能监控 Nginx 吗?

答案是:夜莺本身不采集数据,所以它“不能直接采集”;但只要相关监控数据进入了夜莺可对接的数据源,夜莺就可以做查询、看图和告警,所以它“又能监控很多对象”。

对于 Categraf 的用户,可以到 Categraf 的插件目录下面看看是否有对应的采集插件,如果没有就说明 Categraf 采集不了。此时也可以考虑使用 Telegraf 或 Prometheus Exporter 来采集数据。只要数据进入 TSDB,就可以用 Grafana 做可视化,用夜莺做告警。

5、夜莺也有仪表盘功能,推荐生产使用吗?

如果有自行制作仪表盘的能力,可以使用夜莺仪表盘。如果没有,建议使用 Grafana,因为 Grafana 生态更大,有很多现成仪表盘。

也可以混用:机器相关的基础仪表盘用夜莺自带能力,其他业务相关仪表盘继续用 Grafana。告警规则和通知管理则可以放在夜莺里统一处理。

6、夜莺和 Flashcat 有什么关系?

Flashcat 是夜莺的商业化产品,是夜莺核心开发团队创业后(公司名称:北京快猫星云科技有限公司)做的产品。

二者定位不同:夜莺定位是告警引擎,Flashcat 定位是一站式可观测性平台,囊括指标、日志、链路追踪、故障分析等更多功能。可以把夜莺看作 Flashcat 的一个功能模块。

7、夜莺和 Flashduty 有什么关系?

Flashduty 是夜莺团队开发的另一个产品,是一款 On-call 产品,对标国外的 PagerDuty。

Flashduty 可以对接各类监控系统,比如夜莺、Alertmanager、Zabbix、云监控、蓝鲸、ElastAlert 等等。它专注告警事件管理和通知,提供值班排班、通知策略、事件聚合、告警升级等功能。

8、夜莺遇到问题怎么办?

纵观社区用户遇到的问题,大部分都可以通过查阅文档和日志解决。文档链接在本文开头已经给出。日志通常在两个地方:一个是进程的 stdout,另一个是 etc/config.toml 里手工指定的日志文件路径。

如果是 stdout 方式,且 n9e 是通过 systemd 启动的,可以通过 journalctl -u n9e 查看日志。类似 tail -f 的方式是:journalctl -fu n9e

如果还是没有解决,可以搜索历史 issue。如果历史上没人提过这类问题,可以新建一个 issue,提 issue 的时候请尽量提供以下信息:

  • 夜莺版本、操作系统版本
  • 你做了哪些操作
  • 你要实现什么目标
  • 复现步骤
  • 配置、截图、日志等

夜莺有微信群吗?有的,可以加我微信 picobyte,备注“加夜莺群”,我拉你进群。不过进群前要拉低预期,在群里提问未必会得到其他群友的回复,毕竟大家都是业余时间帮忙的。更建议的方式是提 issue,这是开源项目的最普遍协作方式。

如果您对外分享过夜莺的博客教程、或者在企业内部做过夜莺的推广培训,可以加入“夜莺布道师”群,这个群的群友更资深一些,也更活跃一些。也是加我微信 picobyte,备注“加夜莺布道师群”,然后把您分享的文章的链接发我即可。

排查路径小结

遇到夜莺问题时,可以按这个顺序处理:

  1. 先确认版本、部署方式、数据源类型和目标操作。
  2. 查看官方文档,确认配置项和使用方式是否符合预期。
  3. 查看 n9e 日志,尤其是启动报错、数据源连接、告警执行和通知发送相关日志。
  4. 搜索 GitHub 历史 issue,看看是否已有类似问题。
  5. 新建 issue 时,尽量提供版本、系统环境、复现步骤、配置、截图和日志。

这样提问更容易得到有效回复,也能让问题沉淀为可复用的社区知识。

延伸路径

继续看解决方案和产品对比

如果你正在做监控、可观测性或故障定位相关选型,建议从解决方案和产品对比继续往下看。

标签 夜莺监控
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云