如何在Grafana中展示多行文本以显示Ubuntu服务器的失败服务
操作步骤
1. 调整Telegraf采集配置
首先确保你的Telegraf inputs.exec 配置可以正确解析脚本输出写入InfluxDB,推荐两种实现方式:
- 方式一:修改原有脚本输出为InfluxDB Line Protocol格式,示例脚本逻辑:
#!/bin/bash failed_services=$(systemctl list-units --state=failed --no-legend --plain | awk '{print $1}') if [ -z "$failed_services" ]; then echo "failed_services,service=none count=0" else for svc in $failed_services; do desc=$(systemctl show -p Description "$svc" | cut -d= -f2) echo "failed_services,service=$svc,description=\"$desc\" count=1" done fi
对应的Telegraf配置示例:
[[inputs.exec]] commands = ["/path/to/your/show_failed_services.sh"] interval = "10m" data_format = "influx"
- 方式二:不修改脚本,配置Telegraf用csv格式解析原有表格输出:
[[inputs.exec]] commands = ["/path/to/your/show_failed_services.sh"] interval = "10m" data_format = "csv" csv_header_row_count = 1 csv_skip_rows = 1 csv_column_names = ["UNIT", "LOAD", "ACTIVE", "SUB", "DESCRIPTION"] csv_tag_columns = ["UNIT", "LOAD", "ACTIVE", "SUB", "DESCRIPTION"] csv_measurement_name = "failed_services"
配置修改后重启Telegraf服务:systemctl restart telegraf
注意:请确保Telegraf运行用户有脚本的执行权限,若脚本需要执行systemctl相关命令需要特殊权限,可将Telegraf用户加入systemd-journal组或者配置对应的sudo免密规则。
2. 验证InfluxDB数据写入
登录InfluxDB实例,执行查询确认数据正常上报:
- 若用InfluxQL:
SELECT * FROM failed_services WHERE time > now() - 20m
- 若用Flux:
from(bucket: "你的bucket名称") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r._measurement == "failed_services")
如果可以查询到对应服务名称、描述等字段,说明数据写入正常。
3. Grafana面板配置
- 新建面板,选择Table类型作为可视化组件
- 配置数据源为你的InfluxDB实例,根据你使用的查询语言写对应查询语句,查询维度选择
UNIT(服务名)、DESCRIPTION(服务描述)等你需要展示的字段 - 可选配置:
- 可以添加阈值规则,只要查询返回行数大于0就将面板标红,直观显示有失败服务
- 可以添加转换规则,将
count字段值为0的行过滤掉,避免无失败服务时展示空行/占位行 - 可以配置告警规则,当存在失败服务时发送通知
内容的提问来源于stack exchange,提问作者Radu Boboc
相关产品推荐
相关产品推荐

