You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Datadog中为PostgreSQL多库配置统一自定义查询?

解决方案:在单个Instance条目下让自定义查询遍历指定数据库

可以实现,核心是给自定义查询添加run_on_multiple_databases: true参数,配合database_autodiscovery配置,就能让查询在所有指定的数据库上执行,无需重复配置实例条目。

正确配置示例

init_config:
instances:
  - host: host1
    port: 5432
    username: ...
    password: ...
    database_autodiscovery:
      enabled: true
      include:
        - db1$
        - db2$
        - db3$
    custom_queries:
      - metric_prefix: custom.postgres.{{dbname}}  # 用{{dbname}}变量区分不同数据库的指标
        query: select ...;  # 确保该查询在所有目标库都有对应的表/关系
        columns:
          - name: your_metric
            type: gauge
        run_on_multiple_databases: true  # 关键参数:开启多数据库执行

关键说明

  1. run_on_multiple_databases: true的作用
    默认情况下,自定义查询只会在实例连接的默认数据库(未指定dbname时为postgres)执行,database_autodiscovery仅对Datadog内置的PostgreSQL指标生效。添加这个参数后,代理会自动遍历database_autodiscovery.include列表中的每个数据库,单独执行该自定义查询。

  2. 额外注意事项

    • 确保使用的数据库账号拥有所有目标数据库的访问权限,否则会出现权限报错。
    • 查询中涉及的表、视图等对象必须在每个目标数据库中存在,否则仍会触发"relation ... does not exist"错误——如果部分数据库没有该对象,可在查询中加入条件判断(比如通过information_schema检查对象存在性)。
    • 用{{dbname}}变量在metric_prefix中标记数据库名,能让不同数据库的指标清晰区分,避免混淆。

为什么之前的配置失效

你之前的配置没有开启run_on_multiple_databases: true,导致自定义查询仍局限在默认的postgres库执行,而该库不存在你查询的对象,所以报错。

内容的提问来源于stack exchange,提问作者Piotr Rzepkowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 14:12:09