背景

公司用的是企业微信做日常工作交流,那么告警用邮箱的话,第一个是比较麻烦(不是人人都会时时查看邮件),第二个是邮件丢失的可能性还是有的


开始

创建告警机器人

访问企业微信后台

82287-t5m5ihi9mlc.png

15489-o82b6xcp5h9.png

60854-imryrubzfe7.png

28986-x81ui00d3o.png

配置 prometheus

安装 prometheusalertmanage,注意参照文章安装的时候暂时跳过修改配置文件的步骤,安装可参照
https://www.itwordsweb.net/linux_doc/prometheus_grafana_alarm.html

参照上面文章安装好 prometheusalertmanage 后,修改配置文件

prometheus.yml 示例

global:
  scrape_interval: 15s
  evaluation_interval: 60s
rule_files:
  - /etc/prometheus/rules/node.yml
alerting:
  alertmanagers:
    - static_configs:
        - targets: ["10.18.193.95:9093"]
scrape_configs:
  - job_name: CF_SERVER_OF
    static_configs:
      - targets:
          - 10.18.193.95:9100
          - 10.18.193.91:9100
  - job_name: CF_SERVER_QC
    static_configs:
      - targets:
          - 10.26.1.11:9100
          - 10.26.1.17:9100

/data/prometheus/rules 目录下新建文件 node.yml

node.yml 示例

groups:
  - name: 基础状态告警
    rules:
      - alert: 内存使用率过高
        expr: (1-(node_memory_MemAvailable_bytes/(node_memory_MemTotal_bytes)))*100 > 90
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "{{$labels.instance}}:{{$labels.nodename}} 内存使用率过高!"
          description: "{{$labels.job}}:{{$labels.instance}}:{{$labels.nodename}} 内存使用率超过 90%!当前值为:{{ $value }}"

老规矩,运行 docker cp /data/prometheus/rules cf_prometheus:/etc/prometheus/ 把配置文件复制到 prometheus,再重启 prometheus

配置 alertmanager

alertmanager.yml 示例

global:
  # 在没有报警的情况下声明为已解决的时间
  resolve_timeout: 5m

templates:
  # 这个是企业微信告警模板文件
  - "./template/cf.tmpl"

route:
  group_by: ["alertname"]
  group_wait: 10s
  # 告警信息发送之前的等待时长
  group_interval: 30s
  # 重复报警的间隔时长
  repeat_interval: 5m
  # 这个名称要和下面的对应
  receiver: "wxwork"

receivers:
  # 这个名称要和上面的对应
  - name: "wxwork"
    wechat_configs:
      # 是都发送恢复信息
      - send_resolved: true
        # 填写机器人的 AgentId
        agent_id: "XXXXXX"
        # 这个表示所有可以看到这个机器人应用的人都能接收到告警消息
        to_user: "@all"
        # 填写机器人的 Secret
        api_secret: "XXXXXX"
        # 填写企业 ID
        corp_id: "XXXXXX"

配置 template/cf.tmpl 文件

cf.tmpl 示例

{{ define "wechat.default.message" }}
{{ range $i, $alert :=.Alerts }}
========监控报警==========
告警状态:{{ .Status }}
告警级别:{{ .Labels.severity }}
告警类型:{{ .Labels.alertname }}
告警 IP :{{ .Labels.instance }}
告警主机: {{ .Labels.nodename}}
告警摘要:{{ .Annotations.summary }}
告警详情:{{ .Annotations.description }}
告警时间:{{ .StartsAt.Format "2006-01-02 15:04:05" }} 
恢复时间:{{ $alert.EndsAt.Format "2006-01-02 15:04:05" }}
========end============= 
{{ end }} {{ end }}

启动 alertmanager

nohup /data/alertmanager/alertmanager --config.file="/data/alertmanager/alertmanager.yml" > /data/alertmanager/alertmanager.log 2>&1 &

看效果

人为触发告警后,企业微信看到的效果是这样子的

60208-djzftwr7zwr.png


文章作者: Runfa Li
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Linux 小白鼠
Linux Monitor Linux Centos7 Centos7 alarm 告警 监控 alertmanager 企业微信
觉得文章不错,打赏一点吧,1分也是爱~
打赏
微信 微信
支付宝 支付宝