ITPub博客

首页 > Linux操作系统 > Linux操作系统 > PostgreSQL Patroni_exporter 监控 patroni高可用工具

PostgreSQL Patroni_exporter 监控 patroni高可用工具

原创 Linux操作系统 作者:张冲andy 时间:2023-08-01 17:09:53 0 删除 编辑

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 安装

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服务非正常关闭,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 PostgreSQL
After=syslog.target network.target
[Service]
Type=simple
User=postgres
Group=postgres
#StandardOutput=syslog
ExecStartPre=-/usr/bin/sudo /sbin/modprobe softdog
ExecStartPre=-/usr/bin/sudo /bin/chown postgres /dev/watchdog
ExecStart=/usr/bin/patroni /software/patroni/patroni.yml
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=process
TimeoutSec=30
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=multi-user.target

patroni 高可用测试  

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



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31383567/viewspace-2967626/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
支持就关注我个人公众号:DBA烂笔头 。专注数据库领域,熟悉oracle、mysql、redis、mongodb,clickhouse等相关技术

注册时间:2016-08-11

  • 博文量
    626
  • 访问量
    286291