You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 07:45:04