Files

33 lines
884 B
Python

#!/usr/bin/env python3
from flask import Flask, request
import json
import time
import requests
app = Flask(__name__)
LOKI_PUSH = "http://127.0.0.1:3100/loki/api/v1/push"
@app.route("/alert-relay", methods=["POST"])
def handle_alert():
# 接收Alertmanager告警
am_raw = request.get_json()
# 转Loki标准推送格式
payload = {
"streams": [
{
"stream": {"job": "alertmanager"},
"values": [
# 纳秒级时间戳 + 告警完整json字符串
[str(int(time.time() * 1000000000)), json.dumps(am_raw)]
]
}
]
}
# 推送到Loki
requests.post(LOKI_PUSH, json=payload)
return "success", 200
if __name__ == "__main__":
# 仅本地127.0.0.1监听9080,外部无法访问
app.run(host="127.0.0.1", port=9081, debug=False)