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

如何让Grafana Agent采集自定义脚本执行状态指标?

用Grafana Agent采集自定义脚本执行状态指标

不需要额外部署exporter或Web服务,直接用Grafana Agent内置的exec采集能力就能实现,步骤如下:

1. 编写状态检测脚本

创建一个Shell脚本(比如check_hourly_script.sh),用来检测success/fail文件的存在性,直接输出Prometheus格式的指标:

#!/bin/bash
# 替换为你的实际文件路径
SUCCESS_FILE="/opt/scripts/success.txt"
FAIL_FILE="/opt/scripts/fail.txt"

# 失败状态优先级高于成功
if [ -f "$FAIL_FILE" ]; then
  echo "script_execution_status{job=\"hourly_script\"} 0"
  rm -f "$SUCCESS_FILE"  # 清理冲突文件,避免状态混乱
elif [ -f "$SUCCESS_FILE" ]; then
  echo "script_execution_status{job=\"hourly_script\"} 1"
  rm -f "$FAIL_FILE"
else
  # 脚本未执行或状态文件已被清理时的默认状态
  echo "script_execution_status{job=\"hourly_script\"} -1"
fi

给脚本添加执行权限:

chmod +x /opt/scripts/check_hourly_script.sh

如果需要检测XML文件内容,可在脚本里增加逻辑(比如用grep匹配成功标识),再输出对应指标值即可。

2. 配置Grafana Agent

根据你使用的Agent模式选择对应配置:

Flow模式(推荐)

在Agent的river配置文件(如agent.river)中添加以下组件,让Agent定期执行检测脚本并采集指标:

# 执行检测脚本,输出Prometheus指标
prometheus.exporter.exec "hourly_script_check" {
  command = ["/opt/scripts/check_hourly_script.sh"]
  interval = "1m"  # 每分钟检测一次,确保及时获取状态
}

# 采集上述指标并转发到Grafana后端
prometheus.scrape "default" {
  targets    = prometheus.exporter.exec.hourly_script_check.targets
  forward_to = [prometheus.remote_write.default.receiver]
}

# 配置远程写入,替换为你的Grafana实例地址和认证信息
prometheus.remote_write "default" {
  endpoint {
    url = "https://your-grafana-instance/api/prom/push"

    basic_auth {
      username = "your-username"
      password = "your-password"
    }
  }
}

传统模式

在Agent的YAML配置文件中添加scrape任务:

metrics:
  configs:
  - name: default
    scrape_configs:
    - job_name: 'hourly_script_check'
      scrape_interval: 1m
      exec:
        command: ["/opt/scripts/check_hourly_script.sh"]
    remote_write:
    - url: "https://your-grafana-instance/api/prom/push"
      basic_auth:
        username: "your-username"
        password: "your-password"

3. 在Grafana仪表盘添加状态面板

  1. 新建一个Stat或Gauge面板
  2. 面板查询语句:script_execution_status{job="hourly_script"}
  3. 配置值映射:
    • 值1 → 显示"成功",设置绿色标识
    • 值0 → 显示"失败",设置红色标识
    • 值-1 → 显示"未执行",设置灰色标识
  4. 面板标题设为"每小时脚本任务状态"

关键说明

  • 无需使用any-json-to-metrics exporter,通过自定义脚本直接输出Prometheus格式指标,完全由Grafana Agent本地采集
  • 检测脚本的逻辑可灵活调整,比如验证XML内容、脚本执行时间戳等,适配不同需求
  • 调整interval参数可控制状态检测的频率,确保状态变化能及时同步到仪表盘

内容的提问来源于stack exchange,提问作者threaderwharf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:15:56