initial commit

This commit is contained in:
Adam Rabjerg
2021-06-19 13:40:53 +02:00
commit f1faca41d1
7 changed files with 89 additions and 0 deletions

25
flask_webhook_server.py Normal file
View File

@@ -0,0 +1,25 @@
#!/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)