alertmanage报警,prometheus监控钉钉告警、docker部署alertmanage

alertmanage

一、概述

Alertmanager是一个独立的告警模块,接收Prometheus等客户端发来的警报,之后通过分组、删除重复等处理,并将它们通过路由发送给正确的接收器;告警方式可以按照不同的规则发送给不同的模块负责人,Alertmanager支持Email, Slack,等告警方式, 也可以通过webhook接入钉钉等国内IM工具。


文章目录

  • alertmanage
  • 效果展示
  • 一、AlertManager 安装
      • 二、或者 docker安装方法
  • 三、配置跳转url
    • 2.编辑 alertmanager 文件
  • 配置报警规则
  • 配置报警规则启动 启动 接受端


效果展示

alertmanage报警,prometheus监控钉钉告警、docker部署alertmanage_第1张图片
alertmanage报警,prometheus监控钉钉告警、docker部署alertmanage_第2张图片


一、AlertManager 安装

1、添加system一个 守护进程

cat <<EOF > /etc/systemd/system/alertmanager.service
[Unit]
Description="alertmanager"
Documentation=https://alertmanager.io/
After=network.target

[Service]
Type=simple
ExecStart=/opt/alertmanager/alertmanager  --config.file=/opt/alertmanager/alertmanager.yml  --storage.path=/opt/app/alertmanager/data/

Restart=on-failure
RestartSecs=5s
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=alertmanager

[Install]
WantedBy=multi-user.target

EOF

下载需要 的安装包 进行安装

wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar xf alertmanager-0.21.0.linux-amd64.tar.gz 
mv alertmanager-0.21.0.linux-amd64 /opt/alertmanager

systemctl start alertmanager
systemctl enable alertmanager 
ss -tanpl | grep 9093

二、或者 docker安装方法

docker run -d \
--name alertmanager -p 9093:9093 \
-v /opt/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
prom/alertmanager

三、配置跳转url

注意 :需要 在prometheus.service文件中添加

vim /etc/systemd/system/prometheus.service
ExecStart=  --web.external-url=http://1.1.1.1:9090/

#这个url 是看图链接的地址哦    #注意 如果你这里不是 守护进程,就在起启动的时候 添加这一行 效果是一样的哦

![请添加图片描述](https://img-blog.csdnimg.cn/a58e9c47882c4c61910af3da13cfe9a2.pngalertmanage报警,prometheus监控钉钉告警、docker部署alertmanage_第3张图片

2.编辑 alertmanager 文件

代码如下(示例):

vim /opt/alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'web.hook'
receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://127.0.0.1:5001/alert'
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

配置报警接收端口

 创建一个 钉钉机器人  字段为ip。、然后测试一下是否通讯
测试一下钉钉 
curl -H "Content-Type: application/json" \
-d '{"msgtype":"text","text":{"content":"prometheus alert test"}}' \
https://oapi.dingtalk.com/robot/send?access_token=d6c19dda3225b4699df4942f0745afea03dc239d1f3d68cd351c9b0c2b0708a4



配置报警规则

注意 需要你提前监控做好监控哦
alertmanage报警,prometheus监控钉钉告警、docker部署alertmanage_第4张图片
编辑告警规则



比如  mysql 监控指标

[root@k8s ~]# cat /prometheus/rule.yml 
groups:
  - name: mysql_instance_down
    rules:
      - alert: Mysql Down
        expr: mysql_up{job="mysql"} == 0
        for: 5s
        labels:
          severity: 严重
        annotations:
          description: "mysql宕机了请检查"

  - name: mysql_connections
    rules:
      - alert: Mysql链接上限
        expr: mysql_global_status_max_used_connections{job="mysql"} > mysql_global_variables_max_connections{job="mysql"}*0.90
        for: 5s
        labels:
          severity: error
        annotations:
          description: "mysql链接数上限请处理 (当前值为:{{ $value }})"

  - name: mysql_net
    rules:
      - alert: Mysql监控入口流量
        expr: round(rate(mysql_global_status_bytes_received{job="mysql"}[10s]) /1024*100)/100
        for: 5s
        labels:
          severity: 严重
        annotations:
          description: "mysql流量大于1024"

  - name: mysql_show_slo
    rules:    
      - alert: Mysql 慢查询
        expr: increase(mysql_global_status_slow_queries[1m]) > 0
        for: 2m
        labels:
          severity: 严重
        annotations: 
          description: "MySQL服务器MySQL有一些新的慢速查询。(当前值为:{{ $value }})"

  - name: mysql_aborted_connects
    rules:
      - alert: Mysql多次错误链接
        expr: increase(mysql_global_status_aborted_connects[1m]) > 5
        for: 10s
        labels:
          severity: 严重
        annotations:
          description: "Mysql每分钟请求链接30次,可能是被别人在暴力破解哦 (当前值为:{{ $value }})"



#还有很多 就不举例了

配置报警规则启动 启动 接受端

systemctl restart alertmanager
systemctl restart prometheus
./aler

# ./aler 是我自己开发的一个脚本,需要 请QQ我  857676355

或者 使用

docker run -d --restart always \
-p 8060:8060 --name webhook-dingding \
timonwong/prometheus-webhook-dingtalk:v0.3.0 \
--ding.profile="webhook1=https://oapi.dingtalk.com/robot/send?access_token=7f10310db8be10da66319f18dfe505717ddae33cfd0eb19bde3f90c24fdae876"

#prometheus-webhook-dingtalk 效果也可以哦



你可能感兴趣的:(docker,linux,容器)