运维监控系统实战笔记
秦晓辉
快猫星云联合创始人,Open-Falcon、Nightingale、Categraf 核心研发
7894 人已学习
新⼈⾸单¥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
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《运维监控系统实战笔记》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • KEIO
    老师 请教一下 可以对比一下Grafana和Altermanager的告警管理能力吗?

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

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

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

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

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

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

    作者回复: 👍🏻

    归属地:上海
    3
    1
  • Amosヾ
    原生k8s支持告警自愈吗?webhook的方式

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

    归属地:江苏
    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,是的

    归属地:北京
    1
  • 祥贵
    夜莺分为开源版和企业版,开源版能解决这些问题?

    作者回复: 可以

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

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

    归属地:浙江
    2
  • GentleQ
    老师,请问告警检测是在Agent推指标到Server时做的,还是Server定期从Prometheus里拉指标进行检测的呢

    作者回复: 是Server定期从Prometheus里拉指标进行检测

    归属地:广东
    3
  • SICUN
    老师能不能谈一下边沿触发告警和周期触发告警的适用场景?

    作者回复: 没看懂

    归属地:北京
    2
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部