Fluentbit 采集 Node-Exporter 相关的指标

快猫运营团队 2024-10-24 11:22:09

Fluentbit

Fluentbit 擅长采集日志,我们也希望 Fluentbit 能采集机器指标,这样一来,机器上就只需要部署一个 agent 就可以了,便于维护。Fluentbit 支持插件机制,日志有很多插件,指标也有很多插件,从 Fluent Bit 1.8.0 开始,内置了 Node-Exporter 插件,可以采集 Node-Exporter 的指标。本文我们一起来实践一下。

测试环境

  • 操作系统:Macbook M1
  • Fluent Bit 版本:v3.1.9
  • Nightingale 版本:v7.5.0

即,我在 Macbook 上使用 Homebrew 安装了 Fluentbit,想要采集 Node-Exporter 相关的指标,然后推给时序库并展示,之前我的机器上已经有一套使用 Docker compose 搭建的 Nightingale 了,直接复用 Nightingale 的时序库和展示能力。

Fluentbit 配置

[SERVICE]
    flush           1
    log_level       info

[INPUT]
    name            node_exporter_metrics
    tag             node_metrics
    scrape_interval 10


[OUTPUT]
    Name                 prometheus_remote_write
    Match                node_metrics
    Host                 127.0.0.1
    Port                 17000
    Uri                  /prometheus/v1/write
    Log_response_payload True
    add_label ident ${HOSTNAME}
    add_label job fluent-bit

这里的关键是 INPUT 和 OUTPUT,INPUT 部分使用的是 node_exporter_metrics 插件,每 10s 采集一次。给这个插件采集的数据标注为 node_metrics,然后配置了一个 OUTPUT 插件,用于输出指标。

OUTPUT 插件使用的是 prometheus_remote_write,这个插件可以将数据推送到 Prometheus 的 remote_write 端点,这里我使用的是 Nightingale 的 remote_write 端点,所以 Host 和 Port 配置为夜莺的地址,Uri 配置为 /prometheus/v1/write,这样 Fluentbit 就会将采集到的 Node-Exporter 的指标推送到 Nightingale 了。

另外添加了两个参数,一个是 ident,取值为机器名,另一个是 job,取值为 fluent-bit。之后稍等片刻,我们就可以在 Nightingale 上看到这些指标了。

Node-Exporter指标

不过,我看这个指标和最新版本的 Node-Exporter 并不完全一致,说明 Fluentbit 是遵从的一个老版本的 Node-Exporter 的规范。而 Node-Exporter 迭代的比较快,后面 Fluentbit 就没有再跟进了。不过,这个指标已经基本用了,可以看到 CPU、内存、磁盘、网络等指标。

机器数据 Unknown 问题

使用上面的 Fluentbit 配置和夜莺交互,Fluentbit 所在的机器会出现在夜莺的机器列表里,如下图所示:

机器列表

可以看到机器标识正常上报了,即本机的机器名,更新时间也是正常的,但是其他字段都是 Unknown,这个是因为 Fluentbit 毕竟是自成体系的,并不是和夜莺丝滑对接。对于夜莺而言,是期望 agent 调用夜莺的 heartbeat 接口上报各类元信息,但是显然 Fluentbit 不会主动去调用夜莺的 heartbeat 接口,所以就导致了这个问题。

这个问题不是特别严重,你仍然可以查询时序库的数据做告警、配置仪表盘,但是就没法在夜莺里看到齐全的机器元信息,没法使用告警自愈等功能。所以,我们还是建议你使用 Categraf 作为机器上的 agent,这样就可以完美的和夜莺对接了。如果有些数据 Categraf 没法采集,可以再辅以一些 Exporter 之类的工具。

总结

本文介绍了如何配置 Fluentbit 采集 Node-Exporter 的指标,并将这些指标推送到 Nightingale。Fluentbit 作为一个轻量级的日志收集器,也可以用来采集指标,这样就可以只部署一个 agent 了,便于维护。但是 Fluentbit 和 Nightingale 并不是天生一对,所以在使用的时候还是会有一些问题,比如机器数据 Unknown,这个问题不是特别严重,但是还是建议使用 Categraf 作为机器上的 agent,这样就可以完美的和 Nightingale 对接了。

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat