运维监控系统实战笔记
秦晓辉
快猫星云联合创始人,Open-Falcon、Nightingale、Categraf 核心研发
9147 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 25 讲
运维监控系统实战笔记
15
15
1.0x
00:00/00:00
登录|注册

08|如何用 Nightingale 解决 Prometheus 的告警管理问题?

你好,我是秦晓辉。上一讲我们聊到了 Prometheus 的存储问题,并提出了 3 种增强方案,这一讲我们继续关注 Prometheus 的另一个问题——告警管理。
Prometheus 的告警规则、记录规则都是采用配置文件的方式管理的,非常适合奉行 Infrastructure as Code 的公司或团队内部使用。但如果要把监控能力开放给全公司,就需要有较好的支持协同操作的 UI,让各个团队互不干扰的同时共享一些通用的成果。
解决这个需求的开源产品,有两款备选,一个是 Grafana,另一个是夜莺(Nightingale)。Grafana 擅长可视化,是监控绘图领域事实上的标准,而夜莺的侧重点是告警管理,所以这一讲我们重点来介绍一下夜莺,我们可以通过夜莺搭建公司级的监控系统,把监控告警能力赋予公司所有的团队。

夜莺简介

夜莺最初是滴滴开源的,之后捐赠给了中国计算机学会开源发展委员会(CCF ODC),目标是整合云原生开源生态的众多能力,为用户提供开箱即用、一体化全方位的云原生监控解决方案。
我们先来看一下夜莺的架构,对夜莺的工作模式有个基本的认识。
夜莺的单机部署架构(图片源自Nightingale官网)
左下角 Agents 表示监控数据采集器,夜莺可以对接多种 Agent,比如 Categraf、Telegraf、Grafana-Agent、Datadog-Agent。这些 Agent 都是 PUSH 模型,周期性采集监控数据,然后推给 Server 的 HTTP 接口。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Nightingale 是一个开源的告警管理工具,旨在解决 Prometheus 的告警管理问题。它提供了一体化全方位的云原生监控解决方案,通过整合多种能力,为用户提供开箱即用的监控系统。Nightingale 的架构包括监控数据采集器、Server、时序库和Webapi模块,支持多种采集器的数据采集方式。部署 Nightingale 可以通过 Docker compose 或 Kubernetes 和 Helm 完成。Nightingale 的告警管理功能包括规则管理、规则配置、告警屏蔽、告警订阅和历史告警存档。它引入了业务组的概念,使得每一条规则都归属于某一个业务组,实现了更好的协同管理。此外,Nightingale 还提供了丰富的告警规则配置、历史事件存档、活跃事件聚合查看等增强功能,使得告警管理更加直观和灵活。 Nightingale 的告警管理方式类似于 Datadog,每个团队配置自己的告警规则,发给自己这个团队,不需要把告警规则和接收规则拆到两个地方分别配置,更加直观。总的来说,Nightingale 提供了一种更加灵活、直观的告警管理方式,适用于大规模团队协同操作的监控系统。 Nightingale 的告警管理功能包括活跃告警聚合、告警自愈和失联告警。活跃告警功能支持自定义聚合规则,方便分类查看未恢复的告警。告警自愈功能支持自动触发恢复动作,通过脚本执行实现告警自愈,同时需要权限管控和业务组机制支持。失联告警功能通过自动解析监控数据标识实现机器失联的监控,大大简化了配置管理。对于已经使用 Prometheus Yaml 文件管理的规则,可以不用迁移,而新规则可以使用 Nightingale 管理。总的来说,Nightingale 提供了灵活、直观的告警管理方式,适用于大规模团队协同操作的监控系统,是解决 Prometheus 告警管理问题的有效工具。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《运维监控系统实战笔记》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • 骁毅
    “因为 Prometheus 的 Yaml 文件管理方式不太方便做公司级协同管理。Grafana 和夜莺都可以解决这个问题,” grafana可以对prometheus的yaml进行管理么?

    作者回复: 不能,grafana是自己实现了告警引擎,用grafana自己的告警机制就可以了

    2023-02-19归属地:天津
    2
    2
  • Geek_1a3949
    尝试回答下课后问题: 告警表达式是带判断的PromQL,查询到值表示触发了阈值,查询不到表示未触发; 而告警恢复的时候,PromQL表达式返回空值,故没有$value。

    作者回复: 👍🏻

    2023-01-29归属地:上海
    3
    2
  • KEIO
    老师 请教一下 可以对比一下Grafana和Altermanager的告警管理能力吗?

    作者回复: Grafana是个单点,如果告警规则很多,可能会有瓶颈;其次是Grafana的告警规则配置我是感觉真难用,不知道其他人怎么看。alertmanager不负责告警规则管理,只负责告警事件的后续,对于告警事件的后续处理,包括分组、屏蔽、抑制,还是比较齐全的,不过alertmanager更多的是给一个团队使用,如果很多团队都使用一个alertmanager来管理告警,就容易混乱,需要制定良好的规范,需要制定良好的规范,需要制定良好的规范,重要的事情说三遍

    2023-01-28归属地:重庆
    3
    2
  • 隆哥
    快猫的采集器我觉得很好,基本覆盖了常用服务的数据采集,只需要修改配置一下就可以了。但是我有一个疑惑,比如我监控几百台服务器,每台服务器有可能有不同的服务需要被采集,如果这样子的话,快猫服务采集的那些配置文件如何管理呢?用表格来做扁平化管理嘛。

    作者回复: 配置管理这块,建议是ansible、puppet之类的工具,telegraf、datadog-agent这些目前也都是修改配置文件的方式,后面也有考虑在Nightingale里开放agent的配置管理能力,不过还没有时间搞

    2023-01-31归属地:福建
    1
  • Amosヾ
    原生k8s支持告警自愈吗?webhook的方式

    作者回复: 这个问法欠妥,K8s本身是可以处理节点故障自动迁移pod的,从这个角度来讲,是有告警自愈的能力的。webhook是prometheus、nightingale等这种监控系统的职能,产生告警之后通过webhook调用第三方的系统,prometheus、nightingale、zabbix等都可以做

    2023-01-25归属地:江苏
    1
  • peter
    请教老师几个问题: Q1:server与Redis之间的心跳有什么作用? Q2:webapi没有界面吗? “Webapi 模块提供 HTTP 接口,与前端 JavaScript 交互”,从这句话看,好像webapi没有界面。 “浏览器访问 nwebapi 提供的 18000 端口就能看到登录页面”,从这句话看,好像webapi有界面。 Q3:架构图中,agents和exporter都采集数据,有什么区别? Q4:Prometheus和Nightingale都可以处理告警,采用Nightingale后,就禁掉Prometheus自身的告警功能,是这样吗?

    作者回复: 1,server使用redis心跳,这样所有的server就都知道活着的server的列表,然后就可以做分片逻辑,每个server只处理一部分告警规则 2,界面是js、css、html渲染的,这些静态资源文件可以使用nginx来serve,也可以使用webapi来serve,js拉取数据是走的webapi的接口 3,agent是推,exporter是拉 4,是的

    2023-01-25归属地:北京
    1
  • stray
    现在使用的是peometheus的采集器,想改成categraf,如何能实现平滑变更,变更完后监控图表等都不变,减少对客户的影响。

    作者回复: 其实图表方面已经用了 Exporter,已经用了 Grafana 完全不用迁移,夜莺比较擅长的是告警管理,看图完全可以继续使用 Grafana 的

    2024-03-12归属地:北京
  • 机智的路易
    老师你好,我们公司最近在调研夜莺,请问边缘侧server端拉prometheus,如果server挂了怎么办,server需要保证高可用吗?

    作者回复: 夜莺v6边缘部署的是n9e-edge模块,n9e-edge可以部署多个实例组成集群,挂了一个不影响

    2023-11-22归属地:江苏
  • 祥贵
    夜莺分为开源版和企业版,开源版能解决这些问题?

    作者回复: 可以

    2023-06-11归属地:四川
  • 云韵
    docker 部署的方式不支持Mac的arm64架构吗

    作者回复: v6.0.0.ga.3 应该是支持的,我是macbook m1,是可以的

    2023-04-12归属地:浙江
    2
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部