菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow prometheusbreadcrumb arrow prometheus.exporter.postgres
开源软件

prometheus.exporter.postgres

prometheus.exporter.postgres 组件嵌入 postgres_exporter 以从 PostgreSQL 数据库中收集度量。

可以通过指定不同的标签来指定多个 prometheus.exporter.postgres 组件。

使用方法

alloy
prometheus.exporter.postgres "LABEL" {
    data_source_names = DATA_SOURCE_NAMES_LIST
}

参数

支持以下参数

名称类型描述默认值必需
data_source_nameslist(secret)指定要连接的 PostgreSQL 服务器。yes
disable_settings_metricsbool禁用从 pg_settings 收集度量。falseno
disable_default_metricsbool当为 true 时,仅暴露从 custom_queries_config_path 供应的度量。falseno
custom_queries_config_pathstring包含要作为度量公开的自定义查询的 YAML 文件的路径。""no
enabled_collectorslist(string)启用收集器的列表。有关更多详细信息,请参阅以下信息。[]no

有关 data_source_names 中连接字符串格式的更多信息,请参阅PostgreSQL 文档

有关 custom_queries_config_path 文件的示例,请参阅 postgres_exporter 仓库

注意

有一些环境变量不建议使用,因为它们将影响所有 prometheus.exporter.postgres 组件。有关完整的环境变量列表,请参阅 postgres_exporter 仓库

默认情况下,启用的指标集合与上游的 postgres_exporter 相同。如果设置了 custom_queries_config_path,则还会公开给定配置文件中定义的附加指标。如果将 disable_default_metrics 设置为 true,则只会公开 custom_queries_config_path 文件中定义的指标。

可以通过设置 enabled_collectors 参数来控制指标收集器的一个子集。以下收集器可供选择

  • 数据库
  • 数据库包裹
  • 长时间运行的事务
  • postmaster
  • 进程空闲
  • 复制
  • 复制槽
  • stat_activity_autovacuum
  • stat_bgwriter
  • stat_database
  • stat_statements
  • stat_user_tables
  • stat_wal_receiver
  • statio_user_indexes
  • statio_user_tables
  • wal
  • xlog_location

默认情况下,以下收集器被启用

  • 数据库
  • 复制
  • 复制槽
  • stat_bgwriter
  • stat_database
  • stat_user_tables
  • statio_user_tables
  • wal

注意

由于上游导出器的限制,当使用多个 data_source_names 时,通过 enabled_collectors 参数控制的收集器将仅应用于列表中的第一个数据源。

以下块受支持

分层描述必需
自动发现自动发现数据库发现设置。no

自动发现块

autodiscovery 块配置了数据库的发现,而无需在 data_source_names 中指定。

支持以下参数

名称类型描述默认值必需
启用bool是否自动发现其他数据库。falseno
数据库允许列表list(string)要过滤的数据库列表,意味着只有这些数据库将被抓取。no
数据库拒绝列表list(string)要过滤掉的数据库列表,意味着将抓取所有其他数据库。no

如果 enabled 设置为 true 且未指定允许列表或拒绝列表,则导出器将从所有数据库中抓取。

如果禁用了自动发现,则 database_allowlistdatabase_denylist 将没有任何效果。

导出字段

以下字段被导出,可用于其他组件。

名称类型描述
目标list(map(string))可用于收集导出器指标的 Target。

例如,可以将 targets 传递给 discovery.relabel 组件以重写目标的标签集,或者传递给收集公开指标的 prometheus.scrape 组件。

导出的目标使用由 运行命令 指定的配置的 内存流量 地址。

组件健康

prometheus.exporter.postgres 仅在提供无效配置的情况下报告为不健康。

调试信息

prometheus.exporter.postgres 不公开任何特定组件的调试信息。

调试指标

prometheus.exporter.postgres 不公开任何特定组件的调试指标。

示例

从 PostgreSQL 服务器收集指标

此示例使用一个 prometheus.exporter.postgres 组件从运行在本地且具有所有默认设置的 PostgreSQL 服务器收集指标

alloy
// Because no autodiscovery is defined, this will only scrape the 'database_name' database, as defined
// in the DSN below.
prometheus.exporter.postgres "example" {
  data_source_names = ["postgresql://username:password@localhost:5432/database_name?sslmode=disable"]
}

prometheus.scrape "default" {
  targets    = prometheus.exporter.postgres.example.targets
  forward_to = [prometheus.remote_write.demo.receiver]
}

prometheus.remote_write "demo" {
  endpoint {
    url = PROMETHEUS_REMOTE_WRITE_URL

    basic_auth {
      username = USERNAME
      password = PASSWORD
    }
  }
}

替换以下内容

  • PROMETHEUS_REMOTE_WRITE_URL:要发送指标到的 Prometheus 远程_write 兼容服务器的 URL。
  • USERNAME:用于通过 remote_write API 进行身份验证的用户名。
  • PASSWORD:用于通过 remote_write API 进行身份验证的密码。

从允许列表中的一组数据库收集自定义指标

此示例使用一个 prometheus.exporter.postgres 组件从一组特定的数据库中收集自定义指标,用来自 /etc/alloy/custom-postgres-metrics.yaml 中查询的自定义指标替换默认指标

alloy
prometheus.exporter.postgres "example" {
  data_source_names = ["postgresql://username:password@localhost:5432/database_name?sslmode=disable"]

  // This block configures autodiscovery to check for databases outside of the 'database_name' db
  // specified in the DSN above. The database_allowlist field means that only the 'frontend_app' and 'backend_app'
  // databases will be scraped.
  autodiscovery {
    enabled            = true
    database_allowlist = ["frontend_app", "backend_app"]
  }

  disable_default_metrics    = true
  custom_queries_config_path = "/etc/alloy/custom-postgres-metrics.yaml"
}

prometheus.scrape "default" {
  targets    = prometheus.exporter.postgres.example.targets
  forward_to = [prometheus.remote_write.demo.receiver]
}

prometheus.remote_write "demo" {
  endpoint {
    url = PROMETHEUS_REMOTE_WRITE_URL

    basic_auth {
      username = USERNAME
      password = PASSWORD
    }
  }
}

替换以下内容

  • PROMETHEUS_REMOTE_WRITE_URL:要发送指标到的 Prometheus 远程_write 兼容服务器的 URL。
  • USERNAME:用于通过 remote_write API 进行身份验证的用户名。
  • PASSWORD:用于通过 remote_write API 进行身份验证的密码。

从拒绝列表中的数据库除外收集指标

此示例使用prometheus.exporter.postgres组件从除secrets数据库之外的所有数据库中收集自定义度量值。

alloy
prometheus.exporter.postgres "example" {
  data_source_names = ["postgresql://username:password@localhost:5432/database_name?sslmode=disable"]

  // The database_denylist field will filter out those databases from the list of databases to scrape,
  // meaning that all databases *except* these will be scraped.
  //
  // In this example it will scrape all databases except for the one named 'secrets'.
  autodiscovery {
    enabled           = true
    database_denylist = ["secrets"]
  }
}

prometheus.scrape "default" {
  targets    = prometheus.exporter.postgres.example.targets
  forward_to = [prometheus.remote_write.demo.receiver]
}

prometheus.remote_write "demo" {
  endpoint {
    url = PROMETHEUS_REMOTE_WRITE_URL

    basic_auth {
      username = USERNAME
      password = PASSWORD
    }
  }
}

替换以下内容

  • PROMETHEUS_REMOTE_WRITE_URL:要发送指标到的 Prometheus 远程_write 兼容服务器的 URL。
  • USERNAME:用于通过 remote_write API 进行身份验证的用户名。
  • PASSWORD:用于通过 remote_write API 进行身份验证的密码。

兼容组件

prometheus.exporter.postgres可以导出以下组件可以使用的导出项

注意

连接某些组件可能不合适,或者组件可能需要进一步配置才能正确连接。有关更多详细信息,请参阅链接的文档。