当前位置: 首页 > news >正文

Windows上搭建PostgreSQL监控神器:Grafana+Prometheus+Postgres_Exporter保姆级干货教程

❓想要实时掌握 PostgreSQL 数据库的运行状态?

👀想知道复制延迟、锁等待这些核心指标?

🆒这里是Moshow的「CSDN https://zhengkai.blog.csdn.net/」

🚀这篇文章带你从零开始,在 Windows 上搭建一套企业级的监控系统。

🔍 一、我们要搭建什么?

Prometheus:负责采集和存储 PostgreSQL 的性能数据

Grafana:负责将数据以漂亮的图表展示出来

postgres_exporter:一个“翻译官”,负责从 PostgreSQL 中提取指标并提供给 Prometheus

最终效果:你可以通过浏览器直观地看到 PostgreSQL 的 QPS、连接数、复制延迟、锁等待等关键指标,并支持历史数据查询和告警。

🪟 二、环境准备

操作系统:Windows 10 / Windows Server 2016 及以上

数据库:已安装 PostgreSQL 9.6 及以上版本(本文以 PostgreSQL 16 为例)

网络:确保防火墙放通必要的端口(见文末)

📦 三、安装 Prometheus

Prometheus 是一个独立的可执行文件,不需要安装,下载解压即可。

下载

访问,选择windows-amd64版本(例如prometheus-最新版本号.windows-amd64.tar.gz)。

解压

将压缩包解压到你想存放的目录,比如D:\prometheus。

解压后会看到prometheus.exe和prometheus.yml等文件。

修改配置

用记事本打开prometheus.yml,找到scrape_configs部分,在末尾添加下面内容(用于后续抓取 postgres_exporter 的数据):

scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] # ⬇️新增 PostgreSQL 监控任务(占位,等配置好 exporter 后启用) - job_name: "postgresql" static_configs: - targets: ["localhost:9187"]

启动 Prometheus

双击prometheus.exe会弹出一个命令行窗口,看到Server is ready to receive web requests即表示启动成功。

⚠️注意:这个窗口关闭后 Prometheus 就会停止,生产环境建议将其注册为 Windows 服务(可使用 NSSM 工具)。

验证

打开浏览器访问http://localhost:9090,看到 Prometheus 的 Web UI 即为正常。

📊 四、安装 Grafana

Grafana 提供 Windows 安装包,一路下一步即可。

下载

访问,选择Windows版本,下载.msi安装包(或者绿色压缩包.tar.gz)。

安装

双击.msi文件,按向导完成安装。安装后 Grafana 会自动以 Windows 服务形式在后台运行。 | 如果是下载.zip压缩包, 则解压后打开即可。

(如果是绿色版则在bin里面找到grafana-server.exe,双击打开)

访问 Grafana

打开浏览器访问http://localhost:3000,默认用户名/密码为admin/admin。登录后系统会要求你修改密码。

添加 Prometheus 数据源

🗄️ 五、配置 postgres_exporter

这是连接 PostgreSQL 和 Prometheus 的桥梁。

下载

访问,下载postgres_exporter-最新版本号.windows-amd64.tar.gz。

解压

将文件解压到D:\postgres_exporter。

创建数据库监控用户

使用 pgAdmin 或 DBeaver连接到 PostgreSQL,执行以下 SQL 创建专用用户:(懒人做法,直接用你的postgres super user,生产环境不建议!)

CREATE USER postgres_exporter WITH PASSWORD 'moshow123'; GRANT CONNECT ON DATABASE postgres TO postgres_exporter; GRANT pg_monitor TO postgres_exporter;

(关于pg_monitor权限是否足够,可以参考这个~)

💡 如果您的 PostgreSQL 版本低于 10,需手动授予相关视图权限,但建议升级至 10 以上。

设置连接信息并启动

打开命令提示符(cmd),执行:

cd D:\Software\monitoring\postgres_exporter-0.19.0.windows-amd64 set DATA_SOURCE_NAME=postgresql://postgres_exporter:moshow123@localhost:5432/postgres?sslmode=disable postgres_exporter.exe --web.listen-address=:9187

看到日志输出Starting Server即为成功。

此时可以访问http://localhost:9187/metrics查看采集到的指标。

验证 Prometheus 是否抓取

回到 Prometheus Web UI,点击Status→Targets,找到postgresql任务,状态应为UP。如果状态为 DOWN,检查防火墙是否放行了 9187 端口。

📈 六、导入 Grafana 仪表盘

现在数据已经打通,我们直接使用社区优秀的仪表盘模板,无需自己画图。

找一个合适的仪表盘

推荐使用 ID 9628,这个专为 postgres_exporter 设计,包含复制延迟、锁监控等面板。(可以到https://grafana.com/grafana/dashboards/?search=postgres 慢慢挑选!)

导入仪表盘查看效果

仪表盘会立即显示当前数据库的各项指标。如果之前没有数据,可以等几分钟后再看。

收藏Dashboard

如果你忘了点收藏,他可能就消失了,你的去Recently Viewed Dashboards里面找到他,给他点个🌟收藏一下,顺便也给我点个🌟点个👍吧。

欣赏Dashboard

🔥七、压测

先通过psql连接到目标数据库,建一张简单的表用于写入:

CREATE TABLE random_writes ( id SERIAL PRIMARY KEY, value TEXT, created_at TIMESTAMP DEFAULT now() );

测试随机生成1w条数据

DO $ DECLARE i INT; -- 声明变量放在 BEGIN 之前 BEGIN FOR i IN 1..10000 LOOP INSERT INTO random_writes (value) VALUES (md5(random()::text)); PERFORM pg_sleep(0.01); -- 可选延迟 END LOOP; END $;

🪵八、总结

通过以上步骤,你已经拥有了一套完整的 PostgreSQL 监控系统:

✅ Prometheus 负责数据存储

✅ Grafana 负责可视化

✅ postgres_exporter 负责采集数据库指标

现在你可以随时查看数据库的健康状况,无论是复制延迟、死锁,还是慢查询,都一目了然。如果你还想监控更多的数据库,只需在 prometheus.yml 中增加新的 targets 即可。

-------------------------------------- 🚀 Powered by Moshow 郑锴- 🌟 愿“圣码”护体,bug退散 🌟-------------------------------------🔍 公众号 👉 「软件开发大百科」💻 CSDN 👉 https://zhengkai.blog.csdn.net📂 GitHub 👉 https://github.com/moshowgame
http://www.jsqmd.com/news/541401/

相关文章:

  • 5分钟搞定ollama+qwen2.5模型配置:从下载到对话测试全流程指南
  • 博客开荒记
  • apt-offline终极指南:离线环境下的APT包管理解决方案
  • 机械结构零件优化分析:基于Matlab的设计探索
  • 嵌入式工程师高效学习与知识管理方法论
  • GPT-5-Codex CLI实战:如何用UIUIApi中转服务稳定获取API Key(避坑指南)
  • 基于单片机的汽车智能胎压监测预警系统设计
  • 手把手教你用kafka-storage.sh重新格式化Kafka KRaft集群数据目录(解决No meta.properties报错)
  • STM32智能充电桩系统设计与实现
  • C++ 内联函数的性能影响
  • 1688爬虫避坑:无痕浏览抓HTML+XPath二次拼接提取数据实战
  • 1949–2024年中国县级行政区划(逐年)|全国范围、75年连续、SHP格式
  • 双模型灾备方案:OpenClaw同时配置百川2-13B-4bits与Llama3应对服务中断
  • C#的yield return:延迟执行的迭代器模式实现
  • OpenClaw案例合集:Qwen3-VL:30B在飞书落地的10个实用场景
  • 基于2026校招数据分析:拥有这几张AI证书的学生,起薪普遍高30%
  • 3.26打卡
  • CX8242KA射频直采收发器性能测试与优化指南
  • 从零设计进程独立内核页表:XV6内存管理优化实战记录
  • 避坑指南:用ESP32驱动LD2420毫米波雷达时,串口数据丢失和自动开机卡死的那些事儿
  • 3个核心功能让Vue拖拽交互开发效率提升80%:从入门到电商级应用实践
  • MySQL基础运维:mysqldump全量备份与恢复实操 | 新手可直接落地的备份指南
  • 2021年中国村级行政区划边界矢量数据|行政村 + 社区|全国60万+单元|SHP格式、WGS84坐标
  • 单片机时序图分析与I²C协议实现指南
  • League-Toolkit:英雄联盟玩家的终极本地辅助工具,3分钟上手提升游戏效率
  • 初识Python正则表达式:从0到1的语法入门
  • ComfyUI模型管理完全指南:从零搭建高效AI创作流水线
  • PX4-Bootloader移植实战:从USB模拟串口到参数配置避坑指南
  • Petalinux-build --sdk卡在assimp?手动下载源码并集成到Yocto构建系统的完整指南
  • OpenClaw+QwQ-32B科研助手:文献摘要与笔记自动整理