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. es的settings设置详解

    //静态设置:只能在索引创建时或者在状态为 closed index(闭合的索引)上设置   index.number_of_shards //主分片数,默认为5.只能在创建索引时设置,不能修改   ...

  2. 图论+回溯解QQ一笔画红包

    [春节整活] QQ的一笔画红包有几个特性: 1.最大为5×5的点阵,所以可以把每个点从左到右,从上到下标为1-25号点 2.每两个点只能存在一条线 3.线可以被盖住(例如连接2-1-3,2-1的线会被 ...

  3. JVM内存模型(五)

    一.JVM内存模型 1.1.与运行时数据区     前面讲过了运行时数据区那接下来我们聊下内存模型,JVM的内存模型指的是方法区和堆:在很多情况下网上讲解会把内存模型和运行时数据区认为是一个东西,这是 ...

  4. pandas目录

    pandas目录 1 Lesson1--Pandas是什么 2 Lesson2--Pandas库下载和安装 3 Lesson3--Pandas Series结构 4 Lesson4--Pandas D ...

  5. ApacheCN 深度学习译文集 20210112 更新

    新增了六个教程: TensorFlow 2 和 Keras 高级深度学习 零.前言 一.使用 Keras 入门高级深度学习 二.深度神经网络 三.自编码器 四.生成对抗网络(GAN) 五.改进的 GA ...

  6. Entity Framework 在OrderBy排序中使用字符串

    public static class LinqExtensions { private static PropertyInfo GetPropertyInfo(Type objType, strin ...

  7. 生成"cmd.exe"错误

    转载请注明来源:https://www.cnblogs.com/hookjc/ 在VC2005里打开"工具"菜单,选择"选项",打开"选项" ...

  8. 我对JavaWeb中中文URL编码的简单总结

    1.application/x-www-form-urlencoded 它是一种编码类型.当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www-form-u ...

  9. 自定义CALayer

    1.如何自定义Layer.     自定义CALayer的方式创建UIView的方式非常相似.      CALayer *layer = [CALayer layer];      layer.fr ...

  10. linux .h文件

    转载请注明来源:https://www.cnblogs.com/hookjc/ c++ #include <sys/types.h>   #include <unistd.h> ...