讲到监控,Prometheus 应该算是最常被提及的其中一个工具,它是一套开源的监控与警报系统,最早由 SoundCloud 开发,并在 2016 年进入 CNCF 孵化器,後来於 2018 年毕业。
那麽,Prometheus 究竟是做什麽用的呢?让我们来看看这张来自官方文件的架构图:
Prometheus 的本体主要包含三个部分:
Prometheus 采用 pull-based 的设计,也就是说并非由我们主动提供数据给 Prometheus server,而是我们在服务上面提供取得指标的方法(通常是透过对 /metrics
发 GET 请求),然後再由 Prometheus 采集指标。在官方文件可以看到已经有许多现成的 exporter,像是昨天提到的需要收集硬碟的使用率,就可以透过官方的 node exporter 做到。
然而在某些情况下,我们可能没办法提供一个可以拉取的介面给 Prometheus,这时候就需要主动推送指标给 Pushgateway,让他暂存这些指标,然後再由 server 去采集这些指标收进 TSDB 里面。具体的应用场景可以参考官方文件的分析。
警报也是监控系统里面很重要的一环,Prometheus 里面就有提供一个专门做警报的元件,称为 Alertmanager,它可以收集从 Prometheus server 送过来的警报,再依据我们设立的规则分配至像是 email 或是 slack 等地方。
在 Prometheus 里面,所有的资料都会被储存为 time series,也就是说每一笔资料都会配上一个时间戳。而指标除了储存单个数字以外,还可以在上面加上标签 (label) 以帮助我们替指标分类,举昨天谈到的黄金讯号之一的延迟来说好了,今天我们纪录了 HTTP 请求的处理时间,我们来可以替它加上像是 status code、URL 等等的标签,就可以帮助我们分离成功跟失败的请求,更好地反应出服务现在的状态。
今天打的内容比我想像中的还要少不少...本来还希望可以把 Prometheus 跟一些其他常用的工具做一些比较的,像是跟 InfluxDB (TICK stack),或是 Thanos、Cortex 之类的解决方案;也有打算来谈谈有关 OpenTelemetry 与监控生态圈的关系,或者说规范这件事对於软件开发的影响。
无奈於自身实务经验实在是不足,我就先将一些我看到的参考资料列在下方,希望有朝一日有机会可以补足这份遗憾吧。
<<: 【Day 06】LeetCode:Two Sum ( 用 JavaScript 学演算法 )
前言 昨天讲了 display 当中的 Flex 属性 那今天就要来讲 display 当中的 Ju...
OAuth 2.0 指定了存取资源的存取令牌,但它没有提供提供身份信息(ID Token)的标准方...
定义 重复性的执行某个操作,一直做一样的事情,有终止条件。 较常用的回圈 for while do…...
今天拉回 python 来介绍 psycopg2,这个套件可以跟 postgres 进行互动。我们依...
我们在这里用到了文字编辑器, 我们使用的是CKEditor, 可以到 这边 下载 也可以参照 官方文...