1、prometheus短信告警接口实现(python)源码如下:

import subprocess
from flask import Flask
from flask import request
import json
import logging
import requests logging.basicConfig(filename='/log/phone-hook-log.log',
format='%(asctime)s -%(name)s-%(levelname)s-%(module)s:%(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
level=logging.DEBUG) app = Flask(__name__) @app.route('/', methods=['GET', 'POST'])
def home():
msg = ""
msg1 = ""
msg2 = ""
data = json.loads(request.data)
alerts = data['alerts']
for itm in alerts:
logging.info('------------------------itm info------------------\n' + str(itm))
alert_status = itm['status']
alert_level = itm['labels']['severity']
alert_name = itm['labels']['alertname']
alert_summary = itm['annotations']['summary']
alert_value = itm['annotations']['value']
alert_start = itm['startsAt'].split('.')[0].replace('T', ' ')
alert_end = itm['endsAt'].split('.')[0].replace('T', ' ') # 告警触发
if alert_status == "firing":
msg1 = msg1 + "【告警触发】\n" + "告警级别: " + alert_level + "\n告警类型: " + alert_name + "\n监控项目: " + alert_summary + "\n触发时间: " + alert_start + "\n当前数值: " + alert_value + "\n\n"
# 告警恢复
elif alert_status == "resolved":
msg2 = msg2 + "【告警恢复】\n" + "告警级别: " + alert_level + "\n告警类型: " + alert_name + "\n监控项目: " + alert_summary + "\n触发时间: " + alert_start + "\n恢复时间: " + alert_end + "\n当前数值: " + alert_value+ "\n\n" # 手机短信告警配置
if msg1 == "":
msg = msg2
elif msg2 == "":
msg = msg1
else:
msg = msg1 + "\n" + msg2 logging.info('------------------------alert msg-------------------\n' + msg)
smsuser = '111111'
smspass = '1HsbJ3YHe'
extno = '10000'
phones_f = open("/app/phones.txt", 'r')
phones = phones_f.read()
phones_f.close()
logging.info("---------------------phones------------------------\n" + phones)
values = {'account': smsuser,
'password': smspass,
'mobile': phones,
'content': msg,
'extno': extno} '''
post_url = 'http://127.0.0.1:8080/sms?action=send'
try:
req = requests.get(post_url, values)
print (req.text)
except Exception as e:
print (e)
'''
return '<h1>Home</h1>' if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)

  

2、构建dockerfile镜像

FROM python:3.6.4

RUN mkdir -p /app /log

WORKDIR /app

ADD . /app 

# install requirements
RUN pip install -r requirements.txt # run server
CMD python sendPhone.py
cat  requirements.txt
Flask==1.0.2
requests==2.20.1

3、推送到镜像仓库

 docker  push 172.19.0.14/prom/py-hook:v0.0.1 

4、部署

[root@VM_0_48_centos prometheus_hook]# cat phone-hook.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: phone-hook
namespace: monitoring
spec:
template:
metadata:
labels:
app: phone-hook
spec:
containers:
- name: phone-hook
image: 172.19.0.14/prom/py-hook:v0.0.1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5000
name: http volumeMounts:
- name: phone-hook-config-volume
mountPath: /app
- name: phone-hook-volume
mountPath: /log
- name: localtime
mountPath: /etc/localtime resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 200m
memory: 200Mi volumes:
- name: phone-hook-config-volume
configMap:
name: phone-hook-config
- name: phone-hook-volume
persistentVolumeClaim: ##此处使用了永久存储券
claimName: web-hook
- name: localtime
hostPath:
path: /etc/localtime
imagePullSecrets:
- name: registrysecret ---
apiVersion: v1
kind: Service
metadata:
name: phone-hook
namespace: monitoring
spec:
selector:
app: phone-hook
ports:
- name: hook
port: 5000
targetPort: http

5、补充

kubectl create cm phone-hook-config --from-file=./conf -n monitoring
[root@VM_0_48_centos prometheus_hook]# cat conf/phones.txt
18125012766

6、配置告警规则

k8s全方位监控 -prometheus实现短信告警接口编写(python)的更多相关文章

  1. k8s全方位监控-prometheus部署

    1.k8s 监控资源对象 2. prometheus简单介绍. https://github.com/prometheus •多维数据模型:由度量名称和键值对标识的时间序列数据•PromSQL:一种灵 ...

  2. prometheus grafana graylog 钉钉告警 短信告警 电话告警系统 PrometheusAlert

    PrometheusAlert 简介 PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus,日志系统Graylog和数据可视化系统Grafana发出的 ...

  3. zabbix3调用接口发送短信告警

    一.需求 之前使用的邮件告警,由于经常会忽略邮件,所以有时候告警查看的并不及时,所以增加短信告警的,以便及时处理. 二.zabbix-server端的配置 # 需要在zabbix-server端打开A ...

  4. 检查ftp备份数据完整性及短信告警的shell脚本

    发布:thebaby   来源:net     [大 中 小] 检查ftp备份数据完整性及短信告警的shell,有需要的朋友可以参考下. 该脚本实现如下的功能: 对远程备份到ftp服务器的数据完整性及 ...

  5. zabbix系列之十——添加短信告警

    zabbix添加短信告警 1.查看zabbix-server脚本存放路径: [root@GYQ-Prod-Zabbix ~]# grep AlertScriptsPath /etc/zabbix/za ...

  6. zabbix配置短信告警

    zabbix版本:3.0.7 短信服务商:云片网 首先在云片网添加相应签名和模板 参照格式 签名:xxx告警 模板: [xxx告警]故障:#status# 服务器:#host# 发生:#trigger ...

  7. zabbix 利用python脚本实现短信告警

    一.编写脚本 cd /usr/local/zabbix-4.0.3/share/zabbix/alertscripts vi zabbix_sms.py 内容如下: #!/usr/bin/python ...

  8. 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本

    前言 承接前文<短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求>,文中有讲到一个定位非法IP的shell脚本,现在就来公布一下吧,并没有什么技术难度,只是当时花了些时间去写 ...

  9. 短信发送接口被恶意访问的网络攻击事件(四)完结篇--搭建WAF清理战场

    前言 短信发送接口被恶意访问的网络攻击事件(一)紧张的遭遇战险胜 短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本 ...

随机推荐

  1. a-b转换A-B

  2. javascript 判断对像是否相等

    在Javascript中相等运算包括"==","==="全等,两者不同之处,不必多数,本篇文章我们将来讲述如何判断两个对象是否相等? 你可能会认为,如果两个对象 ...

  3. 使用XmlWriter写入XML

    麻了..整理完了发现XmlWriter不能添加元素,只能重写,还是得用Xdocument..好像DOM能实现添加元素 点击查看代码 **MemoryStream msXml = new MemoryS ...

  4. foreEach 跳出循环

    const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; const _ = require('lodash'); let outArr = []; try { arr. ...

  5. RPC原理及RPC实例分析(转)

    出处:https://my.oschina.net/hosee/blog/711632 在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服 ...

  6. vue element InfiniteScroll 无限滚动 入坑记录

    select_law_by_tag() { this.laws_loading.is_loading = true; this.laws_loading.no_more = false; this.e ...

  7. 7.2.*PHP编译安装时常见错误解决办法,php编译常见错误

    configure: error: Cannot find ldap.h   检查下面是不是已经安装,如果没有安装之:检查:yum list openldapyum list openldap-dev ...

  8. byte溢出栗子

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11634402.html byte溢出测试: byte b1 = (byte) 127; byt ...

  9. C++ 提高编程

    目录 C++ 提高编程 一. 模板 1. 概念 2. 函数模板 2.1 函数模板语法 2.2 注意事项 2.3 普通函数和函数模板的区别 2.4 普通函数和函数模板的调用规则 2.5 模板的局限性 3 ...

  10. mysql对属性的增删改

    修改表 alter table 创建表db 查看表 desc与describe desc table 查看建表语句show create table t1; 修改表名 alter table t1 r ...