美文网首页
prometheus-operator 配置报警规则以及企业微信

prometheus-operator 配置报警规则以及企业微信

作者: 迷茫_小青年 | 来源:发表于2019-12-29 20:58 被阅读0次

当配置完监控项以后,需要对监控项配置报警规则。

报警规则在prometheus-operator被抽象成PrometheusRule类型资源

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  labels:
    app: prometheus-operator
    release: prometheus-operator-1577513747
  name: prometheus-operator-flask
  namespace: default
spec:
  groups:
  - name: flask
    rules:
    - alert: flask random number
      annotations:
        description: 'flask 随机数是:  ({{ $value }}).'
        summary: 'test flask'
      expr: sum(connect) < 5
      labels:
        serverity: 'critical'
        instance: '192.168.1.103:5000'

这个rule.yaml 文件里 expr 表示 connect 这个项的数值小于5 就报警。

现在规则有了,还需要配置企业微信报警。
在prometheus 是不包含报警系统的,它的报警系统是alertmanager 这个服务。本身alertmanager也支持企业微信报警api。我们需要修改alertmanager的配置文件和生成报警模版

在prometheus-operator里alertmanager配置文件被抽象成了Secret 资源类型。
我们可以先用一些命令查看默认配置文件

kubectl get Secret alertmanager-prometheus-operator-157751-alertmanager -ojson | jq -r '.data["alertmanager.yaml"]' | base64 -d

如果没有安装jq。就需要两个步

1、kubectl get Secret alertmanager-prometheus-operator-157751-alertmanager -o yaml 

执行后会复制data下的alertmanager.yaml 文件的base64编码

2、echo 'ICB3ZWNoYXRfYXBpX3NlY3XXXXXXXXXXX' | base64 -d 
global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.163.com:25'
  smtp_from: 'xxx@163.com'
  smtp_auth_username: '邮箱用户名'
  smtp_auth_password: '邮箱密码'
  smtp_hello: '163.com'
  smtp_require_tls: false
  wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
  wechat_api_secret: '企业微信密钥'
  wechat_api_corp_id: '企业id'

templates:
  - "*.tmpl"
receivers:
- name: "wechat"
  wechat_configs:
  - send_resolved: true
    agent_id: '1000002'
    to_user: '@all'
    corp_id: '企业id'
    api_secret: '企业微信密钥'

- name: "email"
  email_configs:
  - to: '接受者邮箱地址'
    send_resolved: true

route:
  group_by:
  - job
  group_interval: 5m
  group_wait: 30s
  receiver: "wechat"
  repeat_interval: 12h

微信报警模版

{{ define "wechat.default.message" }}
{{ range .Alerts }}
========start=========
告警程序: prometheus_alert
告警级别: {{ .Labels.serverity }}
告警类型: {{ .Labels.alertname }}
故障主机: {{ .Labels.instance }}
告警主题: {{ .Annotations.summary }}
告警详情: {{ .Annotations.description }}
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
=========end===========
{{ end }}
{{ end }}

上面的文件保存成 alertmanager.yaml
模版文件保存成 wechat.tmpl

先删除alertmanager 默认配置文件

kubectl delete secret alertmanager-prometheus-operator-157751-alertmanager

然后添加新配置

kubectl create   secret generic  alertmanager-prometheus-operator-157751-alertmanager --from-file=alertmanager.yaml --from-file=wechat.tmpl

这就完活了。

receiver: "wechat" 这里 改成email 就是邮件报警了。

我不知道怎么配置 微信、邮件同时发报警。🤷‍♂️

再研究研究。

相关文章

网友评论

      本文标题:prometheus-operator 配置报警规则以及企业微信

      本文链接:https://www.haomeiwen.com/subject/hmruoctx.html