小标
2019-01-07
来源 :
阅读 3908
评论 0
摘要:本文主要向大家介绍了【云计算】prometheusalertmanagerwebhook配置教程,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
本文主要向大家介绍了【云计算】prometheusalertmanagerwebhook配置教程,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
一、背景介绍
本文是k8s prometheus adapter —— 拓展 k8s 基于 prometheus 实现动态伸缩的拓展内容
重在讲解如何配置 alertmanager,使其能够以 webhook 的方式触发告警的推送
其工作模式如下图:
二、配置步骤
2.1 告警 server 代码实现
告警 server 负责接收 alertmanager 的 webhook 调用,然后根据一定的业务规则,对具体人员下发通知
典型的,可以发送短信、发送邮件等
这里,为了简单,我们以 flask 框架为基础,用简单的程序,模拟这个过程
我们编写 app.py 告警 server 程序
from flask import Flask, request
import json
app = Flask(__name__)
@app.route('/send', methods=['POST'])
def send():
try:
data = json.loads(request.data)
alerts = data['alerts']
for i in alerts:
print('SEND SMS: ' + str(i))
except Exception as e:
print(e)
return 'ok'
这段代码的主要功能是开放一个接口(/send),用以接收 webhook 调用,
然后,解析告警内容并发送短信(此处只是简单打印 ^_^|||)
2.2 构建告警 server 镜像,并部署
编写 Dockerfile
FROM python
RUN pip install flask
COPY app.py /app.py
COPY run.sh /run.sh
RUN chmod +x /run.sh
EXPOSE 5000
ENTRYPOINT ["/run.sh"]
其中,run.sh 启动脚本内容如下:
#!/bin/bash
cd /
export FLASK_APP=app.py
flask run -h 0.0.0.0
将 app.py 和 run.sh 放置于同一个目录下,在该目录执行如下命令,构建镜像
docker build -t image.docker.ssdc.solutions/ctsi/flask-alert:1.0 .
推送镜像至私有仓库
docker push image.docker.ssdc.solutions/ctsi/flask-alert:1.0
部署告警server,定义 deployment ,flask-alert.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: flask-alert-deployment
namespace: monitoring
spec:
replicas: 1
template:
metadata:
labels:
app: flask-alert
spec:
containers:
- name: flask-alert
image: ctsi/flask-alert:1.0
imagePullPolicy: Always
ports:
- containerPort: 5000
name: http
volumeMounts:
- name: localtime
mountPath: /etc/localtime
volumes:
- name: localtime
hostPath:
path: /etc/localtime
---
apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: flask-alert-service
name: flask-alert-service
namespace: monitoring
spec:
clusterIP: None
ports:
- name: http
port: 5000
targetPort: http
selector:
app: flask-alert
kubectl create -fflask-alert.yaml
2.3 配置 alertmanager webhook 地址
prometheus alertmanager 支持配置自动发现和更新
因此,我们只需要重新生成配置即可
首先,删除原有的配置项
kubectl delete secret alertmanager-main -n monitoring
编写一个 webhook 配置文件,命名为alertmanager.yaml
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 12h
receiver: 'webhook'
receivers:
- name: 'webhook'
webhook_configs:
- url: 'https://flask-alert-service.monitoring:5000/send'
注意,这里的 url 要跟flask-alert-service 提供的服务地址对应上
kubectl create secret generic alertmanager-main --from-file=alertmanager.yaml -n monitoring
确认下 alertmanager 的配置项是否正确更新了
然后,查看flask-alert-deployment 的容器日志,可以看到已经收到了来自 alertmanager 的 webhook 告警
而且已经模拟了 SMS 短信的发送动作!
* Serving Flask app "app.py"
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on https://0.0.0.0:5000/ (Press CTRL+C to quit)
172.20.198.85 - - [23/Aug/2018 12:55:29] "POST /send HTTP/1.1" 200 -
172.20.198.85 - - [23/Aug/2018 12:55:44] "POST /send HTTP/1.1" 200 -
172.20.198.85 - - [23/Aug/2018 12:55:44] "POST /send HTTP/1.1" 200 -
172.20.179.99 - - [23/Aug/2018 12:55:45] "POST /send HTTP/1.1" 200 -
172.20.179.99 - - [23/Aug/2018 12:55:45] "POST /send HTTP/1.1" 200 -
172.20.198.85 - - [23/Aug/2018 12:55:47] "POST /send HTTP/1.1" 200 -
172.20.179.99 - - [23/Aug/2018 12:55:47] "POST /send HTTP/1.1" 200 -
172.20.198.85 - - [23/Aug/2018 12:55:47] "POST /send HTTP/1.1" 200 -
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!
喜欢 | 0
不喜欢 | 1
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号