通过部署postgres_exporter采集PostgreSQL指标,结合Prometheus抓取数据并使用Grafana可视化,实现云原生环境下PostgreSQL的高效监控。1. 创建专用监控用户并授予权限;2. 部署postgres_exporter容器暴露:9187/metrics;3. 配置Prometheus通过ServiceMonitor或静态配置抓取指标;4. 在Grafana导入官方Dashboard(如ID 9628)展示连接数、慢查询、WAL速率等关键指标,并基于PromQL设置告警规则,保障数据库可观测性。

PostgreSQL 在云原生环境中运行时,通常以容器化方式部署在 Kubernetes 上。为了实现对 PostgreSQL 的高效、实时监控,集成 Prometheus 是一种主流且成熟的做法。以下是完整的 Prometheus 监控 PostgreSQL 的集成方案。
1. 使用 Prometheus Exporter 采集 PostgreSQL 指标
Prometheus 本身不能直接抓取 PostgreSQL 的内部状态,需要借助 postgres_exporter(也叫 prometheus-postgres-exporter)作为中间代理,将 PostgreSQL 的性能指标暴露为 Prometheus 可读的格式。
关键步骤:
在 PostgreSQL 实例中创建专用监控用户并授权:
CREATE USER postgres_exporter WITH PASSWORD 'your_secure_password';ALTER USER postgres_exporter SET SEARCH_PATH TO postgres_exporter,pg_catalog;CREATE SCHEMA IF NOT EXISTS postgres_exporter;GRANT USAGE ON SCHEMA pg_catalog TO postgres_exporter;GRANT SELECT ON pg_stat_database TO postgres_exporter;-- 更多权限可参考官方推荐 SQL 脚本
下载或使用官方镜像 wrouesnel/postgres_exporter 启动 exporter 服务。配置环境变量连接数据库:
export DATA_SOURCE_NAME="postgresql://postgres_exporter:password@localhost:5432/postgres?sslmode=disable"
启动后,默认在 :9187/metrics 暴露指标,如:
pg_up{datname="postgres"} 1pg_stat_database_numbackends{datname="postgres"} 3pg_longest_query_time_seconds 12.4
2. 在 Kubernetes 中部署 Postgres 和 Exporter
若使用云原生架构,建议将 PostgreSQL(如通过 Crunchy Data Operator 或 Zalando Postgres Operator 部署)与 exporter 一同部署。
部署方式示例(Sidecar 模式或独立 Deployment):
apiVersion: apps/v1kind: Deploymentmetadata: name: postgres-exporterspec: replicas: 1 selector: matchLabels: app: postgres-exporter template: metadata: labels: app: postgres-exporter spec: containers: - name: postgres-exporter image: wrouesnel/postgres_exporter:v0.14.0 env: - name: DATA_SOURCE_URI value: "postgres-service:5432/postgres?sslmode=disable" - name: DATA_SOURCE_USER value: "postgres_exporter" - name: DATA_SOURCE_PASS valueFrom: secretKeyRef: name: postgres-exporter-secret key: password ports: - containerPort: 9187---apiVersion: v1kind: Servicemetadata: name: postgres-exporter annotations: prometheus.io/scrape: "true" prometheus.io/port: "9187"spec: selector: app: postgres-exporter ports: - name: metrics port: 9187 targetPort: 9187
3. 配置 Prometheus 抓取指标
SciMaster
全球首个通用型科研AI智能体
156 查看详情
确保 Prometheus 能发现并抓取 exporter 暴露的端点。
在 Prometheus 配置中添加 job:
scrape_configs: - job_name: 'postgres' static_configs: - targets: ['postgres-exporter:9187']
如果使用 Prometheus Operator 和 ServiceMonitor:
apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata: name: postgres-exporter-monitor labels: release: prometheus-stack # 与 Prometheus 实例的 selector 匹配spec: selector: matchLabels: app: postgres-exporter endpoints: - port: metrics interval: 30s
4. 使用 Grafana 展示监控面板
导入官方推荐的 Grafana Dashboard(如 ID: 9628 或 17495),可视化以下关键指标:
数据库连接数(pg_stat_database_numbackends)事务提交/回滚率慢查询趋势表膨胀与死元组数量WAL 日志生成速率缓存命中率(blks_hit / (blks_hit + blks_read))
可通过自定义 PromQL 查询构建告警规则,例如:
- alert: HighConnectionUsage expr: rate(pg_stat_database_xact_commit[5m]) > 1000 for: 5m labels: severity: warning annotations: summary: "PostgreSQL 提交事务过高"
基本上就这些。整个流程在云原生环境下稳定可靠,结合 Kubernetes 的弹性与 Prometheus 的生态,能有效保障 PostgreSQL 服务的可观测性。
以上就是postgresql云原生监控如何集成_prometheus监控postgresql方案的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1084422.html
微信扫一扫
支付宝扫一扫