【30天精通Prometheus:一站式监控实战指南】第7天:postgres_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

本文主要是介绍【30天精通Prometheus:一站式监控实战指南】第7天:postgres_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

亲爱的读者们👋

  欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀

  Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪

  在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆

  目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯

  这是一段精彩旅程,期待你的加入!🎉


文章目录

  • 一、postgres_exporter概述📘
  • 二、安装postgres_exporter💾
    • 2.1 访问postgres_exporter官方网站 🌐
    • 2.2 选择适合的版本🔍
    • 2.3 下载postgres_exporter⬇️
    • 2.4 解压安装包📂
    • 2.5 创建postgres_exporter.yml认证文件
    • 2.6 在数据库创建监控用户并授权,以非超级用户身份运行
    • 2.7 运行postgres_exporter🚀
  • 三、postgres_exporter指标和配置详解📖
    • 3.1 postgres_exporter.service
  • 四、实战演练:生产环境搭建指南🔨
    • 4.1 创建普通用户管理postgres_exporter👤
    • 4.2 解压postgres_exporter.tar.gz📦
    • 4.3 将postgres_exporter集成到Prometheus配置中✂️
    • 4.4 更改postgres_exporter软件包名称✂️
    • 4.5 编辑postgres_exporter.service文件📝
    • 4.6 启动postgres_exporter.service🔌
    • 4.7 查看服务是否正常启动🔍
  • 相关资料下载地址📚

一、postgres_exporter概述📘

定义
  postgres_exporter是一个开源的监控工具,专门设计用于收集和导出PostgreSQL数据库的性能指标,以便进行监控和分析。它是Prometheus监控框架的一部分,可以将收集到的数据格式化为Prometheus可以识别的格式。

功能

  1.数据收集:postgres_exporter能够连接到PostgreSQL数据库,并从中收集各种性能指标,如查询执行时间、缓存使用情况、事务状态、连接数等。
  2.数据导出:收集到的数据会被格式化为Prometheus可以理解的metrics格式,使得Prometheus能够抓取并存储这些数据。
  3.兼容性:postgres_exporter支持多种PostgreSQL版本,并能很好地与Prometheus及其他监控工具集成。

应用场景

  • IT运维和数据库管理:对于管理和监控大量PostgreSQL数据库实例的企业或组织,postgres_exporter是一个非常重要的工具。它可以帮助IT运维团队实时监控每个数据库的性能状况,从而及时发现并解决潜在问题。
  • 云服务提供商:云服务提供商可以利用postgres_exporter为客户提供详尽的数据库性能报告,以此提升其服务质量并增强客户满意度。
  • 开发和测试环境:在软件开发和测试阶段,postgres_exporter可以帮助开发和测试团队监控数据库性能,确保应用程序与数据库的交互达到最优效果。

二、安装postgres_exporter💾

注意事项和常见问题
  1.权限问题:在安装postgres_exporter之前,请确认当前用户具有执行安装命令和访问必要目录的足够权限。在类Unix系统中,您可能需要使用sudo或作为root用户来执行安装。
  2.防火墙和安全组配置:默认情况下,postgres_exporter会监听某个特定端口(如9187)。请确保服务器的防火墙或安全组规则允许Prometheus服务器访问该端口。
  3.配置文件与服务管理:如果使用systemd来管理服务,请确保/etc/systemd/system/postgres_exporter.service文件已正确配置,以便服务能顺利启动、停止和重启。
  4.日志与错误排查:定期检查postgres_exporter的日志,以便及时发现问题并解决。如果使用systemd,可以利用journalctl -u postgres_exporter命令来查看相关日志。
  5.版本兼容性:在安装之前,请确认postgres_exporter的版本与您的PostgreSQL数据库以及Prometheus的版本相兼容。
  6.安装路径与权限:确保postgres_exporter的安装路径具有正确的权限,以便服务能够正常访问和执行。同时,检查所有配置文件(如包含数据库连接信息的配置文件)的路径和权限设置是否正确。

2.1 访问postgres_exporter官方网站 🌐

  • 打开浏览器,访问postgres_exporter的官方Github下载页面,通常位于Github官方网站下:https://github.com/prometheus-community/postgres_exporter/tree/v0.12.1?tab=readme-ov-file

2.2 选择适合的版本🔍

  • 在下载页面,你将看到不同操作系统的postgres_exporter二进制包。根据你的操作系统选择适合的版本。例如,如果你使用的是Linux 64位系统,就选择postgres_exporter-x.x.x.linux-amd64.tar.gz(其中x.x.x是版本号)。
postgres_exporter versionpostgres version
0.15.011、12、13、14、15、16+
0.14.010、11、12、13、14、15+
0.13.210、11、12、13、14、15+
0.13.110、11、12、13、14、15+
0.13.010、11、12、13、14、15+
0.12.19.4、9.5、9.6、10、11、12、13、14、15+
0.12.09.4、9.5、9.6、10、11、12、13、14、15+

2.3 下载postgres_exporter⬇️

  • 点击所选版本的下载链接,将postgres_exporter的二进制包下载到你的本地计算机。

2.4 解压安装包📂

  • 将下载的postgres_exporter压缩包解压到你想要安装的目录。你可以使用命令行工具(如tar)来完成这个步骤。解压后,你将看到一个名为postgres_exporter-x.x.x.linux-amd64的目录,其中包含postgres_exporter的二进制文件和其他相关文件。
tar -xzf postgres_exporter-x.x.x.linux-amd64.tar.gz

2.5 创建postgres_exporter.yml认证文件

auth_modules:foo1: # Set this to any name you wanttype: userpassuserpass:username: exporterpassword: exporter!@#2024options:# options become key=value parameters of the DSNsslmode: disable

2.6 在数据库创建监控用户并授权,以非超级用户身份运行

-- 为了使用IF语句,在尝试创建用户之前检查用户是否存在,  
-- 我们需要使用过程式SQL(PL/pgSQL)而不是标准SQL。  
-- 更多信息:https://www.postgresql.org/docs/9.3/plpgsql-overview.html  
-- 为了保持与9.0以下版本的兼容性,不使用DO块;而是创建并随后删除一个函数。  
CREATE OR REPLACE FUNCTION __tmp_create_user() returns void as $$
BEGIN-- 如果用户'exporter'不存在,则创建该用户  IF NOT EXISTS (SELECT                       -- SELECT列表可以为FROM   pg_catalog.pg_userWHERE  usename = 'exporter') THENCREATE USER exporter;END IF;
END;
$$ language plpgsql;-- 调用上面创建的函数来尝试创建用户  
SELECT __tmp_create_user();
-- 删除临时函数
DROP FUNCTION __tmp_create_user();-- 修改用户exporter的密码,并设置其搜索路径
ALTER USER exporter WITH PASSWORD 'exporter!@#2024';
ALTER USER exporter SET SEARCH_PATH TO postgres_exporter,pg_catalog;-- 如果作为非超级用户部署(例如在AWS RDS中),请取消注释下面的GRANT行,  
-- 并用您的根用户替换<MASTER_USER>。  
-- 授予用户exporter连接到postgres数据库的权限  
GRANT CONNECT ON DATABASE postgres TO exporter;-- 如果使用 PostgreSQL 版本大于或等于10,请运行以下命令,  
-- 授予用户postgres_exporter监控数据库的权限  
GRANT pg_monitor to exporter;-- 仅当使用早于10的 PostgreSQL 版本时,才运行以下SQL命令。  
-- 在PostgreSQL中,视图以创建视图的用户的权限运行,因此它们可以充当安全屏障。  
-- 需要创建函数来共享非超级用户的数据。只有通过创建视图,才会遗漏最重要的数据位。 -- 创建一个名为postgres_exporter的模式(如果不存在)  
CREATE SCHEMA IF NOT EXISTS exporter;-- 授予用户exporter 对该模式的使用权限  
GRANT USAGE ON SCHEMA exporter TO exporter;-- 创建一个函数,返回pg_stat_activity的集合  
CREATE OR REPLACE FUNCTION get_pg_stat_activity() RETURNS SETOF pg_stat_activity AS
$$ SELECT * FROM pg_catalog.pg_stat_activity; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;-- 创建一个视图,显示get_pg_stat_activity函数的结果  
CREATE OR REPLACE VIEW exporter.pg_stat_activity
ASSELECT * from get_pg_stat_activity();-- 授予用户exporter对该视图的查询权限  
GRANT SELECT ON exporter.pg_stat_activity TO exporter;-- 创建一个函数,该函数返回pg_stat_replication的集合  
-- pg_stat_replication是一个系统视图,提供了复制状态的信息
CREATE OR REPLACE FUNCTION get_pg_stat_replication() RETURNS SETOF pg_stat_replication AS
$$ SELECT * FROM pg_catalog.pg_stat_replication; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;-- 创建一个视图,该视图调用上面创建的get_pg_stat_replication函数来获取数据  
-- 注意这里将视图创建在了exporter模式下,与之前示例中的postgres_exporter模式不同  
-- 请确保您的环境中存在exporter模式,或者根据需要调整模式名称
CREATE OR REPLACE VIEW exporter.pg_stat_replication
ASSELECT * FROM get_pg_stat_replication();-- 授予exporter用户对该视图的查询权限,使得exporter用户可以查看复制状态信息  
GRANT SELECT ON exporter.pg_stat_replication TO exporter;-- 如果尚未安装pg_stat_statements扩展,则进行安装  
-- pg_stat_statements扩展用于跟踪SQL语句的执行统计信息  
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE OR REPLACE FUNCTION get_pg_stat_statements() RETURNS SETOF pg_stat_statements AS
$$ SELECT * FROM public.pg_stat_statements; $$
LANGUAGE sql
VOLATILE
SECURITY DEFINER;-- 创建一个视图,该视图调用上面创建的get_pg_stat_statements函数来获取数据  
-- 这个视图被创建在postgres_exporter模式下
CREATE OR REPLACE VIEW exporter.pg_stat_statements
ASSELECT * FROM get_pg_stat_statements();-- 授予postgres_exporter用户对该视图的查询权限  
-- 使得postgres_exporter用户可以查看SQL语句的执行统计信息 
GRANT SELECT ON exporter.pg_stat_statements TO exporter;

2.7 运行postgres_exporter🚀

  进入解压后的目录,并运行postgres_exporter服务器。在Linux下,你可以使用如下命令。这样就使用默认的配置启动postgres_exporter服务器。如果一切正常,你应该能在终端看到postgres_exporter的启动日志。

cd postgres_exporter-x.x.x.linux-amd64# 配置变量(DATA_SOURCE_NAME=postgresql://exporter:password@localhost:5432/postgres?sslmode=disable)
export DATA_SOURCE_NAME=postgresql://exporter:'exporter!@#2024'@127.0.0.1:5432/postgres?sslmode=disable# 启动服务
/home/deploy/postgres_exporter/postgres_exporter \--config.file=/home/deploy/postgres_exporter/postgres_exporter.yml \--log.level=info \--web.listen-address=:9187

三、postgres_exporter指标和配置详解📖

3.1 postgres_exporter.service

采集器

  • - -[no-]collector.database
       当启用 --collector.database 时,postgres_exporter 会收集与数据库整体性能相关的指标,如连接数、事务数、缓存命中率等。如果使用 --no-collector.database,则会禁用这个采集器,不收集这些指标。
  • - -[no-]collector.bgwriter
      PostgreSQL 有一个后台写进程(bgwriter),它负责将数据异步写入磁盘,以减轻前台进程的写负担。启用 --collector.bgwriter 时,postgres_exporter 会收集与 bgwriter 相关的性能指标,如写入的缓冲区数量、清理的缓冲区数量等。使用 --no-collector.bgwriter 会禁用这个采集器。
  • - -[no-]collector.replication_slot
       PostgreSQL 支持逻辑复制功能,其中 replication slot 是该功能的一个重要组件,用于保存复制进度。当启用 --collector.replication_slot 时,postgres_exporter 会收集与 replication slot 相关的指标,如 slot 的状态、是否活跃、是否堵塞等。如果使用 --no-collector.replication_slot,则会禁用这个采集器,不收集这些指标。

配置和监听

  • - -config.file=“postgres_exporter.yml”
       指定 postgres_exporter 的配置文件路径。配置文件中通常包含了连接到 PostgreSQL 数据库所需的参数,如数据库地址、端口、用户名、密码等,以及其他可能的配置选项。
  • - -[no-]web.systemd-socket
       使用该标志来指示 postgres_exporter 使用 systemd 套接字激活来监听连接,而不是直接监听特定的网络端口。这种方式可以让 systemd 管理套接字并传递连接给 postgres_exporter,通常用于提高安全性和性能。
  • - -web.listen-address=:9187
      设置 postgres_exporter 监听的 IP 地址和端口。在这个例子中,它监听所有 IP 地址(由 : 表示)的 9187 端口。你可以更改 IP 地址和端口号以满足你的网络配置需求。
  • - -web.config.file=“”
      [实验性] 这个参数允许你指定一个配置文件,该文件可以包含用于启用 TLS 加密连接或设置身份验证的选项。这是一个实验性功能,因此在使用之前应该仔细测试。
  • - -web.telemetry-path=“/metrics”
       定义了 postgres_exporter 暴露指标数据的 HTTP 路径。在这里,Prometheus 或其他监控工具将通过访问 /metrics 路径来获取数据。你可以根据需要更改这个路径。

指标和设置

  • - -[no-]disable-default-metrics
       使用 --disable-default-metrics 标志时,postgres_exporter 将不会收集默认的 PostgreSQL 监控指标。这些默认指标通常包括数据库连接数、事务状态、锁信息等。如果你只想收集特定的自定义指标,而不是默认的全面监控,那么这个选项会很有用。
  • - -[no-]disable-settings-metrics
       PostgreSQL 的 pg_settings 视图提供了数据库的配置信息。如果你不希望 postgres_exporter 收集这些配置信息相关的指标,可以使用 --disable-settings-metrics 标志来禁用它们。
  • - -[no-]auto-discover-databases
       PostgreSQL 服务器上可能运行着多个数据库。当启用 --auto-discover-databases 时,postgres_exporter 会自动发现服务器上的所有数据库,并为每个数据库收集指标。如果你只想监控特定的数据库,可以禁用这个选项,并在配置文件中明确指定要监控的数据库。
  • - -extend.query-path=“”
       允许你指定一个包含自定义查询的文件路径。postgres_exporter 会执行这些自定义查询,并将结果作为指标暴露出来。这对于需要监控 PostgreSQL 中非标准或特定业务逻辑的指标非常有用。你可以在这个文件中编写任意的 SQL 查询,并定义如何将这些查询的结果转换为 Prometheus 可以理解的指标格式。例如:- -extend.query-path=/home/deploy/postgres_exporter/queries.yml

其他选项

  • - -[no-]dumpmaps
       当使用 --dumpmaps 参数时,postgres_exporter 不会实际运行并暴露指标,而是会转储(dump)内部指标映射并退出。这主要用于调试和开发目的,以帮助开发者理解 postgres_exporter 如何将 PostgreSQL 的内部指标映射到 Prometheus 可以理解的格式。

  • - -constantLabels=“”
       此参数允许用户为所有暴露的指标设置一组常量的标签。这些标签将附加到 postgres_exporter 收集的每个指标上。格式应为 label=value,如果有多个标签,它们之间应使用逗号分隔。这有助于在 Prometheus 中对数据进行更细致的划分和查询。

  • - -exclude-databases=“”
       当启用 autoDiscoverDatabases 时,此参数允许用户指定一个数据库列表,这些数据库将被排除在自动发现过程之外。这对于你希望监控大多数数据库但排除某些特定数据库的情况非常有用。

  • - -include-databases=“”
       与 exclude-databases 相反,此参数允许用户指定一个数据库列表,仅当启用 autoDiscoverDatabases 时,postgres_exporter 才会监控这些指定的数据库。这有助于减少监控范围,只关注最重要的数据库。

  • - -metric-prefix=“pg”
       默认情况下,postgres_exporter 暴露的指标名称都以 pg_ 为前缀。使用此参数,用户可以更改这个前缀。例如,如果你希望所有指标都以 mypg_ 开头而不是 pg_,你可以设置 --metric-prefix=“mypg”。

四、实战演练:生产环境搭建指南🔨

4.1 创建普通用户管理postgres_exporter👤

useradd deploy

4.2 解压postgres_exporter.tar.gz📦

注意:
  我的是x86,所以使用postgres_exporter-0.12.1.linux-amd64.tar.gz,您可以使用uname -a命令查看系统架构

tar xvf postgres_exporter-0.12.1.linux-amd64.tar.gz -C /home/deploy/

4.3 将postgres_exporter集成到Prometheus配置中✂️

  将postgres_exporter集成到Prometheus配置中,确保数据能够正常采集。编辑Prometheus的配置文件(通常是prometheus.yml),在scrape_configs部分添加postgres_exporter的配置。告诉Prometheus将采集localhost:9187的数据。

scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "postgres_exporter"static_configs:- targets: ["localhost:9187"]

4.4 更改postgres_exporter软件包名称✂️

mv /home/deploy/postgres_exporter-0.12.1.linux-amd64.tar.gz /home/deploy/postgres_exporter

4.5 编辑postgres_exporter.service文件📝

cat > /etc/systemd/system/postgres_exporter	.service <<EOF
[Unit]
Description=PostgreSQL Exporter
After=network.target[Service]
Type=simple
User=root
Group=root
Environment="DATA_SOURCE_NAME=postgresql://exporter:'exporter!@#2024'@127.0.0.1:5432/postgres?sslmode=disable"
ExecStart=/home/deploy/postgres_exporter/postgres_exporter \--config.file=/home/deploy/postgres_exporter/postgres_exporter.yml \--log.level=info \--web.listen-address=:9101
ExecReload=/bin/kill -HUP
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF

4.6 启动postgres_exporter.service🔌

sudo systemctl daemon-reloadsudo systemctl enable --now postgres_exporter.service

4.7 查看服务是否正常启动🔍

# 查看service服务是否启动
sudo systemctl status postgres_exporter.service# 查看端口是否存在
sudo ss -ntulp | grep 9187

相关资料下载地址📚

  • 官方文档:https://prometheus.io/docs/introduction/overview/
  • 下载地址:https://github.com/prometheus/prometheus/releases/tag/v2.52.0
  • 文档地址:https://prometheus.io/docs/prometheus/latest/installation/
  • 离线包下载链接:https://pan.baidu.com/s/1ANF_AlFnM5_FMIbKBuzBmg 提取码:yqpt

这篇关于【30天精通Prometheus:一站式监控实战指南】第7天:postgres_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000804

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置