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

02|基本概念:监控圈子有哪些行业黑话?

你好,我是秦晓辉。
上一讲我们介绍了监控解决的问题域,并对业界常见开源方案做了横评对比。这一讲我们继续学习监控的相关概念,包括监控、监控指标、指标类型、时序库,还有告警收敛与闭环等。理清监控圈子的这些常用术语之后,我们学习起来会更轻松一些。
监控这个词在不同的上下文中含义会有一些区别,一般我们说监控 MySQL、监控 Redis 的时候,都是指能够采集到 MySQL、Redis 的监控数据,并能可视化展示。这时候监控表示数据采集和可视化,不包括告警引擎和事件处理。但当我们讲监控系统的时候,因为说的是整个系统,所以也会包含告警和事件发送等相关功能。
监控体系中最基础的是监控指标,监控系统就是围绕指标的采集、传输、存储、分析、可视化的一个系统,下面我们就从监控指标这个概念讲起。

监控指标

监控指标是指数值类型的监控数据,比如某个机器的内存利用率,某个 MySQL 实例的当前连接数,某个 Redis 的最大内存上限等等。不同的监控系统,对于监控指标有不同的描述方式,典型的方式有三种,下面我们分别介绍一下。

全局唯一字符串作为指标标识

监控指标通常是一个全局唯一的字符串,比如某机器的内存利用率 host.10.2.3.4.mem_used_percent,这个字符串中包含了机器的信息,也包含了指标名,可以唯一标识一条监控指标。假设监控数据采集的频率是 30 秒,2 分钟内采集了 4 个数据点,一个数据点包含一个时间戳和一个值,我们看一下如何用 JSON 表示这个监控指标及其监控数据。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

监控系统中的关键概念和技术特点是监控领域的重要基础,本文深入介绍了监控、监控指标、指标类型、时序库以及告警收敛与闭环等内容。监控指标作为系统基础,通过全局唯一字符串、标签集的组合以及Influx指标格式等方式进行描述,对于读者快速了解监控系统具有重要意义。此外,文章还介绍了Histogram直方图类型和Summary摘要类型,以及时序库的概念和告警收敛与闭环的重要性。这些内容对于想要深入了解监控系统的读者来说,是一份具有价值的技术资料。监控系统的基础知识是整个监控体系知识蓝图的根基,而不同的监控产品有不同的描述方式,但随着OpenMetrics标准的建立,指标描述方式会逐渐趋于一致。指标类型的核心作用在于采集侧埋点时,SDK会根据数据类型做不同的计算逻辑。时序库作为存储时序序列数据的数据库,随着IoT的场景越来越多,以及微服务的发展,时序库这个话题也越来越流行。最后,告警事件层面的话题是所有监控系统都需要处理的,也可以作为一个专门的产品和多种监控系统对接,专注处理告警事件。这些内容为读者提供了全面了解监控系统的基础知识和技术特点的机会。

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

全部留言(33)

  • 最新
  • 精选
  • 徐石头
    置顶
    想参照课程给公司开发一套监控系统,把k8s,Redis,MySQL,Elasicsearch,Kafka综合在一个系统里,大公司运维监控比较完善,针对小公司的监控系统应该怎么做,要从哪些方面入手?希望老师多考虑下小公司,一方面小公司更多,另一方面运维监控非常匮乏,人员有限,确实是痛点

    作者回复: 纯个人见解哈一起探讨:小公司千万不要自研监控系统,开源的监控系统其实都挺强大了,如果基于开源的二开,后面开源的升级又不好跟进,如果不再跟进,负责二开的人离职,后面新接手的人可能不认可这个做法或者找不到接手的人,容易一地鸡毛,后来人会背地里骂这个二开的人的。 二开的初衷,可能是开源产品某些功能不符合自己公司的需求。其实真的有那么多定制化需求么?火爆的开源软件可能都是几千上万github star,很多公司在用,我们的需求真的就那么特殊么?需要仔细再调研一下。很可能是开源软件也有这个功能,我们可能不知道。 如果最终还是准备二开,建议: 1,尽量不改开源软件的代码,基于它的API做封装 2,如果必须要改,觉得某些改动是通用需求,就提pr,merge回这个开源软件,这样别人也可以帮你review这个设计和代码,你也可以提升个人影响力,开源社区很欢迎这类pr,所有公司都受益 上面主要是说的二开的问题,如果是完全自研,嗯,,,应该不会完全自研吧,这个时代,几乎没有完全自研的软件了.... 如果你被公司招聘来就是做监控系统的,不搞点事情就没饭吃,怎么整?建议多做一些最佳实践,在某些点上做透,做一些场景化的解决方案,看看监控系统的用户的痛点是什么,很多事情可以干的

    2023-01-11归属地:湖南
    7
    31
  • 怀朔
    这是一个误报

    作者回复: 哈哈哈

    2023-01-11归属地:上海
    17
  • hshopeful
    关于监控,脑海中有几句话想跟大家分享下: 1、当 facebook 还是 facebook 的时候,它开源的 gorilla 时序数据压缩算法特别适合监控领域的数据存储,prometheus 中已经采用 2、对监控指标进行流式聚合计算的时候,数据准确性和时效性需要做出 tradeoff 3、当你的监控告警指标太多的时候,相当于没有指标,一定要筛选出核心待关注的监控告警指标 4、怎么对监控系统本身进行监控

    作者回复: 👍

    2023-01-11归属地:上海
    3
    12
  • April
    老师能根据Summary给个示例吗?没太理解

    作者回复: Summary通常也是用于统计接口的延迟,姑且可以理解为: 比如某个接口 /api/v1/login 服务每次收到这个接口的请求,就通过SDK记录一下延迟,比如第一次演示3ms,第二次5ms,第三次4ms,,,第1000次3ms Summary 的逻辑就是把这1000个数值从小到大排序,然后就可以取第99%的位置的那个值作为99分位的值上报,取第90%的位置的那个值作为90分位的值上报,当然也会计算这1000个值的最大值、最小值、平均值上报。 这个计算是在进程颗粒度的,不是在服务级别的,服务级别的计算只能通过Histogram,把多个进程的指标汇聚到一起计算

    2023-01-11归属地:上海
    3
    7
  • 呵呵
    指标格式对比没太看懂,是想表达influx的全是kv,opentsdb的不全是。所以同一时间的消息,influx能少传几条,省了n个时间戳?怎么就标签重复的低了?不还是kv吗?

    作者回复: 不是。大家其实都是支持标签的。我想表达的是influx格式在多个field的场景,会减少标签传输量,比如cpu的指标:influx来描述的话是这么一条: cpu,cpu=cpu0,host=loaner time_active=202224.15999999992,time_guest=30250.35,time_guest_nice=0,time_idle=1527035.04,time_iowait=1352,time_irq=0,time_nice=169.28,time_softirq=6281.4,time_steal=0,time_system=40097.14,time_user=154324.34 1568760922000000000 如果用opentsdb来描述就是这样的: cpu.time_active 202224.15999999992 1568760922 cpu=cpu0 host=loaner cpu.time_guest 30250.35 1568760922 cpu=cpu0 host=loaner cpu.time_guest_nice 0 1568760922 cpu=cpu0 host=loaner cpu.time_idle 1527035.04 1568760922 cpu=cpu0 host=loaner cpu.time_iowait 1352 1568760922 cpu=cpu0 host=loaner cpu.time_irq 0 1568760922 cpu=cpu0 host=loaner cpu.time_nice 169.28 1568760922 cpu=cpu0 host=loaner cpu.time_softirq 6281.4 1568760922 cpu=cpu0 host=loaner cpu.time_steal 0 1568760922 cpu=cpu0 host=loaner cpu.time_system 40097.14 1568760922 cpu=cpu0 host=loaner cpu.time_user 154324.34 1568760922 cpu=cpu0 host=loaner 这里每一行里都有 cpu=cpu0 host=loaner 这俩标签,当然,每一行也都要传输时间戳,重复度比较高,会多一些字符串传输成本

    2023-01-11归属地:上海
    6
    7
  • 无名无姓
    针对prom每个类型展现一个实例比较好

    作者回复: Gauge类型举例:房间里的人数、队列积压的消息数、今年公司的收入和净利润 Counter类型举例:操作系统自启动以来网卡接收到的所有流量包的数量 Histogram、Summary:典型的就是用于描述延迟数据,比如HTTP接口、RPC接口的延迟数据

    2023-01-11归属地:上海
    2
    6
  • 臭猫
    warning:xx节点cpu使用率超过80%,持续时间超过5分钟

    作者回复: 哈哈 🤝

    2023-01-11归属地:上海
    6
  • 蓝熊船长
    来催个更。正在负责新项目的监控这块。补齐一下地图。期待

    作者回复: 每周一三五零点更新,努起来 :)

    2023-01-11归属地:上海
    2
  • 王二木
    自愈

    作者回复: 👍

    2023-01-30归属地:北京
    1
  • 打卡主持人
    太强了😯看完清晰多了

    作者回复: 🤝🤝

    2023-01-11归属地:上海
    1
收起评论
显示
设置
留言
33
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部