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

如何将Bash脚本输出自动接入Prometheus并在Grafana可视化?

问题

我在Kubernetes主节点上运行一个每周执行一次的Bash脚本,它会生成如下格式的输出并保存为CSV文件,原本是通过邮件发送给相关人员:

12/21/2022: 300
19/12/2022: 450

同一服务器上的Prometheus是以Kubernetes Pod形式运行在独立命名空间的,而Grafana部署在中心化服务器上。我想替换掉邮件发送的方式,把这些CSV数据在Grafana里做成可视化图表,方便团队查看并关联其他监控数据。目前我找到了手动导入谷歌表格的方法,但想知道有没有办法通过脚本自动把结果推送到Prometheus,再以Prometheus为数据源在Grafana创建仪表盘?

解决方案

完全可以实现自动推送数据到Prometheus并在Grafana可视化,最适合这种批处理任务的方式是用Prometheus Pushgateway,下面是具体步骤:

1. 部署并配置Pushgateway

Pushgateway是Prometheus生态里专门用来接收临时、批处理或定时任务产生的指标的组件,Prometheus会定期从它这里拉取数据。

  • 在Kubernetes里部署Pushgateway:用Deployment+Service的方式部署(和Prometheus同命名空间或单独命名空间都可),确保Prometheus能访问到它的Service地址。
  • 配置Prometheus的Scrape Job:在Prometheus配置中添加针对Pushgateway的抓取任务,示例配置如下:
    scrape_configs:
      - job_name: 'pushgateway'
        static_configs:
          - targets: ['pushgateway-service:9091']
    
    配置完成后,Prometheus会定期拉取Pushgateway上的指标。

2. 修改Bash脚本,推送数据到Pushgateway

需要把脚本输出的CSV格式转换成Prometheus能识别的指标格式,再用curl推送到Pushgateway。

  • 先清理Pushgateway中对应任务的旧数据(避免重复推送导致数据混乱),再逐行处理CSV内容,把日期转换成Unix时间戳(注意你的日期格式是DD/MM/YYYY,需要调整转换逻辑),构造符合Prometheus规范的指标行。
  • 示例脚本片段:
    # 假设脚本输出已保存到output.csv文件
    # 清理Pushgateway中对应任务的旧数据
    curl -X DELETE http://pushgateway-service:9091/metrics/job/weekly_data_task
    
    # 逐行处理CSV并推送指标
    while IFS=": " read -r date_str metric_value; do
        # 将DD/MM/YYYY格式转换为MM/DD/YYYY后生成Unix时间戳
        formatted_date=$(echo "$date_str" | awk -F/ '{print $2"/"$1"/"$3}')
        timestamp=$(date -d "$formatted_date" +%s)
        # 构造Prometheus指标(自定义指标名和标签)
        echo "weekly_business_metric{task=\"weekly_data_export\"} $metric_value $timestamp"
    done < output.csv | curl --data-binary @- http://pushgateway-service:9091/metrics/job/weekly_data_task
    
    其中weekly_business_metric是自定义的指标名,标签可以根据业务需求添加(比如环境、任务类型等)。

3. 在Grafana创建可视化仪表盘

  • 确保Grafana已配置Prometheus作为数据源。
  • 创建新面板,选择折线图或柱状图,在查询编辑器中输入你的指标名(比如weekly_business_metric),即可看到每周推送的数据。
  • 可以调整面板的时间范围(比如设置为“最近90天”),并把X轴的时间格式设置为日期,方便对应数据点的查看。

其他可选方案

如果你的Prometheus配置了远程写(比如对接Thanos、Mimir等),也可以直接把指标推送到远程写端点,但这种方式复杂度更高,不如Pushgateway适合这类定时批处理任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:10:28