【云计算】prometheusalertmanagerwebhook配置教程
小标 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
看完这篇文章有何感觉?已经有1人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved