add Notification channels
配置 看板曲线图
SELECT * FROM ipad_electricitytable where time > now() - 1h GROUP BY ip
influxdb sql
查询1个小时内数据并按 ip 分组显示
配置曲线图监控报警
代码是个大致思路,不一定可以运行
# -*- coding: UTF-8 -*-
import requests
from flask import jsonify
import json
import datetime
import requests, os, time
from time import sleep
from flask import Flask, request, session, render_template, redirect, flash
def webhook_url_ipad(params,url_webhook):
headers = {"Content-type": "application/json"}
url = url_webhook
r = requests.post(url, params, headers)
def grafana_alert(types, levels, times, instances, messages):
params = json.dumps({"msgtype": "text", "text": {
"content": "####[Prometheus告警信息]\n告警类型: {0}\n告警级别: {1}\n故障时间: {2}\n故障实例: {3}\n故障信息: {4}".format(types,
levels,
times,
instances,
messages)}})
return params
def grafana_send_alert(name, level, time1, instance, message):
webhook_url(grafana_alert(types=name, levels=level, times=time1, instances=instance, messages=message))
def grafana_send_alert_test(name, level, time1, instance, message, url_webhooke):
webhook_url_test(grafana_alert(types=name, levels=level, times=time1, instances=instance, messages=message), url_webhook)
@app.route('/grafana_alert_test', methods=['POST'])
def grafana_alert_for():
Time = time.strftime("%Y-%m-%d %H:%M:%S")
data1 = request.get_data()
data = data1.decode("utf-8")
json_re = json.loads(data)
print("json_reZ######", json_re)
arg = {}
altet_name = json_re['ruleName']
alert_mes = json_re['message']
alert_info = json_re['evalMatches']
for x in alert_info:
value = x['value']
tag_ip = x['tags']['ip']
json_str = 'electricity: ' + str(value)
json_str1 = 'IP: ' + str(tag_ip) + ', Value: ' + str(value)
if tag_ip:
try:
grafana_send_alert_test(name=altet_name, level='warning', time1=Time, instance=tag_ip,
message='{t1} \n {t2}'.format(t1=alert_mes, t2=json_str),url_webhook='https://qyaddddddddddddddb6')
arg = {'status': True, 'message': alert_info, 'time': Time}
except Exception as e:
arg['status'] = False
arg['message'] = str(e)
arg['time'] = Time
print("###send-mes beijing:", arg)
else:
print("###send-mes : error" )
print(json_str, "####json_str###")
return json_re
SELECT * FROM ipad_electricitytable where time > now() - 1h and electricity < 20 GROUP BY ip order by time desc limit 1
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。