k8s全方位监控 -prometheus实现短信告警接口编写(python)
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)的更多相关文章
- k8s全方位监控-prometheus部署
1.k8s 监控资源对象 2. prometheus简单介绍. https://github.com/prometheus •多维数据模型:由度量名称和键值对标识的时间序列数据•PromSQL:一种灵 ...
- prometheus grafana graylog 钉钉告警 短信告警 电话告警系统 PrometheusAlert
PrometheusAlert 简介 PrometheusAlert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus,日志系统Graylog和数据可视化系统Grafana发出的 ...
- zabbix3调用接口发送短信告警
一.需求 之前使用的邮件告警,由于经常会忽略邮件,所以有时候告警查看的并不及时,所以增加短信告警的,以便及时处理. 二.zabbix-server端的配置 # 需要在zabbix-server端打开A ...
- 检查ftp备份数据完整性及短信告警的shell脚本
发布:thebaby 来源:net [大 中 小] 检查ftp备份数据完整性及短信告警的shell,有需要的朋友可以参考下. 该脚本实现如下的功能: 对远程备份到ftp服务器的数据完整性及 ...
- zabbix系列之十——添加短信告警
zabbix添加短信告警 1.查看zabbix-server脚本存放路径: [root@GYQ-Prod-Zabbix ~]# grep AlertScriptsPath /etc/zabbix/za ...
- zabbix配置短信告警
zabbix版本:3.0.7 短信服务商:云片网 首先在云片网添加相应签名和模板 参照格式 签名:xxx告警 模板: [xxx告警]故障:#status# 服务器:#host# 发生:#trigger ...
- zabbix 利用python脚本实现短信告警
一.编写脚本 cd /usr/local/zabbix-4.0.3/share/zabbix/alertscripts vi zabbix_sms.py 内容如下: #!/usr/bin/python ...
- 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本
前言 承接前文<短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求>,文中有讲到一个定位非法IP的shell脚本,现在就来公布一下吧,并没有什么技术难度,只是当时花了些时间去写 ...
- 短信发送接口被恶意访问的网络攻击事件(四)完结篇--搭建WAF清理战场
前言 短信发送接口被恶意访问的网络攻击事件(一)紧张的遭遇战险胜 短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本 ...
随机推荐
- vue之keep-alive的使用
keep-alive:是vue内置的一个组件,可以使被包含的组件保留状态或避免重新渲染.有两个生命周期函数:activated.deachtivated.在vue 2.1.0版本后新增了两个属性:in ...
- 「JOISC 2014 Day1」巴士走读
「JOISC 2014 Day1」巴士走读 将询问离线下来. 从终点出发到起点. 由于在每个点(除了终点)的时间被过来的边固定,因此如果一个点不被新的边更新,是不会发生变化的. 因此可以按照时间顺序, ...
- URL跳转空白页参数传递封装
这东西主要是为了vue和平时打开一个空白界面_blank时的参数传递,不涉及到浏览器存储(session,local等) 众所周知,请求传参无非就用的query和params,相对应就是get和pos ...
- new Date时间格式转换方法
平时经常会使用到时间转换,组件库已经有很多组件可以自动生成时间类型了,但是底层的封装方法还是得有 获取当前时间 new Date() 或者自己拥有一个毫秒时间 方法如下 /** * title: 时 ...
- windows doc命令复制粘贴文件
# 删除前端文件 rmdir /s/q E:\yuanbo2019\public\static del E:\yuanbo2019\public\index.html @echo off ::被复制的 ...
- ◆JAVA加密解密-DES
DES算法提供CBC, OFB, CFB, ECB四种模式,MAC是基于ECB实现的. 一.数据补位 DES数据加解密就是将数据按照8个字节一段进行DES加密或解密得到一段8个字节的密文或者明文,最后 ...
- 微信小程序音频播放 InnerAudioContext 的用法
今天项目上涉及到了微信小程序播放音频功能,所以今天跟着一些教程做了个简单的播放器 1.实现思路 刚开始想着有没有现成的组件可以直接用,找到了微信的媒体组件 audio,奈何看着 1.6.0版本开始,该 ...
- 编译安装nginx,实现多域名 https
一.编译安装nginx 1.1 获取源码包 [root@cetnos7 ~]#wget -O /usr/local/src/nginx-1.18.0.tar.gz http://nginx.org/d ...
- 操作系统发展史 & 进程
今日内容 UDP协议 操作系统发展史 进程 单核情况下的进程调度 进程三状态图 同步异步 阻塞非阻塞 内容详细 一.UDP协议 1.什么是UDP协议 UDP是传输层的协议,功能即为在IP的数据报服务之 ...
- Windows微信清理工具v.3.0.1
Windows微信清理工具v.3.0.1 今天,我原创的Windows微信清理工具迎来最大更新! v.3.0.0更新内容: 1.使用tkinter重构GUI,界面更简单易用! 2.增加"清理 ...