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

Docker 环境下 PostgreSQL 监控实战:从 Exporter 到 Prometheus 的部署详解

Docker 环境下 PostgreSQL 监控实战:从 Exporter 到 Prometheus 的部署详解

文章目录

  • Docker 环境下 PostgreSQL 监控实战:从 Exporter 到 Prometheus 的部署详解
      • 一 节点简述
      • 二 节点监控部署
        • 1)创建 PostgreSQL 的 exporter 账号
        • 2)Docker run 启动 postgres-exporter
        • 3)docker-compose.pg05.yml 启动 postgres-exporter
      • 三 示例 pg_query.yaml 配置
      • 四 验证监控是否部署成功
      • 五 配置prometheus

本文详细介绍了如何使用 Docker 部署并监控 PostgreSQL 数据库。通过创建专用的 PostgreSQL Exporter 账号、配置 Docker 容器,以及使用 Prometheus 获取监控数据,用户可以轻松实现对 PostgreSQL 服务的性能监控。文章提供了 Docker Compose 的完整配置,并讲解了如何通过 pg_query.yaml 文件定制 SQL 查询监控。此外,文章还包括 Prometheus 的配置示例,确保能够成功抓取 PostgreSQL Exporter 数据。最终,用户可以通过访问指定 URL 验证监控系统的运行状态。本指南适合希望快速上手 PostgreSQL 监控的开发者与运维人员。

预备课

Docker 安装与配置:从入门到部署

Docker 部署 Prometheus+Grafana 监控系统快速指南

一 节点简述

IP描述
192.168.0.5PostgreSQL 服务节点

二 节点监控部署

1)创建 PostgreSQL 的 exporter 账号
# PostgreSQL server versions >= 10(pgsql版本大于10)
# 增加 postgres_exporter 监控 postgres
psql -U postgres -h 192.168.0.5 -p 5432 -d postgresCREATE USER postgres_exporter;
ALTER USER postgres_exporter WITH PASSWORD 'postgres_exporter';
ALTER USER postgres_exporter SET SEARCH_PATH TO postgres_exporter,pg_catalog;
GRANT CONNECT ON DATABASE postgres TO postgres_exporter;
GRANT pg_monitor to postgres_exporter;
#退出当前连接
\q 
2)Docker run 启动 postgres-exporter
docker run \--net=host \-e DATA_SOURCE_NAME="postgresql://postgres:password@localhost:5432/postgres?sslmode=disable" \quay.io/prometheuscommunity/postgres-exporter:v0.14.0
3)docker-compose.pg05.yml 启动 postgres-exporter
version: '3'
services:postgres_exporter:image: quay.io/prometheuscommunity/postgres-exporter:v0.14.0container_name: postgres_exporterhostname: postgres_exporter_90restart: alwaysenvironment:- DATA_SOURCE_NAME=postgresql://postgres_exporter:postgres_exporter@192.168.0.5:5432/postgres?sslmode=disable- PG_EXPORTER_EXTEND_QUERY_PATH=/file/queries.yamlnetworks:- appnetvolumes:- ./file/queries.yaml:/file/queries.yamlports:- "9187:9187"networks:appnet:external: true

:docker run 和 docker compose 任意选一种(file 宿主机目录记得改权限)。

三 示例 pg_query.yaml 配置

pg_query:name: pg_querydesc: PostgreSQL statement metrics, require pg_stat_statements installed in schema monitor, 9.4 ~ 12query: |SELECT datname, query, calls, total_time, min_time, max_time, mean_time, stddev_time, rows, blk_io_time FROM(SELECT dbid,queryid               AS query,sum(calls)            AS calls,sum(total_time)       AS total_time,min(min_time)         AS min_time,max(max_time)         AS max_time,max(mean_time)        AS mean_time,max(stddev_time)      AS stddev_time,sum(rows)             AS rows,sum(blk_read_time) + sum(blk_write_time) AS blk_io_timeFROM pg_stat_statements(false) pg_stat_statements(userid, dbid, queryid, query, calls,total_time, min_time, max_time, mean_time, stddev_time, rows,shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written,local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written,blk_read_time, blk_write_time)WHERE dbid != 1 AND userid != 10 AND calls > 4GROUP BY dbid, queryid ORDER BY total_time DESC LIMIT 64) q NATURAL JOIN (SELECT oid AS dbid, datname FROM pg_database WHERE datname NOT IN ('postgres','template0','template1')) d;ttl: 10timeout: 1min_version: 090400max_version: 130000tags:- cluster- extension:pg_stat_statements- schema:monitormetrics:- datname:usage: LABELdescription: database name- query:usage: LABELdescription: query identifier, bigint- calls:usage: COUNTERdescription: times been executed- total_time:usage: COUNTERdescription: Total time spent in the statement, in µs- min_time:usage: GAUGEdescription: Minimum time spent in the statement, in µs- max_time:usage: GAUGEdescription: Maximum time spent in the statement, in µs- mean_time:usage: GAUGEdescription: Mean time spent in the statement, in µs- stddev_time:usage: GAUGEdescription: Population standard deviation of time spent in the statement, in µs- rows:usage: COUNTERdescription: rows retrieved or affected by the statement- blk_io_time:usage: COUNTERdescription: time spent reading/writing blocks in µs (if track_io_timing is enabled)

四 验证监控是否部署成功

访问 URL:http://192.168.0.5:9187/metrics 。

五 配置prometheus

prometheus.yml 的配置,用于获取监控数据。

global:scrape_interval:     15s # 全局默认抓取间隔时间,所有抓取任务的默认频率为15秒external_labels:monitor: your-postgres_exporter # 外部标签,用于标识该 Prometheus 实例或监控来源
scrape_configs:- job_name: 'postgres' # 定义抓取 PostgreSQL 指标数据的任务名称static_configs:- targets: # 监控目标列表- 192.168.0.5:9187 # PostgreSQL Exporter 服务所在的 IP 和端口relabel_configs: # 重写标签配置,用于调整或添加标签- source_labels: [ "__address__" ] # 使用地址标签(IP 和端口)作为源标签regex: "(.*):(.*)" # 使用正则表达式提取 IP 和端口target_label: "instance" # 将提取的 IP 设置为新的 instance 标签值replacement: $1 # 替换 instance 标签的值为提取到的 IP,忽略端口

相关文章:

Docker 环境下 PostgreSQL 监控实战:从 Exporter 到 Prometheus 的部署详解

Docker 环境下 PostgreSQL 监控实战:从 Exporter 到 Prometheus 的部署详解 文章目录 Docker 环境下 PostgreSQL 监控实战:从 Exporter 到 Prometheus 的部署详解一 节点简述二 节点监控部署1)创建 PostgreSQL 的 exporter 账号2)…...

构建带有调试符号的srsRAN 4G

### 构建带有调试符号 首先确保已下载srsRAN 4G,并已创建并导航至构建文件夹: bash git clone https://github.com/srsran/srsran_4g.git cd srsRAN_4G mkdir build cd build 若srsRAN 4G已构建完成,应清除原有构建文件夹后继续。 可以使…...

算法题总结(十)——二叉树上

#二叉树的递归遍历 // 前序遍历递归LC144_二叉树的前序遍历 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> result new ArrayList<Integer>(); //也可以把result 作为全局变量&#xff0c;只需要一个函数即可。…...

【MySQL】MySQL 数据库主从复制详解

目录 1. 基本概念1.1 主从架构1.2 复制类型 2. 工作原理2.1 复制过程2.2 主要组件 3. 配置步骤3.1 准备工作3.2 在主服务器上配置3.3 在从服务器上配置 4. 监控和维护4.1 监控复制状态4.2 处理复制延迟4.3 故障恢复 5. 备份策略5.1 逻辑备份与物理备份5.2 增量备份 6. 使用场景…...

一种格式化printf hex 数据的方法

格式化输出HEX数据 调试过程中通常需要个格式化输出16进制数据&#xff0c;为了方便美观可以参考如下方法。 #define __is_print(ch) ((unsigned int)((ch) - ) < 127u - )/*** dump_hex* * brief hex打印* * param buf: 需要打印的原始数据* param size: 原始数据类型*…...

在LabVIEW中如何读取EXCEL

在LabVIEW中读取Excel文件通常使用“报告生成工具包”&#xff08;Report Generation Toolkit&#xff09;。以下是详细步骤&#xff1a; ​ 安装工具包&#xff1a;确保已安装“报告生成工具包”。这通常随LabVIEW一起提供&#xff0c;但需要单独安装。 创建VI&#xff1a; 打…...

布匹瑕疵检测数据集 4类 2800张 布料缺陷 带标注 voc yolo

布匹瑕疵检测数据集 4类 2800张 布料缺陷 带标注 voc yolo 对应标注&#xff0c;格式VOC (XML)&#xff0c;选配Y0L0(TXT) label| pic_ num| box_ _num hole: (425&#xff0c; 481) suspension_ wire: (1739&#xff0c; 1782) topbasi: (46&#xff0c; 46) dirty: (613&…...

灵动微高集成度电机MCU单片机

由于锂电技术的持续进步、消费者需求的演变、工具种类的革新以及应用领域的扩展&#xff0c;电动工具行业正呈现出无绳化、锂电化、大功率化、小型化、智能化和一机多能化的发展趋势。无绳化和锂电化的电动工具因其便携性和高效能的特性&#xff0c;已成为市场增长的重要驱动力…...

陪护小程序|护理陪护系统|陪护小程序成品

智能化&#xff0c;作为智慧医疗宏伟蓝图的基石&#xff0c;正引领着一场医疗服务的深刻变革。在这场变革的浪潮中&#xff0c;智慧医院小程序犹如璀璨新星&#xff0c;迅速崛起&#xff0c;而陪护小程序的诞生&#xff0c;更是如春风化雨&#xff0c;细腻地触及了老年病患、家…...

【JVM】基础篇

1 初识JVM 1.1 什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 Java源代码执行流程如下&#xff1a; 分为三个步骤&#xff1a; 1、编写Java源代码文件。 …...

软件测试工程师 朝哪里进阶?

软件测试工程师 朝哪里进阶&#xff1f; 这里浅谈一下我的看法。 软件测试工程师 朝哪里进阶呢&#xff1f; 当我们测试工程师工作了2-3年后&#xff0c;就需要往前走往高走&#xff0c;就像一句名言说的&#xff1a;我们需要像ceo一样工作。 将自己的边界扩大一点&#xff0…...

Obsidian Plugin Release Pre-check

- [ ] 修改代码 - [ ] 修改README.md - [ ] 修改manifest.json - [ ] --将上述修改push到GitHub-- - [ ] 修改release版本 git tag git tag -a 1.0.6 -m "1.0.6" git push origin 1.0.6 ------------------------------------------- 备忘https://semver.org/lang/…...

Unity中实现预制体自动巡逻与攻击敌人的完整实现指南

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

OpenJudge | Shortest Prefixes

总时间限制: 1000ms 内存限制: 65536kB 描述 A prefix of a string is a substring starting at the beginning of the given string. The prefixes of “carbon” are: “c”, “ca”, “car”, “carb”, “carbo”, and “carbon”. Note that the empty string is not co…...

速盾:高防服务器是如何防御CC攻击的?

高防服务器是一种专门用于防御DDoS&#xff08;分布式拒绝服务&#xff09;攻击的服务器。其中一种常见的DDoS攻击就是CC&#xff08;连续性攻击&#xff09;&#xff0c;它通过向目标服务器发送大量的请求来耗尽服务器资源&#xff0c;使网站无法正常运行。高防服务器采用多种…...

Android阶段学习思维导图

前言 记录下自己做的一个对Android原生应用层的思维导图&#xff0c;方便个人记忆扩展&#xff1b;这里只露出二级标题。 后语 虽然有些内容只是初步了解&#xff0c;但还是记录了下来&#xff1b;算是对过去一段学习的告别。...

React生命周期案例详解

React 组件的生命周期是指组件从创建、渲染、更新到卸载的整个过程。在 React 16 及之前的版本中&#xff0c;生命周期方法被分为几个不同的阶段&#xff1a;挂载&#xff08;Mounting&#xff09;、更新&#xff08;Updating&#xff09;、卸载&#xff08;Unmounting&#xf…...

【ubuntu】ubuntu20.04安装显卡驱动

1.安装 点击右下角Apply Changes。 等安装好之后&#xff0c;重启。 现在的nvidia驱动已经很好安装了&#xff0c;比早期时安装出现黑屏等情况好了很多。 2.验证 nvidia-smi...

Mongo Java Driver使用getCollection做分页查询遇到的一些坑

背景 最近在做Mongo上的表数据的迁移&#xff0c;原本应该是DBA要干的活&#xff0c;但是想着DBA排期比较长&#xff0c;加上我们开发的权限又非常有限&#xff0c;而且数据量又没有多少&#xff0c;就想着自己开发个小小的程序从旧实例上查&#xff0c;写到新实例上去算了。于…...

RK3568笔记六十四:SG90驱动测试

若该文为原创文章,转载请注明原文出处。 前面有测试过PWM驱动,现在使用两种方式来产生PWM驱动SG90,实现舵机旋转任意角度 方法一:使用硬件PWM 方法二:使用高精度定时器,GPIO模拟PWM. 一、PWM子系统框架 二、SG90控制方法 舵机的控制需要MCU产生一个周期为20ms的脉冲信号…...

Charticulator:突破传统桎梏的自定义数据可视化革新——从模板依赖到自由创作

Charticulator&#xff1a;突破传统桎梏的自定义数据可视化革新——从模板依赖到自由创作 【免费下载链接】charticulator Interactive Layout-Aware Construction of Bespoke Charts 项目地址: https://gitcode.com/gh_mirrors/ch/charticulator 数据可视化工具是否常常…...

水下机器人导航的‘感官进化’:从纯视觉VIO到声光惯压融合的SVIn2系统拆解

水下机器人导航的‘感官进化’&#xff1a;从纯视觉VIO到声光惯压融合的SVIn2系统拆解 当一台水下机器人潜入浑浊的湖泊执行管道巡检任务时&#xff0c;它的视觉传感器突然失效——悬浮颗粒使画面变成乳白色噪点&#xff0c;而水流扰动让惯性测量单元(IMU)数据充满噪声。这正是…...

从零搭建AI办公助手:OpenClaw+百川2-13B-4bits七日实践计划

从零搭建AI办公助手&#xff1a;OpenClaw百川2-13B-4bits七日实践计划 1. 为什么选择这个组合&#xff1f; 去年冬天&#xff0c;当我第一次听说OpenClaw这个开源自动化框架时&#xff0c;内心是充满怀疑的。作为一个长期被各种"智能助手"忽悠的技术从业者&#xf…...

2026年鱼生专用花生油:哪些品牌值得选?

大家好&#xff0c;今天咱们聊聊一个很有趣的话题——鱼生专用花生油。说到鱼生&#xff0c;大家可能会想到广东、广西地区的美食&#xff0c;尤其是那一道道色香味俱全的鱼生&#xff0c;简直让人垂涎欲滴。但是&#xff0c;鱼生的美味离不开优质的食用油&#xff0c;尤其是花…...

ESP32+BC260Y+L76K开发板实战:NB-IoT户外定位数据上传MQTT全流程(附避坑指南)

ESP32BC260YL76K开发板实战&#xff1a;NB-IoT户外定位数据上传MQTT全流程&#xff08;附避坑指南&#xff09; 在物联网应用快速发展的今天&#xff0c;户外定位数据的采集与传输已成为智慧农业、资产追踪、环境监测等领域的核心需求。ESP32作为一款高性价比的Wi-Fi/蓝牙双模芯…...

AR.js实战指南:如何在Web浏览器中构建高效增强现实应用

AR.js实战指南&#xff1a;如何在Web浏览器中构建高效增强现实应用 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js 在移动设备普及的今天&#xff0c;增强现实&…...

tmux快速上手指南:3个核心命令与1个关键快捷键解析

1. 为什么你需要tmux&#xff1f; 如果你经常在服务器上工作&#xff0c;肯定遇到过这样的场景&#xff1a;正在跑一个耗时很长的任务&#xff0c;突然网络波动导致SSH连接断开&#xff0c;所有进程都被终止&#xff0c;几个小时的成果瞬间消失。这种时候&#xff0c;tmux就是你…...

Greasy Fork:用户脚本管理的一站式开源解决方案

Greasy Fork&#xff1a;用户脚本管理的一站式开源解决方案 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 从脚本新手到社区贡献者的进阶指南 一、功能探索&#xff1a;解锁浏览器增强新…...

OpenClaw技能开发入门:为nanobot镜像编写第一个插件

OpenClaw技能开发入门&#xff1a;为nanobot镜像编写第一个插件 1. 为什么需要自定义技能 当我第一次接触OpenClaw时&#xff0c;最让我惊喜的是它能够像人类一样操作电脑完成各种任务。但很快我发现&#xff0c;内置的基础技能并不能完全满足我的个性化需求。比如我需要定期…...

解码 DINO 核心:三大创新如何重塑端到端目标检测

1. 从DETR到DINO&#xff1a;目标检测的范式革命 记得我第一次用Faster R-CNN做目标检测时&#xff0c;光是调整锚框尺寸就花了整整三天。这种传统检测方法就像用老式打字机写代码——每个环节都需要手工微调。直到2020年DETR横空出世&#xff0c;才让我意识到目标检测还能这么…...