数据库越来越慢,我却一直找不到原因——直到装上Postgres Exporter找到了原因
前言做 PostgreSQL 运维最头疼的事情是什么很多人会说是数据库崩溃、磁盘爆满或者连接池耗尽。但真正让人难受的往往是另一种情况数据库明明还能用却越来越慢。页面加载开始变长接口响应时间逐渐增加偶尔还会冒出几个连接超时。用户觉得系统卡顿开发怀疑代码有问题运维查看服务器资源却发现 CPU、内存都很正常。最麻烦的是这类问题通常不会直接告诉你答案。到底是慢查询拖垮了数据库连接数接近上限缓存命中率下降还是锁等待导致事务堆积如果只是靠日志排查或者临时执行几条 SQL很难快速定位真正的问题。我曾经遇到过一次线上 PostgreSQL 性能下降的问题。业务反馈接口变慢但服务器监控一切正常。最后通过监控数据回溯才发现问题并不在 CPU而是在连接数持续上涨和锁等待不断增加。如果当时没有完整监控体系排查时间至少会翻几倍。后来我开始给 PostgreSQL 统一部署 Postgres Exporter把连接状态、查询性能、缓存命中率、复制延迟、锁等待等关键指标全部接入 Prometheus 和 Grafana。数据库第一次真正从一个黑盒变成了一个能够被持续观察和分析的系统。本文将带你从零开始完成Postgres Exporter的安全部署、权限配置、指标解读与可视化集成真正实现 “看得见、查得快、防得住” 的PostgreSQL运维闭环。无论你是DevOps工程师、DBA还是全栈开发者都能从中获得一套轻量、可靠、云原生友好的数据库监控方案。让我们一起把PostgreSQL的“黑盒”变成“透明引擎”。1.什么是Postgres ExporterPostgres Exporter是PostgreSQL 与 Prometheus之间的“桥梁”——它把数据库内部的运行状态如连接数、查询性能、锁等待等转化为Prometheus能理解的时序数据。它能做什么1.自动采集数百项PostgreSQL指标例如当前活跃/空闲连接数pg_stat_database.numbackends查询执行次数、失败次数pg_stat_database.xact_commit, xact_rollback块读取与缓存命中率blks_read, blks_hit → 可计算缓存命中率表/索引膨胀、死元组数量用于判断是否需要 VACUUM复制延迟pg_stat_replicationWAL写入量、检查点统计锁等待情况pg_locks2.支持自定义查询通过配置文件queries.yaml你可以定义自己的 SQL 查询将业务相关的数据库状态如“待处理订单数”也作为指标导出。3.兼容多版本PostgreSQL支持PostgreSQL 9.4及以上版本包括最新版。4.安全可控只需为Exporter创建一个只读监控用户推荐使用 pg_monitor 角色无需超级用户权限。工作原理Postgres Exporter作为一个独立进程运行可部署在DB服务器、应用服务器或容器中。它定期连接PostgreSQL执行内置或自定义的SQL查询。将结果转换为Prometheus 指标格式如gauge, counter。在HTTP端口默认 :9187提供 /metrics接口。Prometheus主动拉取Pull该接口存储指标并用于告警或可视化。典型应用场景监控数据库性能瓶颈慢查询、高 I/O、低缓存命中预防连接池耗尽跟踪复制延迟主从同步健康度自动化告警如“死元组超过100万”、“事务回滚率突增”构建Grafana看板实现数据库健康状态一目了然✅为什么选择 Postgres Exporter优势说明 轻量无侵入不修改数据库配置除网络和用户权限外☁️ 云原生友好支持容器化、Kubernetes、ServiceMonitor 社区活跃CNCF 生态项目持续维护更新 灵活扩展支持自定义指标满足业务监控需求2.Centos7安装Postgres_Exporter实时监控Postgres数据本地下载后上传到linux服务器下载地址https://github.com/prometheus-community/postgres_exporter/releases/tag/v0.19.1或者直接在linux服务器上wget方式下载# 新建目录mkdir-p/app/postgres_exporter1# 进入目标目录cd/app/postgres_exporter1# 下载wgethttps://github.com/prometheus-community/postgres_exporter/releases/download/v0.13.2/postgres_exporter-0.13.2.linux-amd64.tar.gz# 解压tar-vxzfpostgres_exporter-0.13.2.linux-amd64.tar.gz# 移动到安装目录mv/app/postgres_exporter1/postgres_exporter-0.13.2.linux-amd64 /app/postgres_exporter# 进入目录cd/app/postgres_exporter3.设置Postgres监控专属用户以postgres用户进入PostgreSQL命令行su- postgres psql创建专用监控用户角色-- 创建用户带登录权限密码为 ‘your_secure_password’CREATEUSERpostgres_exporter WITH PASSWORDyour_secure_passwordLOGIN;授予必要权限postgres_exporter 需要读取系统视图如 pg_stat_database、pg_stat_user_tables 等但不能拥有超级用户权限。方法 A推荐方式最小权限允许访问 pg_stat_* 统计信息需显式授权GRANT pg_monitor TO postgres_exporter;方法 B旧版本兼容PostgreSQL 10-- 手动授权关键视图GRANT CONNECT ON DATABASE postgres TO postgres_exporter;如果需要监控其他数据库如your_app_db也需授权GRANT CONNECT ON DATABASE your_app_db TO postgres_exporter;授予对 pg_stat_database 等系统视图的 SELECT 权限注意部分视图需在每个数据库中单独授权\c your_app_db GRANT SELECT ON pg_stat_database TO postgres_exporter;验证用户能否连接退出 psql# 测试本地连接psql-hlocalhost-Upostgres_exporter-dpostgres4.将postgres_exporter配置为系统服务cd/usr/lib/systemd/systemvimpostgres_exporter.service[Unit]Descriptionhttps://github.com/prometheus-community/postgres_exporterAfternetwork-online.target[Service]TypesimpleUserrootGrouprootEnvironmentDATA_SOURCE_NAMEpostgresql://postgres_exporter:postgres_exporterx.x.x.x:5432/postgres?sslmodedisableExecStart/usr/local/postgres_exporter/postgres_exporterExecReload/bin/kill-HUPKillModeprocessTimeoutStopSec20sRestartalways[Install]WantedBydefault.target服务命令# 生效系统systemd文件systemctl daemon-reload# 设置开机自启systemctlenablepostgres_exporter# 查看状态systemctl status postgres_exporter# 启动systemctl start postgres_exporter.service# 停止systemctl stop postgres_exporter.service也可以手动启动# 后台启动nohup./postgres_exporter/app/postgres_exporter/postgres_exporter.out21接下来我们通过使用浏览器用IP9187就可以访问我们安装好的postgres_exporter页面啦5.配置prometheus监控postgres_exporter找到prometheus的配置文件编辑添加如下内容viprometheus.yml- targets:[localhost:9187]labels: app:postgres_exporter重启prometheus服务:systemctl restart prometheus使用浏览器Ip9090打开promethues的页面我们可以看到成功的检测到了postgres_exporter服务啦为了实现Prometheus对位于公网或不同局域网中的PostgreSQL数据库的监控可在目标机器上部署postgres_exporter以暴露数据库指标并通过内网穿透工具cpolar将其本地监听端口如9187安全地映射到公网。Prometheus服务器即可通过cpolar提供的公网地址拉取远端数据库的监控数据从而在不依赖复杂网络配置或暴露数据库本身的前提下完成跨网络的监控集成。6.安装cpolar内网穿透工具cpolar 可以将你本地电脑中的服务如 SSH、Web、数据库映射到公网。即使你在家里或外出时也可以通过公网地址连接回本地运行的开发环境。❤️以下是安装cpolar步骤使用一键脚本安装命令sudocurlhttps://get.cpolar.sh|sh安装完成后执行下方命令查看cpolar服务状态如图所示即为正常启动sudosystemctl status cpolarCpolar安装和成功启动服务后在浏览器上输入虚拟机主机IP加9200端口即:【ip:9200】访问Cpolar管理界面使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可打开浏览器访问本地9200端口使用cpolar账户密码登录即可,登录后即可对隧道进行管理。7.配置公网地址登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道隧道名称可自定义本例使用了:postgres_exporter注意不要与已有的隧道名称重复协议http本地地址9187域名类型随机域名地区选择China Top创建成功后打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址接下来就可以在其他电脑或者移动端设备异地上使用地址访问。访问成功。8.将本postgres_exporter暴露给Prometheus进行远程抓取Prometheus可以通过这个公网地址51bd1f65.r2.cpolar.top访问到运行在本地9187端口的postgres_exporter服务从而抓取系统指标。- targets:[51bd1f65.r2.cpolar.top]labels: app:postgres_exporter抓取成功9.保留固定公网地址使用cpolar为其配置二级子域名该地址为固定地址不会随机变化。点击左侧的预留选择保留二级子域名地区选择china Top然后设置一个二级子域名名称我这里演示使用的是postgres大家可以自定义。填写备注信息点击保留。登录cpolar web UI管理界面点击左侧仪表盘的隧道管理——隧道列表找到所要配置的隧道postgres点击右侧的编辑。修改隧道信息将保留成功的二级子域名配置到隧道中域名类型选择二级子域名Sub Domain填写保留成功的二级子域名地区: China Top点击更新更新完成后打开在线隧道列表此时可以看到随机的公网地址已经发生变化地址名称也变成了保留和固定的二级子域名名称。最后我们使用固定的公网地址在任意设备的浏览器中访问可以看到成功访问本地部署的页面这样一个永久不会变化的二级子域名公网网址即设置好了。结尾体验下来Postgres Exporter 最大的价值并不是提供了多少监控指标而是让 PostgreSQL 的运行状态变得透明。以前数据库出现问题时往往只能通过日志和经验去猜测原因。而接入 Postgres Exporter 之后连接数、事务提交情况、缓存命中率、锁竞争、复制状态等关键指标都会持续被记录下来。很多原本只能事后分析的问题现在都能够提前发现趋势。尤其是在结合 Grafana 之后数据库健康状态会变得非常直观。哪些时间段压力最高、哪些 SQL 可能存在性能问题、哪些实例正在出现异常都能够通过图表快速呈现。而当 Alertmanager 加入之后监控系统也不再只是“看板”。连接数过高、复制延迟增加、锁等待异常等问题都能够自动触发告警让问题在影响业务之前就被发现。再结合 cpolar 提供的公网访问能力后即使 PostgreSQL 分布在不同网络环境甚至不同城市也能够统一接入 Prometheus 进行远程监控和管理。对于个人开发者、DBA 以及企业运维团队来说这是一套轻量但非常实用的可观测性方案。很多人觉得数据库监控是出了问题才需要。但真正经历过线上故障之后就会明白最有价值的监控从来不是告诉你数据库已经出问题了。而是在问题发生之前提前告诉你它正在变坏。常直观。哪些时间段压力最高、哪些 SQL 可能存在性能问题、哪些实例正在出现异常都能够通过图表快速呈现。而当 Alertmanager 加入之后监控系统也不再只是“看板”。连接数过高、复制延迟增加、锁等待异常等问题都能够自动触发告警让问题在影响业务之前就被发现。再结合 cpolar 提供的公网访问能力后即使 PostgreSQL 分布在不同网络环境甚至不同城市也能够统一接入 Prometheus 进行远程监控和管理。对于个人开发者、DBA 以及企业运维团队来说这是一套轻量但非常实用的可观测性方案。很多人觉得数据库监控是出了问题才需要。但真正经历过线上故障之后就会明白最有价值的监控从来不是告诉你数据库已经出问题了。而是在问题发生之前提前告诉你它正在变坏。

相关新闻

RAG系统性能调优:从检索到生成的优化策略

RAG系统性能调优:从检索到生成的优化策略

1. RAG系统性能调优的必要性 在构建基于检索增强生成(RAG)的问答系统时,开发者常常会遇到两个典型问题:响应延迟高和生成答案质量不稳定。这两个问题直接影响用户体验和系统可用性。延迟问题通常表现为用户查询后需要等待数秒才能…

2026/7/26 9:33:08阅读更多 →
UART进阶应用:地址匹配、硬件流控与红外通信详解

UART进阶应用:地址匹配、硬件流控与红外通信详解

1. 项目概述:深入UART的进阶功能在嵌入式开发领域,UART(通用异步收发传输器)几乎是每个工程师的“老朋友”。我们用它来打印调试信息、连接传感器、与上位机通信,其基础操作——配置波特率、数据位、停止位——早已是肌…

2026/7/26 9:33:08阅读更多 →
h2oGPT:开源大模型本地化部署与隐私保护实践

h2oGPT:开源大模型本地化部署与隐私保护实践

1. h2oGPT:开源大模型领域的隐私守护者去年我在为一家金融机构做AI咨询时,遇到一个典型困境——他们既想用大语言模型处理客户财务数据,又担心数据泄露风险。当时市面上要么是闭源商业API(数据必须上传第三方)&#xf…

2026/7/26 9:33:08阅读更多 →
3个简单步骤:快速上手VisualGGPK2流放之路资源编辑工具

3个简单步骤:快速上手VisualGGPK2流放之路资源编辑工具

3个简单步骤:快速上手VisualGGPK2流放之路资源编辑工具 【免费下载链接】VisualGGPK2 Library for Content.ggpk of PathOfExile (Rewrite of libggpk) 项目地址: https://gitcode.com/gh_mirrors/vi/VisualGGPK2 如果你是一名《流放之路》玩家,想…

2026/7/26 10:57:31阅读更多 →
抖音内容收藏革命:5分钟打造你的个人视频档案馆

抖音内容收藏革命:5分钟打造你的个人视频档案馆

抖音内容收藏革命:5分钟打造你的个人视频档案馆 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…

2026/7/26 10:57:31阅读更多 →
终极指南:如何快速解密游戏音频文件?ACB Decrypter完整教程

终极指南:如何快速解密游戏音频文件?ACB Decrypter完整教程

终极指南:如何快速解密游戏音频文件?ACB Decrypter完整教程 【免费下载链接】acbDecrypter 项目地址: https://gitcode.com/gh_mirrors/ac/acbDecrypter 还在为无法提取游戏中的背景音乐和音效而烦恼吗?🎮 许多现代游戏使…

2026/7/26 10:57:31阅读更多 →
基于Swin Transformer与小波分析的轴承故障诊断方法

基于Swin Transformer与小波分析的轴承故障诊断方法

1. 项目背景与核心价值 轴承作为旋转机械的核心部件,其健康状态直接影响设备运行安全。传统振动信号分析方法依赖人工特征提取,存在诊断效率低、泛化能力弱的问题。本项目创新性地结合小波时频分析与Swin Transformer模型,实现了端到端的智能…

2026/7/26 10:57:31阅读更多 →
Jellium Desktop窗口尺寸快捷键:快速调整播放窗口大小

Jellium Desktop窗口尺寸快捷键:快速调整播放窗口大小

Jellium Desktop窗口尺寸快捷键:快速调整播放窗口大小 【免费下载链接】jellium-desktop An unofficial desktop client for Jellyfin 项目地址: https://gitcode.com/GitHub_Trending/je/jellium-desktop Jellium Desktop 是一款非官方的 Jellyfin 桌面客户…

2026/7/26 10:57:31阅读更多 →
SoundCloud Redux:基于React、Redux与Redux-Saga构建的终极SoundCloud API客户端

SoundCloud Redux:基于React、Redux与Redux-Saga构建的终极SoundCloud API客户端

SoundCloud Redux:基于React、Redux与Redux-Saga构建的终极SoundCloud API客户端 【免费下载链接】soundcloud-redux SoundCloud API client with React • Redux • Redux-Saga 项目地址: https://gitcode.com/gh_mirrors/so/soundcloud-redux SoundCloud R…

2026/7/26 10:55:30阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →