Files
grafana_twilio_webhook/flask_webhook_server.py
Adam Rabjerg f1faca41d1 initial commit
2021-06-19 13:40:53 +02:00

26 lines
1.2 KiB
Python

#!/usr/bin/env python3
from flask import Flask, request, Response
from twilio_send import send_sms
import datetime
app = Flask(__name__)
@app.route('/grafana_webhook', methods=['POST'])
def respond_2_grafana():
print(request.json)
allowed_Url = 'https://grafana.home:443/' # Basic source authentication, fill with the URL of your Grafana server
allowed_remote_addr = ["127.0.0.1"] # Only webhooks form these addresses are allowed to send SMS
payload = f"Grafana alert: {datetime.datetime.now().strftime('%d-%m-%Y %H:%M:%S')}\n\n" \
f"Alert type: \"{request.json['ruleName']}\"\n\n" \
f"Alert state: \"{request.json['state']}\"\n\n" \
f"Message: \"{request.json['message']}\"\n\n" \
f"Metric. Value.\n"
for metric in request.json['evalMatches']:
payload += f"{metric['metric']} {metric['value']}\n"
if request.json["ruleUrl"].startswith(allowed_Url) and request.remote_addr in allowed_remote_addr:
send_sms(payload)
else:
print(f"Bad request source. {request.remote_addr} / {request.json['ruleUrl']}")
return Response(status=418)
return Response(status=200)