从 Telegraf 向 Grafana 流式传输指标
介绍
Grafana v8 引入了流式传输功能 - 一种将数据以近乎实时的速度推送到 UI 面板的方式。在本教程中,我们将展示如何将 Grafana 实时流式传输功能与 Telegraf 结合使用,以即时显示系统测量值。
在本教程中,您将
- 设置 Telegraf 并将测量值直接输出到 Grafana 时间序列面板,以实现近乎实时的效果
先决条件
- Grafana 8.0+
- Telegraf
运行 Grafana 并创建管理员令牌
- 按照 安装说明 针对您的操作系统运行 Grafana。
- 登录并转到“配置” ->“API 密钥”。
- 按下“添加 API 密钥”按钮并创建一个新的 API 令牌,并赋予“管理员”角色。
配置和运行 Telegraf
Telegraf 是一款插件驱动的服务器代理,用于收集和发送来自数据库、系统和物联网传感器的指标和事件。
您可以按照 官方安装说明 进行安装。
在本教程中,我们将使用 Telegraf HTTP 输出插件以 Influx 格式将指标发送到 Grafana。我们可以使用如下配置
[agent]
interval = "1s"
flush_interval = "1s"
[[inputs.cpu]]
percpu = false
totalcpu = true
[[outputs.http]]
url = "https://127.0.0.1:3000/api/live/push/custom_stream_id"
data_format = "influx"
[outputs.http.headers]
Authorization = "Bearer <Your API Key>"
确保将 <Your API Key>
占位符替换为在上一步骤中创建的实际 API 密钥。将此配置保存到 telegraf.conf
文件中,并运行 Telegraf 指向此配置文件。Telegraf 将定期(每秒一次)将主机上的总 CPU 使用率状态报告给 Grafana(应该在 https://127.0.0.1:3000
上运行)。当然,您可以将 custom_stream_id
替换为更符合您的用例的名称。
在 Grafana 中,Influx 数据将转换为 Grafana 数据帧,然后帧将发布到 Grafana Live 通道。在本例中,发布 CPU 数据的通道是 stream/custom_stream_id/cpu
。stream
范围是恒定的,custom_stream_id
命名空间是 Telegraf 配置中设置的 API URL 的最后一部分(https://127.0.0.1:3000/api/live/push/telegraf
),路径是 cpu
- 测量的名称。
这里唯一剩下的就是创建一个带有流式传输数据的仪表盘。
使用流式传输数据创建仪表盘
- 单击左侧菜单中的“仪表盘”。
- 单击“新建”并选择“新建仪表盘”。
- 在空白仪表盘上,单击“+ 添加可视化”。
- 在打开的模态框中,选择
-- Grafana --
数据源。 - 选择
实时测量值
查询类型。 - 找到并为“通道”字段选择
stream/custom_stream_id/cpu
测量值。 - 保存仪表盘更改。
完成这些步骤后,Grafana UI 应订阅通道 stream/custom_stream_id/cpu
,您应该会看到来自 Telegraf 的 CPU 数据以近乎实时的速度更新。
使用 WebSocket 端点流式传输
如果您希望发送高频率更新,则可能希望使用 Telegraf 的 WebSocket 输出插件(在 Telegraf v1.19.0 中引入)而不是上面使用的 HTTP 输出插件。像这样配置 WebSocket 输出插件
[agent]
interval = "500ms"
flush_interval = "500ms"
[[inputs.cpu]]
percpu = false
totalcpu = true
[[outputs.websocket]]
url = "ws://127.0.0.1:3000/api/live/push/custom_stream_id"
data_format = "influx"
[outputs.websocket.headers]
Authorization = "Bearer <Your API Key>"
WebSocket 避免在来自 Telegraf 的每个请求上运行所有 Grafana HTTP 中间件,从而显着减少 Grafana 后端 CPU 使用率。
摘要
在本教程中,您学习了如何使用 Telegraf 将实时指标流式传输到 Grafana。