监控采集器选型
1.Telegraf
Telegraf是InfluxData 公司的产品,开源协议是 MIT,主要配合 InfluxDB 使用;Telegraf 也可以把监控数据推给 Prometheus、Graphite、Datadog、OpenTSDB 等很多其他存储,但和 InfluxDB 的对接是最丝滑的;
Telegraf 是指标领域的 All-In-One 采集器,支持各种采集插件,只需要使用 Telegraf 这一个采集器,就能解决绝大部分采集需求。
缺点: 与Prometheus生态集成需要没那么丝滑,需要改造;
PUSH 模型:Telegraf 采集了数据之后调用服务端的接口来推送数据。
2.Exporter
Exporters 用得最广泛
Exporter 是专门用于 Prometheus 生态的组件,Prometheus 生态的采集器比较零散,每个采集目标都有对应的 Exporter 组件,比如 MySQL 有 mysqld_exporter,Redis 有 redis_exporter,交换机有 snmp_exporter,JVM 有 jmx_exporter等
支持2种方式Exporter: 1.外部单独部署Exporter采集Metrics指标;2.中间件组件内置支持了 Prometheus,直接通过自身的 /metrics 接口暴露监控数据,不用再单独伴生 Exporter,简化架构
PULL 模型:不管是 Exporter 还是直接内置支持 Prometheus 协议的各类组件,都提供 HTTP 接口(通常是 /metrics )来暴露监控数据,让监控系统来拉。
3.Grafana-Agent
https://github.com/grafana/agent
Grafana-Agent 是 Grafana 公司推出的一款 All-In-One 采集器,不但可以采集指标数据,也可以采集日志数据和链路数据。开源协议是 Apache 2.0,比较开放。
Grafana-Agent 是如何快速集成各类采集能力的呢?Grafana-Agent 写了个框架,方便导入各类 Exporter,把各个 Exporter 当做 Lib 使用,常见的 Node-Exporter、Kafka-Exporter、Elasticsearch-Exporter、Mysqld-Exporter 等,都已经完成了集成。这样我们就不用到处去找各类 Exporter,只使用 Grafana-Agent 这一个二进制就可以搞定众多采集能力了。
Grafana-Agent 这种集成 Exporter 的方式,完全兼容 Exporter 的指标体系,比如 Node-Exporter。如果我们的场景不方便使用 PULL 的方式来抓取数据,就可以换成 Grafana-Agent,采用 PUSH 的方式推送监控数据,完全兼容 Node-Exporter 的指标。当然,Exporter 种类繁多,Grafana-Agent 不可能全部集成,对于默认没有集成进去的 Exporter,Grafana-Agent 也支持用 PULL 的方式去抓取其他 Exporter 的数据,然后再通过 Remote Write 的方式,将采集到的数据转发给服务端。
Logging日志采集:Grafana-Agent 集成了 Loki 生态的日志采集器 Promtail。
APM链路数据: Grafana-Agent 集成了 OpenTelemetry Collector。
Grafana-Agent 优势: 相当于把可观测性三大支柱的采集能力都建全了。
一个 Agent 搞定所有采集能力有个显而易见的好处,就是便于附加一些通用标签,比如某个机器的所有可观测性数据,都统一打上机器名的标签,后面就可以使用这种统一的标签做关联查询,这个关联能力是这类 All-In-One 采集器带来的最大好处。
4.Categraf
https://github.com/flashcatcloud/categraf
Categraf是快猫团队开源的一款监控采集器,开源协议是 MIT,非常开放。
优点:
- Categraf 的定位类似 Grafana-Agent,支持 metrics、logs、traces 的采集,未来也会支持事件的采集
- 对于同类监控目标的多个实例的场景,又希望做出 Telegraf 的体验。
- 对于所有的采集插件,不但会提供采集能力,也会提供监控大盘、告警规则,让社区开箱即用。
- Categraf 偏重 Prometheus 生态,标签是稳态结构,只采集数值型时序数据,通过 Remote Write 方式推送数据给后端存储,所有支持 Remote Write 协议的时序库都可以对接,比如 Prometheus、VictoriaMetrics、M3DB、Thanos 等等。Categraf 也支持直接读取 prometheus.yml 中的 scrape 配置,对接各类服务发现机制
其他: Datadog-Agent、Metricsbeat
总结: 很多时候,一个采集器可能搞不定所有业务需求,使用一款主力采集器,辅以多款其他采集器是大多数公司的选择。
采集器选型对比
![](https://img.haomeiwen.com/i3575048/21bbedf235bf89ba.png)
网友评论