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

如何将Heroku应用日志推送至Grafana Cloud的Grafana-Loki服务

Heroku JavaScript应用接入Grafana Loki实操指南

你找到的push-to-loki.py核心逻辑只有3步:收集日志内容→按Loki要求的格式组装请求→携带认证信息推送到Grafana Cloud的Loki接口,不需要完全读懂所有代码,按下面步骤修改即可快速落地:

前置准备

先提前准备好3个Grafana Cloud的Loki配置参数,后续所有配置都要用到:

  • Loki实例推送端点URL
  • Loki实例用户名(一般为数字ID)
  • Grafana Cloud API密钥(需要有Loki写入权限)

最简适配方案(无需修改JS应用代码,推荐基础薄弱用户使用)

这种方案直接把Python脚本作为JS应用的日志管道,改3个地方就能用:

  1. 把下载的push-to-loki.py里的配置变量替换为你自己的Loki参数:
# 以下3个变量替换为自己的配置
LOKI_PUSH_URL = "你的Loki推送端点,格式为https://<集群地址>/loki/api/v1/push"
LOKI_USERNAME = "你的Loki实例ID"
LOKI_API_KEY = "你生成的Grafana Cloud API密钥"
# 新增标签用于在Grafana里筛选你的应用日志
DEFAULT_LOG_LABELS = {"service": "heroku-js-app", "env": "production"}
  1. 在你的JS应用根目录下的Procfile里修改启动命令,把应用日志通过管道传给Python脚本处理:
web: node 你原来的应用启动文件路径 | python push-to-loki.py
  1. 在应用根目录新建requirements.txt文件,添加Python脚本依赖:
requests

把上述修改提交后推送到Heroku部署,应用运行产生的所有日志会自动同步到Grafana Cloud Loki。

可选稳定方案(独立日志转发进程,不影响应用运行)

如果你不想修改现有应用的启动配置,可以把Python脚本单独部署为一个Heroku日志接收服务,通过Heroku官方的Log Drain机制同步日志:

  1. 给修改好的Python脚本添加简单的HTTP接收接口,代码参考:
import os
import time
import requests
from flask import Flask, request

app = Flask(__name__)
# 替换为你自己的Loki配置
LOKI_PUSH_URL = "你的Loki推送端点"
LOKI_USERNAME = "你的Loki实例ID"
LOKI_API_KEY = "你的API密钥"
DEFAULT_LABELS = {"service": "heroku-js-app"}

@app.route('/heroku-log-drain', methods=['POST'])
def receive_logs():
    raw_logs = request.data.decode('utf-8').splitlines()
    # 组装Loki要求的推送格式
    loki_payload = {
        "streams": [{
            "stream": DEFAULT_LABELS,
            "values": [[str(int(time.time() * 1000000000)), log] for log in raw_logs]
        }]
    }
    # 推送日志到Loki
    requests.post(
        LOKI_PUSH_URL,
        auth=(LOKI_USERNAME, LOKI_API_KEY),
        json=loki_payload
    )
    return "success", 200

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))
  1. 把这个Python脚本单独部署为一个Heroku应用,记下它的访问域名
  2. 在Heroku后台的你的JS应用设置页,添加Log Drain,地址填https://<你部署的Python应用域名>/heroku-log-drain即可。

排查注意事项

  • 如果日志没有同步,先在本地运行Python脚本手动推送一条测试日志,确认Loki配置参数正确
  • Heroku免费实例休眠不会影响日志同步,只要JS应用运行时日志都会正常推送

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:36:08