Prometheus Exporter (十五)PostgreSQL Server Exporter
本文已经收录在 Prometheus 合集 Prometheus 都可以采集那些指标?-- 常用 Exporter 合集 中。
最近几年,在关系型数据库中, PostgreSQL 大放异彩,使用度极速上升。今天我们来看看 PostgreSQL 的监控。
针对 PostgreSQL 数据库 Prometheus Community 提供了一个 PostgreSQL Server Exporter 来采集监控指标,官方仓库地址是 https://github.com/prometheus-community/postgres_exporter ,PostgreSQL Server Exporter 已经在 PostgreSQL 的 9.4、9.5、9.6、10、11、12、13 版本上测试过了。当前最新版本是 v0.10.0 ,发布于 2021 年 7 月 8 日。
安装运行
PostgreSQL Server Exporter 在启动的时候有很多参数可以选择,具体科学的如下:
help 展示帮助信息,也可以使用 --help-long 和 --help-man 。
web.listen-address 启动后程序监听的 web 端口,暴露监控数据也是这个端口,默认是 :9187 。
web.telemetry-path 暴露指标的路径,默认是 /metrics.
disable-default-metrics 关闭默认采集到指标,只使用通过 --extend.query-path 指定的 queries.yaml 文件里定义的指标。
disable-settings-metrics 如果不想获取 pg_settings 的监控指标可以使用这个参数来关闭。
auto-discover-databases 在服务器上动态发现数据库实例。
extend.query-path 自定义查询指标的文件路径,这个文件使用 YAML 格式来编写,启动前要校验文件格式。
dumpmaps 这个参数不会运行 Exporter ,只会打印内部的指标映射关系。用来 debug 自定义的查询文件。
constantLabels 设置所有指标的 Label,一般用一个列表的方式,通过 label=value 这样一对一对的设置,中间用逗号分隔。
version 打印 Exporter 的版本。
exclude-databases 启用 autoDiscoverDatabases 时不要收集的数据库列表。
include-databases 启用 autoDiscoverDatabases 时仅采集这个数据库列表里的数据库实例。
log.level 设置日志基本,一共有 4 中, debug, info, warn, error,选择其一就可以。
log.format 设置日志的格式, logfmt 或者 json.
web.config.file 使用 TLS 或者 basic authentication 的时候的配置文件,这个文件的搁置遵循 exporter-toolkit 仓库的规范。
PostgreSQL Server Exporter 在启动的时候有很多选项可以通过环境变量设置,如果 Exporter 是以二进制运行在机器上的话,不建议使用环境变量,因为环境变量的管理非常繁琐。如果是容器镜像的话,环境变量的管理会好一些。可以使用的环境变量如下:
DATA_SOURCE_NAME the default legacy format. Accepts URI form and key=value form arguments. The URI may contain the username and password to connect with.
DATA_SOURCE_URI an alternative to DATA_SOURCE_NAME which exclusively accepts the hostname without a username and password component. For example, my_pg_hostname or my_pg_hostname?sslmode=disable.
DATA_SOURCE_URI_FILE The same as above but reads the URI from a file.
DATA_SOURCE_USER When using DATA_SOURCE_URI, this environment variable is used to specify the username.
DATA_SOURCE_USER_FILE The same, but reads the username from a file.
DATA_SOURCE_PASS When using DATA_SOURCE_URI, this environment variable is used to specify the password to connect with.
DATA_SOURCE_PASS_FILE The same as above but reads the password from a file.
PG_EXPORTER_WEB_LISTEN_ADDRESS Address to listen on for web interface and telemetry. Default is :9187.
PG_EXPORTER_WEB_TELEMETRY_PATH Path under which to expose metrics. Default is /metrics.
PG_EXPORTER_DISABLE_DEFAULT_METRICS Use only metrics supplied from queries.yaml. Value can be true or false. Default is false.
PG_EXPORTER_DISABLE_SETTINGS_METRICS Use the flag if you don't want to scrape pg_settings. Value can be true or false. Default is false.
PG_EXPORTER_AUTO_DISCOVER_DATABASES Whether to discover the databases on a server dynamically. Value can be true or false. Default is false.
PG_EXPORTER_EXTEND_QUERY_PATH Path to a YAML file containing custom queries to run. Check out queries.yaml for examples of the format.
PG_EXPORTER_CONSTANT_LABELS Labels to set in all metrics. A list of label=value pairs, separated by commas.
PG_EXPORTER_EXCLUDE_DATABASES A comma-separated list of databases to remove when autoDiscoverDatabases is enabled. Default is empty string.
PG_EXPORTER_INCLUDE_DATABASES A comma-separated list of databases to only include when autoDiscoverDatabases is enabled. Default is empty string, means allow all.
PG_EXPORTER_METRIC_PREFIX A prefix to use for each of the default metrics exported by postgres-exporter. Default is pg
另外以 PG_
开头的环境变量在使用的时候会覆盖命令行参数,优先级较高。
添加新的监控指标
如果将来添加额外的监控指标, Exporter 将尝试动态添加并导出它们,但这些指标的类型会被标记为 “untyped”。通过复制这些表并使用以下 Python 代码片段,可以从 Postgres 文档中轻松创建其他其他指标的映射:
适当的调整新生产的 Prometheus 监控指标类型的值,这样可以明确指标的类型,并且有利于查询和计算。
扩展。query-path 命令行参数指定一个包含要运行的其他查询的 YAML 文件。在 queries.yaml 中提供了一些示例。
--extend.query-path
命令行参数提供了一个可以运行的 YAML 文件,这个文件可以自定义要采集的监控指标,这个文件的写法可以参考 queries.yaml 。
关闭默认指标采集
如果使用的是 Exporter 非官方支持的 Postgres 版本,比如 8.2.15 版本的 Postgres ,或者 Postgres 的变体,比如 Greenplum ,你可以使用 --disable-default-metrics
参数关闭所有的默认指标采集,这样所有的内置指标都不会出现了。这个时候需要使用--extend.query-path
指定 queries.yaml 文件来指定要采集到指标。否则只会采集到 Exporter 自身的指标,采集不到数据库的指标了。
打开自动发现数据库实例
为了从数据库服务器上的所有数据库中获取监控指标数据,可以通过 --auto-discover-databases
命令行参数动态发现数据库 DSN。SELECT datname FROM pg_database WHERE datallowconn = true AND datistemplate = false and datname != current_database()
将对所有配置的 DSN 运行,当结果为真时,从结果中创建一组新的 DSN,为其抓取监控指标。
这个时候可以搭配 --exclude-databases
和 --include-databases
两个参数使用,--exclude-databases
可以去掉不想要的数据库,--include-databases
可以保留只想要的数据。
小结
PostgreSQL Server Exporter 可以灵活多变的采集 Postgres 数据库的监控指标。
版权声明: 本文为 InfoQ 作者【耳东@Erdong】的原创文章。
原文链接:【http://xie.infoq.cn/article/3b7913430c333b9177fc7f83f】。未经作者许可,禁止转载。
评论