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 安装
1.1、安装python系统包pip3.6 install prometheus_client pip3.6 install python-dateutil1.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.zip1.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-jobstatic_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异常终止,自动重新拉起

相关文章:
PostgreSQL Patroni_exporter 监控 patroni高可用工具
Patroni是Cybertec公司基于python语言开发的,可用于使用流复制来创建,管理,维护和监视高可用性PostgreSQL集群设置的工具。 目前,PatroniEtcd 是最为推荐的PostgreSQL数据库高可用方案之一。 PostgreSQL有postgres_exporter监控采…...
C语言多级指针
#include "stdio.h" #include <stdlib.h>int main() {int a 10;//*p int a int *pint* p &a;int** q &p;//int** q int *(*q) int *(q) a//int**q int*(*q) int*(&a) int*&a aint*** k &q;//分析:首先k是个变量&…...
IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介
系列文章目录 IDEA上面书写wordcount的Scala文件具体操作 IDEA创建项目的操作步骤以及在虚拟机里面创建Scala的项目简单介绍 目录 系列文章目录 前言 一 准备工作 1.1 安装Maven 1.1.1 Maven安装配置步骤 1.1.2 解压相关的软件包 1.1.3 Maven 配置环境变量 1.1.4 配…...
ArraySetter
简介 用来展示属性类型为数组的 setter 展示 配置示例 "setter": {"componentName": "ArraySetter","props": {"itemSetter": {"componentName": "ObjectSetter","props": {"c…...
Python如何解决Amazon亚马逊“图文验证码”识别(6)
前言 本文是该专栏的第55篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏前面,笔者有详细介绍多种登录验证码识别方法,感兴趣的同学可往前翻阅。而本文,笔者将单独详细介绍亚马逊Amazon的图文识别验证码的解决方法。 如上图所示,访问或请求频次达到一定程度之…...
plsql连接oracle出现TTC错误
这个错误莫名其妙,搜不到直接关联的解决方案。用了下面解决乱码的方式倒是解决了。 ORA-03137: TTC protocol internal error : [%s] [%s] [%s] [%s] [%s] [%s] [%s] [%s] 按照如下链接解决: PL/SQL Developer中文乱码解决方案_Bug君坤坤的博客-CSDN博…...
4-golang爬虫下载的代码
golang爬虫下载的代码: 下载程序的借鉴内容: 这个是关于gbk,utf8等相互转换的包 github.com/axgle/mahonia" 一、标准下载代码 package downloaderimport ("log""net/http""io""github.com/axgle/…...
Eureka增加账号密码认证登录
一、业务背景 注册中心Eureka在微服务开发中经常使用到,用来管理发布的微服务,供前端或者外部调用。但是如果放到生产环境,我们直接通过URL访问的话,这显然是不安全的。 所以需要给注册中心加上登录认证。 通过账号和密码认证进行…...
Practice5|58. 最后一个单词的长度、66. 加一
58. 最后一个单词的长度 1.题目: 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:…...
Practice4|14. 最长公共前缀、2. 两数相加
14. 最长公共前缀 1.题目: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs ["flower","flow","flight"] 输出…...
第28天-Kubernetes架构,集群部署,Ingress,项目部署,Dashboard
1.K8S集群部署 1.1.k8s快速入门 1.1.1.简介 Kubernetes简称k8s,是用于自动部署,扩展和管理容器化应用程序的开源系统。 中文官网:https://kubernetes.io/zh/中文社区:https://www.kubernetes.org.cn/官方文档:https…...
剑指OfferII-58.左旋转字符串
剑指OfferII-58.左旋转字符串 目录 剑指OfferII-58.左旋转字符串题目描述解法一:字符数组解法二:原地反转 题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。 请定义一个函数实现字符串左旋转操作的功能。 比如,…...
C语言每日一题:14《数据结构》复制带随机指针的链表
题目一: 题目链接: 思路一: 找相对位置暴力求解的方法: 1.复制一个新的链表出来遍历老的节点给新的节点赋值,random这个时候不去值。 2.两个链表同时遍历,遍历老链表的时候去寻找相对位置,在遍…...
MySql008——检索数据:过滤数据(WHERE子句的使用)
前提:使用《MySql006——检索数据:基础select语句》中创建的products表 一、实际需求 数据库表一般包含大量的数据,但是很少需要检索表中所有行。通常只会根据特定条件提取表数据的子集。只检索所需数据需要指定搜索条件(search …...
vue2-v-show和v-if有什么区别,使用场景分别是什么?
1、v-show和v-if的共同点 在vue中,v-if和v-show的作用效果是相同的(不含v-else),都能控制元素在页面是否显示,在用法上也相同。 当表达式为true的时候,都会占据页面的位置 当表达式为false的时候ÿ…...
常用的排序算法简介:冒泡、选择、插入、归并、快速
常用的排序算法包括冒泡排序、选择排序、插入排序、归并排序和快速排序。以下是它们的简单介绍: 1. 冒泡排序(Bubble Sort): 冒泡排序是一种经典的基于交换的排序算法。它重复地比较相邻的元素,如果顺序错误&#…...
Golang之路---04 项目管理——编码规范
本文根据个人编码习惯以及网络上的一些文章,整理了一些大家能用上的编码规范,可能是一些主流方案,但不代表官方。 1. 文件命名 由于 Windows平台文件名不区分大小写,所以文件名应一律使用小写 不同单词之间用下划线分词…...
hcip——期中小试
要求: 1、该拓扑为公司网络,其中包括公司总部、公司分部以及公司骨干网,不包含运营商公网部分。 2 、设备名称均使用拓扑上名称改名,并且区分大小写。 3 、整张拓扑均使用私网地址进行配置。 4 、整张网络中,运行 O…...
华云安参编的《云原生安全配置基线规范》正式发布
由中国信息通信研究院(以下简称“中国信通院”)、中国通信标准化协会主办的第十届可信云大会云原生安全分论坛于7月26日在北京国际会议中心成功召开。作为大会上展示的成果之一,由中国信通院联合行业领先企业共同编写的《云原生安全配置基线规…...
【计算机网络】NAT技术
文章目录 1. NAT技术简介2. 使用NAT技术转换IP的过程3. NAPT4. NAT技术的缺陷5. NAT和代理服务器 1. NAT技术简介 NAT(Network Address Translation,网络地址转换)技术,是解决IP地址不足的主要手段,并且能够有效避免外…...
ELF1开发板UART实战:RS485/RS232通信测试与常见问题排查
ELF1开发板UART实战:RS485/RS232通信测试与常见问题排查 在嵌入式系统开发中,UART通信是最基础也是最常用的外设接口之一。ELF1开发板作为一款面向工业应用的嵌入式平台,提供了多路UART接口,其中部分接口通过RS485和RS232电平转换…...
UNIT-00:Berserk Interface 在AI Agent开发中的应用:从规划、工具调用到记忆
UNIT-00:Berserk Interface 在AI Agent开发中的应用:从规划、工具调用到记忆 最近和几个做AI应用的朋友聊天,大家都有个共同的感受:现在的大模型能力确实强,但很多时候还是像个“一问一答”的聊天机器人。你想让它帮你…...
零基础入门大模型开发:三周实战速成指南
看到同事靠大模型开发拿到高薪offer,你还在犹豫自己不是AI专业?作为一名普通后端开发,我曾经也认为大模型开发高不可攀——直到亲眼目睹同组Java同事仅用一个月就成功转型大模型应用开发,薪资涨幅40%。那一刻我才恍然大悟…...
OpenClaw极简配置法:1条命令启动Qwen3.5-9B-AWQ-4bit沙盒体验
OpenClaw极简配置法:1条命令启动Qwen3.5-9B-AWQ-4bit沙盒体验 1. 为什么选择沙盒体验 第一次接触OpenClaw时,我被它强大的本地自动化能力吸引,但复杂的本地安装过程让我望而却步。直到发现平台提供的预置镜像方案,才真正体会到&…...
DeepSeek-OCR-2开源可部署:完全离线运行的国产OCR大模型方案
DeepSeek-OCR-2开源可部署:完全离线运行的国产OCR大模型方案 1. 项目简介 DeepSeek-OCR-2是DeepSeek团队于2026年1月发布的创新OCR识别模型,采用完全开源的方式提供给开发者使用。这个模型最大的特点是实现了完全离线运行,不需要依赖任何外…...
从标注到训练:手把手教你用Labelme制作YOLOv8-Pose可用的关键点数据集
从标注到训练:手把手教你用Labelme制作YOLOv8-Pose可用的关键点数据集 在计算机视觉领域,关键点检测技术正逐渐成为研究热点。无论是人体姿态估计、面部表情识别还是工业质检中的零件定位,准确的关键点检测都是实现这些应用的基础。然而&…...
FISCO BCOS 2.0 安装部署WeBASE与区块链浏览器
FISCO BCOS 2.0 安装部署WeBASE与区块链浏览器-对应的官网地址: WeBASE平台:https://webasedoc.readthedocs.io/zh-cn/latest/docs/WeBASE/install.html 区块链浏览器:https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/br…...
保姆级教程:在Windows 11上用PyTorch 2.1和CUDA 12.1搞定TFE-GNN加密流量分类模型
在Windows 11上部署TFE-GNN加密流量分类模型的完整指南 随着图神经网络(GNN)在网络安全领域的广泛应用,TFE-GNN模型因其在加密流量细粒度分类中的出色表现而备受关注。然而,对于使用最新硬件和软件环境的研究者来说,部…...
程序员必看:代码注释规范与最佳实践
1. 程序员与注释的爱恨情仇作为一名在代码海洋里摸爬滚打多年的老程序员,我见过太多令人啼笑皆非的代码注释。这些注释有的像谜语,有的像情书,有的干脆就是行为艺术。今天我们就来聊聊这个让无数程序员又爱又恨的话题——代码注释。记得我刚入…...
解决鸿蒙方向的Flutter框架版切换问题-当前最新版本3.35.8——工具切换与命令切换
欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net 最新版本的仓库地址: https://gitcode.com/openharmony-tpc/flutter_flutter/tree/oh-3.35.7-release 本地版本非最新版本 我当前的版本是3.27.5。 需要更新到最新的。 升…...
