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. 安装Windows11操作系统(不需要绕过TPM检测脚本等) - 初学者系列 - 学习者系列文章

    Windows11操作系统是去年微软公司的最新力作.对于该操作系统的安装,网上有很多的教程了.这次主要写的是不需要绕过TPM检测操作安装Windows11操作系统. 1.        制作启动U盘: ...

  2. 学习JAVAWEB第四天

    # 今日内容 1. JDBC基本概念 2. 快速入门 3. 对JDBC中各个接口和类详解 ## JDBC: 1. 概念:Java DataBase Connectivity Java 数据库连接, J ...

  3. Atcoder ARC-060

    ARC060(2020.7.8) A 背包板子 B 首先感觉这个东西应该不能直接 \(O(1)\) 算出来,那么复杂度应该就是 \(O(\log n), O(\sqrt{n}), O(\sqrt{n} ...

  4. 阿里四面:你知道Spring AOP创建Proxy的过程吗?

    Spring在程序运行期,就能帮助我们把切面中的代码织入Bean的方法内,让开发者能无感知地在容器对象方法前后随心添加相应处理逻辑,所以AOP其实就是个代理模式. 但凡是代理,由于代码不可直接阅读,也 ...

  5. JQuery扩展方法实现Form表单与Json互相转换

    1.把表单转换出json对象 //把表单转换出json对象 $.fn.toJson = function () { var self = this, json = {}, push_counters ...

  6. HttpClient 的Timeout waiting for connection from pool

    Timeout waiting for connection from pool 异常 httpClient大家用到地方会很多,先简单描述一下几个关键配置的意义 httpClient版本为4.5.1 ...

  7. nodejs 文件上传服务端实现

    前段时间在做个人项目的时候,用到了nodejs服务端上传文件,现在回头把这个小结一下,作为记录. 本人上传文件时是基于express的multiparty,当然也可以使用connect-multipa ...

  8. Windows服务调用Office时,未将对象引用的实例

    Windows键+R键                         回车 输入:comexp.msc -32               回车 点击控制台根节点--组件服务--计算机--我的电脑- ...

  9. js金额转中文大写

    基础参数: var AIW_number = {0:'零', 1:'壹', 2:'贰', 3:'叁', 4:'肆', 5:'伍', 6:'陆', 7:'柒', 8:'捌', 9:'玖'} var AI ...

  10. 简述redis集群的实现原理

    在哨兵sentinel机制中,可以解决redis高可用问题,即当master故障后可以自动将slave提升为master,从而可以保证redis服务的正常使用,但是无法解决redis单机写入的瓶颈问题 ...