惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
博客园_首页
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
美团技术团队
小众软件
小众软件
Jina AI
Jina AI
S
SegmentFault 最新的问题
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - MSSQL123

timescaledb 扩展 PostgreSQL 18+ 版本下源码编译安装 ubuntu24下 ext4和xfs类型磁盘以及PostgreSQL实例性能对比测试 PostgreSQL 18 新特性 skip scan,一个鸡肋的功能 PostgreSQL 17 流复制中开启逻辑复制槽同步,以及逻辑槽的故障转移 记一次PostgreSQL交叉表crosstab行转列导致的OOM TiDB 扩容与缩容 PostgreSQL 高可用集群 patroni 自动故障转移测试 Ubuntu 20 环境下 patroni 自动化安装,一分钟快速搭建 patroni 集群 Ubuntu 20 环境下 pg_auto_failover 自动化安装,一分钟快速搭建pg_auto_failover集群 PostgreSQL的消息队列扩展pgmq 磁盘IO延迟和队列深度的关系 TiDB 最小拓扑架构集群安装 PostgreSQL 逻辑复制中的同步和异步模式以及其表现 prometheus 的 altermanager Silences静默告警,优雅地抑制告警 “世界上百分之99的博士和他们的论文都是垃圾”,原本以为这个观点偏激 pg_auto_failover 在多种场景下自动故障转移的验证 pgbouncer连接池设置与压力测试的最大连接数测试 pg_auto_failover 自动故障转移参数 博文阅读密码验证 - 博客园 pg_auto_failover 高可用中,PostgreSQL实例配置文件的加载步骤 pg_auto_failover集群monitor节点的高可用 prometheus监控Linux Server node_exporter代理安装和配置 prometheus监控windows window_exporter代理安装和配置 记一次MySQL binlog日志导致磁盘空间占满的问题 SQLServer 2019 标准版在虚拟机上无法充分利用CPU的问题诊断 Windows Failover Cluster集群中的EventId 1196错误日志 pg_auto_failover 环境变量导致的show命令错误 SqlServer 事务复制(transaction replication)的复制位点信息 SqlServer 事务复制的两个参数immediate_sync,allow_anonymous MySQL,SqlServer,PostgreSQL中,如何实现锁定一张表
Prometheus 和 Grafana 监控 PostgreSQL
MSSQL123 · 2026-01-28 · via 博客园 - MSSQL123

1,客户端安装配置postgres_exporter代理

1.1 下载客户端

cd /usr/local
cd postgresql_package/
ll
sudo su
sudo -
sudo
sudo useradd -M -r -s /sbin/nologin postgres_exporter

#笔者是一个arm架构的Linux操作系统,因此下载的是arm64版本的postgres_exporter.这里可以根据自己的环境下载对应的版本
wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.18.1/postgres_exporter-0.18.1.linux-arm64.tar.gz
tar xf postgres_exporter*.tar.gz
ll
sudo  wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.18.1/postgres_exporter-0.18.1.linux-arm64.tar.gz
sudo  tar xf postgres_exporter*.tar.gz
ll
sudo mv postgres_exporter-0.18.1.linux-arm64 postgres_exporter
ll
cd postgres_exporter/
ll
sudo chown -R postgres_exporter /usr/local/postgresql_package/postgres_exporter

其实postgres_exporter代理的客户端非常简单,只有一个postgres_exporter文件,(pg_stat_statements.yaml后面会提到,这里不涉及这个文件)

image

1.2 编辑配置文件

编辑postgres_exorpter的配置文件(.env为隐藏文件,postgres:your_password)

root@******:/usr/local/postgresql_package/postgres_exporter# cat .env
# Format
# DATA_SOURCE_NAME=postgresql://username:password@localhost:5432/postgres?sslmode=disable

# Monitor all databases via postgres_exporter
DATA_SOURCE_NAME="postgresql://postgres:******@localhost:5432/?sslmode=disable"

# PG_EXPORTER_EXTEND_QUERY_PATH="/usr/local/postgresql_package/postgres_exporter/pg_stat_statements.yaml"

# Monitor specific databases on the PostgreSQL server
# DATA_SOURCE_NAME="postgresql://username:password@localhost:5432/database-name?sslmode=disable"

授权当前目录给postgres_exporter 
sudo chown -R postgres_exporter: ./postgres_exporter

1.3 编辑systemctl服务文件

配置postgres_exporter的systemctl服务,并启动服务

sudo tee /etc/systemd/system/postgres_exporter.service<<EOF
[Unit]
Description=Prometheus exporter for Postgresql
Wants=network-online.target
After=network-online.target
[Service]
User=postgres_exporter
Group=postgres_exporter
WorkingDirectory=/usr/local/postgresql_package/postgres_exporter
EnvironmentFile=/usr/local/postgresql_package/postgres_exporter/.env
ExecStart=/usr/local/postgresql_package/postgres_exporter/postgres_exporter --web.listen-address=:9187 --web.telemetry-path=/metrics
Restart=always
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start postgres_exporter
sudo systemctl enable postgres_exporter

1.4 验证代理的http接口

http://192.168.*:*:9187,如果可以正常访问,至此postgres_exporter已经配置完成。

image

image

2,Prometheus服务端 添加 postgres_exporter

2.1 prometheus配置文件增加postgres_exporter的客户端代理

  # PostgreSQL Monitoring with postgres_exporter
  - job_name: 'postgres_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.*.*:9187']

2.2 重启prometheus服务端

systemctl restart prometheus

2.3 prometheus管理控制台查看postgres_exporter

实际上是上面http://192.168.*:*:9187这个代理客户端注册到服务端中

image

2.4  grafna导入postgresql监控的官方模板9628

官方的监控模板效果如下

image

可以在grafana官方参考已有的模板
https://grafana.com/grafana/dashboards/

3,增加自定义监控指标

3.1 创建自定义指标的yaml配置文件

参考上面第一个截图,上面提到pg_stat_statements.yaml这个文件,这里基于pg_stats_statements做一个统计,计算结果相当于数据库的QPS指标
image

pg_stat_statements:
  query: " SELECT datname, sum(calls) as calls FROM pg_stat_statements JOIN pg_database ON pg_stat_statements.dbid = pg_database.oid group by datname"
  metrics:
    - datname:
        usage: "LABEL"
        description: "Database name"
    - calls:
        usage: "COUNTER"
        description: "Number of times executed"

3.2,编辑postgres_exorpter的配置文件,加载自定义配置

如下,在postgresql的配置文件.env中增加一行配置
PG_EXPORTER_EXTEND_QUERY_PATH="/usr/local/postgresql_package/postgres_exporter/pg_stat_statements.yaml"

root@******:/usr/local/postgresql_package/postgres_exporter# cat .env
# Format
# DATA_SOURCE_NAME=postgresql://username:password@localhost:5432/postgres?sslmode=disable

# Monitor all databases via postgres_exporter
DATA_SOURCE_NAME="postgresql://postgres:******@localhost:5432/?sslmode=disable"

PG_EXPORTER_EXTEND_QUERY_PATH="/usr/local/postgresql_package/postgres_exporter/pg_stat_statements.yaml"

# Monitor specific databases on the PostgreSQL server
# DATA_SOURCE_NAME="postgresql://username:password@localhost:5432/database-name?sslmode=disable"

授权当前目录给postgres_exporter 
sudo chown -R postgres_exporter: ./postgres_exporter

3.3,重启prometheus服务端

systemctl restart prometheus

3.4,检查自定义数据的收集

image

3.5,在grafana面板上增加自定义指标的监控图

在官方模板9628的基础上,点击新增报表,选择自定义数据源的数据pg_stat_statements_call 这个指标,来计算数据库的QPS指标

image

其效果如下

image

参考链接:
https://www.rockdata.net/zh-cn/tutorial/monitor-with-prometheus-and-grafana/
https://www.rockdata.net/zh-cn/tutorial/prometheus-custom-metrics/
https://www.linux.org.ru/forum/general/15376989