夜莺监控常见问题 FAQ 一览
1、夜莺是什么?
夜莺监控(Nightingale)是一个开源监控项目,侧重点是做多数据源的告警引擎。可以类比 Grafana,二者都可以对接多种数据源,只是 Grafana 侧重在可视化仪表盘,夜莺侧重在告警引擎,即根据告警规则生成告警事件并对事件做二次处理和分发。
夜莺的开源仓库地址:
- 后端:https://github.com/ccfos/nightingale
- 前端:https://github.com/n9e/fe
- 文档:https://n9e.github.io/ 或 https://flashcat.cloud/docs/
2、和 Prometheus 的关系是?
既有替代关系也有协同关系。
Prometheus 内置告警引擎,即周期性执行 Alerting rules 然后发给 Alertmanager 处理、分发。夜莺可以替代 Prometheus 内置的告警引擎。夜莺的告警引擎是高可用的,可以水平扩展,即便告警规则比较多,夜莺也可以水平扩展扛住压力。
夜莺可以对接多种数据源,Prometheus 是其中一种,也可以对接 VictoriaMetrics、Thanos、ClickHouse、MySQL、ElasticSearch、Loki 等等。用户既可以配置指标告警规则,也可以配置日志告警规则。
3、夜莺只是告警?那为啥还有个 Categraf 项目?
夜莺侧重点是告警。但是很多用户确实想要一个一站式监控系统,所以夜莺团队开发了 Categraf 监控采集器,作为夜莺的官方采集器。Categraf 负责采集机器的监控指标和元信息,并上报给夜莺。
但是,Categraf 并非必须使用,用户也可以使用其他采集器,比如 Telegraf、Prometheus 生态的各类 Exporter 等等。如果使用 Categraf,在机器监控、元信息上报和自愈脚本执行等方面会有更好的体验。
如果不用 Categraf 做采集器,夜莺核心的告警引擎依然可以正常工作,Ad-hoc 查询和仪表盘也可以工作,但是机器列表为空、机器元信息不可见、自愈脚本不可用。
稍微展开说一下夜莺的架构:
- 默认情况下,夜莺只有一个进程,即
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 是夜莺团队开发的另一个产品,对标国外的 PagerDuty,是一款 On-call 产品。Flashduty 可以对接各类监控系统,比如夜莺、Alertmanager、Zabbix、云监控、蓝鲸、ElastAlert 等等。Flashduty 专注在告警事件的管理和通知上,提供值班排班、通知策略、事件聚合、告警升级等功能。
8、夜莺遇到问题怎么办?
纵观社区用户遇到的问题,90% 都可以通过查阅文档和日志解决,文档链接在本文开头已经给出。日志的话可能在两个地方,一个是进程的 stdout,另一个是 etc/config.toml 里手工指定的日志文件路径。
如果是 stdout 方式,且 n9e 是通过 systemd 启动的,可以通过 journalctl -u n9e 查看日志。类似 tail -f 的方式是:journalctl -fu n9e。
如果还是没有解决,可以搜索历史 issue。如果历史上没人提过这类问题,可以新建一个 issue,提 issue 的时候请尽量提供以下信息:
- 夜莺版本、操作系统版本
- 你做了哪些操作
- 你要实现什么目标
- 复现步骤
- 配置、截图、日志等
夜莺有微信群吗?有的,可以加我微信 picobyte,备注“加夜莺群”,我拉你进群。不过进群前要拉低预期,在群里提问未必会得到其他群友的回复,毕竟大家都是业余时间帮忙的。更建议的方式是提 issue,这是开源项目的最普遍协作方式。
如果您对外分享过夜莺的博客教程、或者在企业内部做过夜莺的推广培训,可以加入“夜莺布道师”群,这个群的群友更资深一些,也更活跃一些。也是加我微信 picobyte,备注“加夜莺布道师群”,然后把您分享的文章的链接发我即可。