wordpress农业站模板,龙岩网站建设运营,如何建立和设计公司网站作文,国家住房城乡建设厅网站本文我们将介绍如何在Prometheus中创建自定义PostgreSQL指标。默认情况下由postgres_export运行的查询可能不能满足用户需求#xff0c;但我们可以创建自定义查询#xff0c;并要求postgres_exporter公开自定义查询的结果。postgres_exporter最近被移到了Prometheus Communit…本文我们将介绍如何在Prometheus中创建自定义PostgreSQL指标。默认情况下由postgres_export运行的查询可能不能满足用户需求但我们可以创建自定义查询并要求postgres_exporter公开自定义查询的结果。postgres_exporter最近被移到了Prometheus Community存储库中并且它已经从PostgreSQL 11~16版本进行了测试。
这个工具将提供了大量PostgreSQL实例的性能指标让你检查PostgreSQL的运行状态并通过9187默认端口公开指标。
指标定义结构
postgres_exporter提供默认指标它们非常有用。但也支持灵活地使用yaml文件添加自定义指标。这个yaml文件必须包含查询来获取你想要监控的数据并且需要有固定的结构
metric_name:master: true (optional)cache_seconds: 30 (optional)query: SELECT metric_1, metric_2 FROM tablemetrics:- metric_1:usage: LABELdescription: Metric 1 description- metric_2:usage: GAUGEdescription: Metric 2 description它的结构非常简单每个部分都需要了解一些注意事项 metric_name与你想要的度量名称一样简单。 master在复制环境中这个值经常与Leader主机混淆。但它真正的意思是查询将只在DATA_SOURCE_NAME参数中配置的数据库中执行。 cache_seconds再次运行查询之前保留最后值的时间。如果度量数据不经常更改请考虑添加此参数。 query这是你的查询定义它的复杂性并不重要它可以是简单的或非常复杂的只要确保执行速度快。查询返回的每个字段将表示定义中的一个度量。 metrics这是查询返回的每个字段的数组。按照查询结果的顺序定义它对于每个度量字段您需要指定 usageLABEL、GAUGE、COUNTER或HISTROGRAM。这将取决于所检索的数据以及何在图表中展示。 description对检索到的数据的简短描述。
定义指标实例
Postgres exporter将度量名称和度量字段连接起来作为度量的完整名称例如metric_name_metric_1和metric_name_metric_2。
LABEL类型的指标不会由API公开因为它们将成为数字指标的一部分并且对于应用过滤器非常有用。这意味着在每个度量中必须至少有一个数值GAUGE COUNTER 或 HISTROGRAM。
度量指标定义
下面是典型的度量指标定义示例
pg_database_size:query: SELECT pg_database.datname, pg_database_size(pg_database.datname) as bytes FROM pg_databasemaster: truecache_seconds: 30metrics:- datname:usage: LABELdescription: Name of the database- bytes:usage: GAUGEdescription: Disk space used by the database上面指标的完整名称为pg_database_size_bytes
从postgresql -export REST-API检查度量
$ curl http://localhost:9187/metrics -s | grep pg_database_size_bytes
# HELP pg_database_size_bytes Disk space used by the database in bytes
# TYPE pg_database_size_bytes gauge
pg_database_size_bytes{datnamepostgres,serverpostgres:5432} 8.758051e06
pg_database_size_bytes{datnametemplate0,serverpostgres:5432} 8.602115e06
pg_database_size_bytes{datnametemplate1,serverpostgres:5432} 8.602115e06我们看到度量显示信息还添加了其他信息TYPE和描述显示为HELP并且将LABEL类型的所有字段添加到度量中我们可以对LABLE进行过滤。
可以在Grafana中添加简单图表 这只是非常简单的例子说明你可以做什么。下面继续介绍关于postgresql-export配置的一些要点。
PostgreSQL配置
根据你的环境可以仅使用单个postgres-exporter也可以在每个PostgreSQL实例中使用postgres-exporter你可以在DATA_SOURCE_NAME环境变量中使用连接字符串之间的逗号分隔来定义它。
要收集单个实例的指标可以这样设置DATA_SOURCE_NAME环境变量
DATA_SOURCE_NAMEpostgresql://POSTGRES_USER:PASSWORDlocalhost:5432/postgres?sslmodedisable如果你想为多个PostgreSQL实例设置postgres-exporter你可以这样设置环境变量
DATA_SOURCE_NAMEpostgresql://POSTGRES_USER:PASSWORDhost1:5432/postgres?sslmodedisable,postgresql://POSTGRES_USER:PASSWORDhost2:5432/postgres?sslmodedisable可以配置postgres-exporter从多个PostgreSQL实例中收集指标但目前还不是推荐的配置因为现有的一个尚未解决的错误会打开太多的连接来收集指标,在这里查看问题。因此建议每个PostgreSQL实例都有自己的postgres-exporter这样可以在监控仪表板中的查看所有节点。
业务相关指标
通常需要收集与业务相关信息相关的度量例如最近N小时内创建的用户数量、核心业务相关流程持续时间等。所有这些都可以添加到每个postgres-exporter服务配置中。有时为了保障数据库主要服务业务将复杂监控负载移出主节点例如复杂报告或连续聚合查询是在副本服务器中完成。
自动发现服务
PG_EXPORTER_AUTO_DISCOVER_DATABASEStrue是pg_exporter相关的配置选项。pg_exporter是用于从 PostgreSQL 数据库收集指标并将其暴露给监控系统如 Prometheus的工具。还可以将它与PG_EXPORTER_EXCLUDE_DATABASES和PG_EXPORTER_INCLUDE_DATABASES环境变量组合使用。当设置PG_EXPORTER_AUTO_DISCOVER_DATABASES为true时pg_exporter会自动发现 PostgreSQL 服务器中的所有数据库并开始收集这些数据库的相关指标。这意味着不需要手动为每个数据库配置监控pg_exporter会自动扫描并收集诸如数据库连接数、查询执行情况、事务处理数量等各种指标信息。
查询配置文件
使用环境变量PG_EXPORTER_EXTEND_QUERY_PATH添加自定义查询queries.yaml文件该值必须包含文件的路径。例如:
PG_EXPORTER_EXTEND_QUERY_PATH/opt/postgres_exporter/queries.yaml常量标签
PG_EXPORTER_CONSTANT_LABELS将添加到所有指标中。建议至少添加一个标签来帮助识别度量标准的来源比如cluster_name。当你有多个集群时将更容易过滤它们。
## 总结
本文中提出的建议是基于使用pg_exporter的经验以及在本地环境和云环境中进行的配置。并不是所有的配置参数都被提及但是重要的配置参数需要考虑实际需求但自定义度量指标总是在一定程度会派上用场。