PostgreSQL Patroni_exporter 监控 patroni高可用工具

Patroni是Cybertec公司基于python语言开发的,可用于使用流复制来创建,管理,维护和监视高可用性PostgreSQL集群设置的工具。

目前,Patroni+Etcd 是最为推荐的PostgreSQL数据库高可用方案之一。

PostgreSQL有postgres_exporter监控采集器。对于Patroni高可用工具自身的监控,有啥子监控方案吗?

一起来看看 ,鲜为人知的 patroni-exporter 吧**。**

一、patroni-exporter 部署

环境要求:Requires python >= 3.6

软件包下载:https://github.com/Showmax/patroni-exporter

​patroni_export 安装

bash 复制代码
1.1、安装python系统包
 pip3.6 install prometheus_client  
 pip3.6 install python-dateutil
 
 1.2、unzip 解压 patroni-exporter-master.zip
 [root@HD-IOV-PROMETHEUS-MONITOR patroni]# ll
total 12
drwx------ 3 root root  137 Aug  1 10:39 patroni-exporter-master
-rw------- 1 root root 8566 Aug  1 10:31 patroni-exporter-master.zip
 
 1.3、 patroni-exporter服务启动脚本
 # cat /etc/systemd/system/patroni_exporter.service 
[Unit]
Description=patroni_exporter
After=network.target
​
[Service]
Type=simple
ExecStart=/usr/bin/python3.6 /root/dba_zc/patroni/patroni-exporter-master/patroni_exporter.py   --port 51234 --patroni-url http://172.24.131.8:8008/patroni --timeout 5 
TimeoutSec = 60
Restart = on-failure
RestartSec = 2
​
[Install]
 
 1.4、patroni_exporter启动
 systemctl start patroni_exporter

二、patroni-exporter对接Prometheus

为了方便,这里采用静态注册:静态的将服务的IP和抓取指标的端口号配置在Prometheus yaml文件的scrape_configs配置下。

复制代码
  - job_name: patroni-job    static_configs:    - targets: ['172.26.234.25:51234','172.26.234.25:51238','172.26.234.25:51239']

访问prometheus web,能看到各监控export为UP即正常

三、patroni-exporter采集数据Grafana可视化

我基于patronictl version 1.6.1 下 patroni-exporter采集数据,编写了一个 Grafana Dashboard for Patroni exporter,效果如下

四、patroni基于Alertmanager告警

​# cat patroni_rules.yml

groups:

  • name: for_common

rules:

  • alert: IOV-patroni_patroni_info

expr: patroni_patroni_info != 1

for: 1m

labels:

level: 3

annotations:

cur_value: '{{ $value }}'

description: '{{ labels.instance}} of {{labels.job}} patroni has down 1m'

  • alert: IOV-patroni_patroni_pause

expr: patroni_patroni_pause != 0

for: 1m

labels:

level: 3

annotations:

cur_value: '{{ $value }}'

description: '{{ labels.instance}} of {{labels.job}} patroni 处于 pause 1m'

  • alert: IOV-patroni_postgresql_timeline

expr: changes(patroni_postgresql_timeline[1m]) != 0

for: 1m

labels:

level: 3

annotations:

cur_value: '{{ $value }}'

description: '{{ labels.instance}} of {{labels.job}} patroni change postgresql_timeline 1m'

复制代码

五、patroni 服务高可用性优化

针对patroni服务非正常关闭,os systemd自动重启拉起,保障工具的高可用性。

复制代码
异常终止后自动重启,systemd控制参数Restart=always 、RestartSec=5、 StartLimitInterval=0​[root@ZL-IOV-ZNA-L2-DBORCH02 system]# cat /etc/systemd/system/patroni.service [Unit]Description=Runners to orchestrate a high-availability PostgreSQLAfter=syslog.target network.target[Service]Type=simpleUser=postgresGroup=postgres#StandardOutput=syslogExecStartPre=-/usr/bin/sudo /sbin/modprobe softdogExecStartPre=-/usr/bin/sudo /bin/chown postgres /dev/watchdogExecStart=/usr/bin/patroni /software/patroni/patroni.ymlExecReload=/bin/kill -s HUP $MAINPIDKillMode=processTimeoutSec=30Restart=alwaysRestartSec=5StartLimitInterval=0[Install]WantedBy=multi-user.target

patroni 高可用测试

patroni异常终止,自动重新拉起

相关推荐
广州智造2 小时前
OptiStruct实例:3D实体转子分析
数据库·人工智能·算法·机器学习·数学建模·3d·性能优化
技术宝哥5 小时前
Redis(2):Redis + Lua为什么可以实现原子性
数据库·redis·lua
学地理的小胖砸7 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
dddaidai1237 小时前
Redis解析
数据库·redis·缓存
数据库幼崽7 小时前
MySQL 8.0 OCP 1Z0-908 121-130题
数据库·mysql·ocp
Amctwd8 小时前
【SQL】如何在 SQL 中统计结构化字符串的特征频率
数据库·sql
betazhou8 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg
lyrhhhhhhhh9 小时前
Spring 框架 JDBC 模板技术详解
java·数据库·spring
喝醉的小喵10 小时前
【mysql】并发 Insert 的死锁问题 第二弹
数据库·后端·mysql·死锁
付出不多10 小时前
Linux——mysql主从复制与读写分离
数据库·mysql