技术导语: 正如标题描述的,本章将介绍如何通过prometheus的客户端工具postgres-exporter实现postgresql数据库的监控,当然prometheus社区还提供了其他类型的数据库监控客户端,如mysql-exporter,这里就不多列举了。
客户端可执行文件
postgres-exporter
客户端配置文件
custom.yaml
pg_replication:
query: "SELECT EXTRACT(EPOCH FROM (now() - pg_last_xact_replay_timestamp())) as lag"
metrics:
- lag:
usage: "GAUGE"
description: "Replication lag behind master in seconds"
客户端启动脚本
必须定义环境变量:
- DATA_SOURCE_NAME:pg库连接信息,安全起见,建议创建只读用户用于监控使用。
- PG_EXPORTER_EXTEND_QUERY_PATH:告警配置信息文件路径。
postgresql_startup.sh
#!/bin/bash
export DATA_SOURCE_NAME="postgresql://readonly:Readonly@123@192.168.6.146:5432/postgres?sslmode=disable"
export PG_EXPORTER_EXTEND_QUERY_PATH="/etc/prometheus/custom.yaml"
nohup /usr/local/bin/postgres_exporter --web.listen-address=":9058" >>/var/log/prometheus/postgres_exporter.log 2>&1 &
客户端metrics信息示例
http://ip:9058/metrics
告警配置
举个栗子,假设指标pg_replication_lag结果值>10000即触发告警,则配置如下。
rules.yml
groups:
- name: rule1
rules:
- alert: '测试'
expr: 'pg_replication_lag>10000'
for: 1s
labels:
severity: 一般
annotations:
value: '{{ $value }}'
strategyid: 1
至于生成的告警信息如何收集并且有效管理,请参照之前的文章。
如果您喜欢我的文章,请关注我哦。后续会提供更多的干货分享。