作者简介:王坤,资深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/
结束语
OceanBase 社区版入门到实战教程直播正在进行中~
快和小伙伴一起进群交流学习吧~
加入直播群方式一:
钉钉群号 3582 5151
加入直播群方式二:
扫码下方钉钉二维码加入