1

add Notification channels

image.png

image.png

配置 看板曲线图

image.png

SELECT * FROM ipad_electricitytable where time > now() - 1h GROUP BY ip
  • influxdb sql

    查询1个小时内数据并按 ip 分组显示

image.png

配置曲线图监控报警

image.png

代码是个大致思路,不一定可以运行

# -*- 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

image.png

SELECT * FROM ipad_electricitytable where time > now() - 1h and electricity < 20  GROUP BY ip  order by time desc limit 1

添加influxdb的图表

image.png

image.png


锅包肉
89 声望17 粉丝

这个人很懒,没有什么说的。


引用和评论

0 条评论