热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浙江爱旭实践:OceanBase中PrometheusAlertmanager邮件告警配置V1.1

作者简介:王坤,资深DBA基于前述完成了grafana+prometheus通过OBAgent监控oceanbase社区版,在此基础上,演示使用OBAgent提供主机监控和OB数据库监控规则文件,并通
作者简介:王坤,资深DBA

基于前述完成了grafana+prometheus通过OBAgent监控oceanbase社区版,在此基础上,演示使用OBAgent提供主机监控和OB数据库监控规则文件,并通过Prometheus Alertmanager配置基于规则的邮件告警,同时Alertmanager也支持钉钉、微信等告警方式,这两种方式本文未涉及。

0.ENV

OceanBase-ce 3.1.2;

prometheus-2.32.1.linux-amd64.tar.gz;

alertmanager-0.23.0.linux-amd64.tar.gz;

grafana-8.3.3-1.x86_64.rpm。

1.  部署Prometheus Alertmanager

1.1.  下载Prometheus Alertmanager

下载页面:

https://prometheus.io/download/

在alertmanager一栏,点击对应版本下载,如alertmanager-0.23.0.linux-amd64.tar.gz。

也可直接下载:

wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz

1.2.  解压Prometheus Alertmanager

1) 二进制版,解压即用

# mkdir /monitor #生产环境提前准备好监控部署目录
# tar zxvf alertmanager-0.23.0.linux-amd64.tar.gz -C /monitor/

2) 创建软连接,便于管理

# ln -sv /monitor/alertmanager-0.23.0.linux-amd64/ /monitor/alertmanager

1.3.  启动Prometheus Alertmanager

前台启动:

cd /monitor/alertmanager && ./alertmanager --config.file=alertmanager.yml

后台启动:

cd /monitor/alertmanager && nohup ./alertmanager --config.file=alertmanager.yml >> ./log/alertmanager_stdout.log 2>&1 &

查看告警:

http://192.168.80.110:9090/alerts

1.4.  查看进程信息

查看进程

[root@ob3 ~]# ps -ef | grep alertmanager | grep -v grep
root     76359     1 0 11:26 ?       00:00:23 ./alertmanager --config.file=alertmanager.yml

查看进程号

[root@ob3 ~]# pgrep alertmanager
76359
[root@ob3 ~]# pidof alertmanager
76359

1.5.  停止服务

kill -9 `pgrep alertmanager`
OR
kill -9 `pidof alertmanager`
2.  配置 Prometheus Alertmanager

2.1.  配置说明

OBAgent提供默认的报警项,配置文件位于conf/prometheus_config/rules。其中,host_rules.yaml存储主机报警项,ob_rules.yaml存储OceanBase数据库报警项。

如果默认报警项不能满足您的需求,按照以下方式自定义报警项:

# 在 Prometheus 的配置文件中增加报警相关的配置。报警相关的配置文件需放在rules目录,且命名满足 *rule.yaml。
groups:
- name: node-alert
    rules:
    - alert: disk-full
    expr: 100 - ((node_filesystem_avail_bytes{mountpoint="/",fstype=~"ext4|xfs"} * 100) / node_filesystem_size_bytes {mountpoint="/",fstype=~"ext4|xfs"}) > 80
    for: 1m
    labels:
        serverity: page
    annotations:
        summary: "{{ $labels.instance }} disk full "
        description: "{{ $labels.instance }} disk > {{ $value }} "

2.2.  使用OBAgent规则

创建规则目录:

mkdir /monitor/prometheus/rules

复制OBAgent规则

cp /home/admin/obagent/1/conf/prometheus_config/rules/*.yaml /monitor/prometheus/rules

配置规则目录权限(视个人环境而定)

chown -R prometheus:prometheus /monitor/prometheus/rules

 2.3.  热加载

curl -XPOST http://localhost:9090/-/reload
 3. 查看告警

3.1.  查看prometheus告警

1) 浏览器访问prometheus告警页面

http://192.168.80.110:9090/alerts

prometheus的告警规则,使用的是host_rules.yaml和ob_rules.yaml两个规则。

2) 当前各项指标均为绿色,说明各指标正常

3) 当前有黄色或红色时,某些指标存在告警或异常,此时Firing一项数字不为0

3.2.  查看Grafana告警

1) 访问Grafana告警页面

http://192.168.80.110:3000/alerting/list

grafana告警也是引用prometheus中的OBAgent告警规则

2) 当前各项指标均为绿色,说明各指标正常

3) 当前存在异常指标,可点开Firing查看具体信息

3.3.  alertmanager页面

http://192.168.80.110:9093

4.  配置邮件告警

可通过prometheus配置告警,也可通过grafana配置邮件告警,文中以配置prometheus alertmanager邮件告警为例。

4.1.  模拟告警

修改oceanbase主机告警规则中的磁盘空间告警阈值,将97调低7,即磁盘空间使用率大于7%,则触发告警。

[root@ob3 prometheus]# vi /monitor/prometheus/rules/host_rules.yaml
...
groups:
  - name: node-alert
    rules:
    - alert: ob_host_disk_percent_over_threshold
      expr: 100 * (1 - node_filesystem_avail_bytes / node_filesystem_size_bytes) > 7 #将97更改为7
      for: 1m
...

 4.2.  检查prometheus.yml中是否存在告警配置

1) 确认告警配置是否配置

[root@ob3 prometheus]# vi /monitor/prometheus/prometheus.yml
...
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - 127.0.0.1:9093
...

2) 检查prometheus.yml配置是否正确

[root@ob3 prometheus]# ./promtool check config prometheus.yml
Checking prometheus.yml
  SUCCESS: 2 rule files found
 
Checking rules/host_rules.yaml
  SUCCESS: 7 rules found
 
Checking rules/ob_rules.yaml
  SUCCESS: 11 rules found

3)  修改prometheus.yml后热加载配置

curl -XPOST http://localhost:9090/-/reload

4.3.  配置alertmanager的SMTP信息

1) 配置alertmanager的SMTP信息

[root@ob3 ~]# vim /monitor/alertmanager/alertmanager.yml
global:
  smtp_smarthost: 'smtp.rundba.com:465'          # smtp地址及端口,不加密默认为25,加密默认为25
  smtp_from: 'alert@rundba.com'               # 发件人
  smtp_auth_username: 'alert@rundba.com'      # 发件邮箱
  smtp_auth_password: '******'                   # 邮箱密码
  smtp_require_tls: false # 不启用TLS
 
route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'web.hook' # 接收标签和receiveres名称对应
receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://127.0.0.1:5001/'
  email_configs:
  - to: 'oceanbase@rundba.com,alert@rundba.com' # 收件人,多个接收人以逗号分隔
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

2) 检查alertmanager.yml配置是否正确

[root@ob3 alertmanager]# ./amtool check-config alertmanager.yml
Checking 'alertmanager.yml' SUCCESS
Found:
 - global config
 - route
 - 0 inhibit rules
 - 1 receivers
 - 0 templates

3) 重启alertmanager服务

kill -9 `pidof alertmanager`
cd /monitor/alertmanager && nohup ./alertmanager --config.file=alertmanager.yml >> ./log/alertmanager_stdout.log 2>&1 &

4.4.  查看告警邮件

5.  小结

文中通过OBAgent提供的prometheus告警规则文件,在alertmanager中配置SMTP实现邮件告警,同时可以通过prometheus告警页面、grafana告警页面查看告警。

目前基于grafana+prometheus+OBAgent完成了整个主机、OceanBase-ce、obproxy监控、告警配置。

6.  reference

https://open.oceanbase.com/docs/community/oceanbase-database/V3.1.2/use-obd-to-deploy-obagent#title-7bz-ivy-73r

https://www.prometheus.io/docs/alerting/latest/alertmanager/



推荐阅读
author-avatar
道貌岸然小皇猪_497_603
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有