gpt4 book ai didi

kubernetes-helm - 使用 helm 和 values.yaml 部署 Datadog DaemonSet + 集群代理时如何包含集成指标?

转载 作者:行者123 更新时间:2023-12-05 01:33:42 30 4
gpt4 key购买 nike

使用:

 Kubernetes: 1.18.8
Helm: 3.3.4
Datadog DaemonSet agent: 7.23.0
Datadog cluster-agent: 1.9.0
Azure Database for PostgreSQL 11.x (i.e. external postgres-service)

我正在使用提供的说明将 Datadog 部署为 DaemonSet 并启用集群代理到 Kubernetes 集群 here .

helm install my-kubernetes -f values.yaml --set datadog.apiKey=<DATADOG_API_KEY> datadog/datadog --set targetSystem=linux

我正在使用指定的 values.yaml 文件配置 Datadog。

我想做一些自定义指标,特别是使用以前称为 postgres.yaml 的集成。我已尝试按照找到的 values.yaml 模板中的指定执行此操作 here ,像这样(将它放在集群代理中,因为这些是集群范围的指标):

# clusterAgent.confd -- Provide additional cluster check configurations
## Each key will become a file in /conf.d
## ref: https://docs.datadoghq.com/agent/autodiscovery/
confd:
postgres.yaml: |-
init_config:

instances:
- host: my-postgres-host.com
port: 5432
username: my-user
password: some-password
dbname: some-database
ssl: True
tags:
- some_tag
custom_queries:
- metric_prefix: some.prefix
query: SELECT COUNT(*) FROM bla WHERE timestamp > NOW() - INTERVAL '1 hour';
columns:
- name: countLastHour
type: count

根据文档,我可以确认使用 |- 前缀确实在路径 /etc/datadog-agent/conf.d/postgres.yaml 在我期望的节点上。该文件正确地包含 block 中的所有内容,即以 init_config:...

开头

现在,当启动节点时,我在日志中看到了这一点(DEBUG):

'/conf.d/postgres.yaml' -> '/etc/datadog-agent/conf.d/postgres.yaml'/conf.d/..2020_10_22_10_22_27.239825358 ->/etc/datadog-agent/conf.d/..2020_10_22_10_22_27.239825358'/conf.d/..2020_10_22_10_22_27.239825358/postgres.yaml' ->'/etc/datadog-agent/conf.d/..2020_10_22_10_22_27.239825358/postgres.yaml'

2020-10-22 10:22:29 UTC | CLUSTER | DEBUG |(pkg/autodiscovery/providers/file.go:196 in collectEntry) | Foundvalid configuration in file: /etc/datadog-agent/conf.d/postgres.yaml

2020-10-22 10:22:29 UTC | CLUSTER | DEBUG |(pkg/collector/scheduler.go:154 in getChecks) | Unable to load a checkfrom instance of config 'postgres': Core Check Loader: Check postgresnot found in Catalog

2020-10-22 10:22:29 UTC | CLUSTER | ERROR |(pkg/collector/scheduler.go:201 in GetChecksFromConfigs) | Unable toload the check: unable to load any check from config 'postgres'

文档 here指出,agents v7.x 中的 postgres yaml-contents 实际上应该在 /etc/datadog-agent/conf.d/postgres.d/conf.yaml 而不是 /etc/datadog-agent/conf.d/postgres.yaml。无法在配置键中创建子文件夹/使用正斜杠(在内部,该文件是使用 ConfigMap 创建的)。

我什至不确定问题是出在 yaml 文件路径还是缺少核心集成。所以我的主要任务是:如何在我的设置中正确启用 Datadog postgres 集成?

最佳答案

看起来问题已更新为您尝试监控的这个 postgres 数据库实际上并未运行集群。而且您无法将代理直接放在 postgres 服务器上,因为它是 Azure 中的托管服务,因此您无权访问底层主机。

在那些情况下,通常在其他主机上有一个随机的 datadog 代理来设置 postgres 集成,但是不要在 yaml 配置中使用 host: localhost,而是输入主机名放在外部访问数据库。在您的示例中,它是 host: my-postgres-host.com。这提供了与正常集成相同的所有好处(除非您显然没有可用的 cpu/磁盘/资源指标)

这一切都很好并且有道理,但是如果您安装的所有代理都是您创建的 kubernetes 守护进程中的代理怎么办?您没有直接在 VM 上运行此检查的任何主机。但我们绝对不建议配置 daemonset 直接运行此检查。如果你这样做了,那将意味着你正在从集群中每个节点中的那个 postgres 数据库收集重复的指标。由于每个代理都是一个副本,因此他们每个人都会对您定义的同一个数据库运行相同的检查。

enter image description here

幸运的是,我注意到您正在运行 Datadog 集群代理。这是一个单独的 Datadog 工具,每个集群部署一次作为单个服务,而不是每个节点运行一次的守护程序集。可以将集群代理配置为运行“集群级别”检查。非常适合数据库、消息队列或 http 检查等。

基本思想是(除了它的其他工作之外)集群代理也将安排检查。 DCA(datadog 集群代理)将从 daemonset 中选择一个代理来运行检查,如果该节点代理 pod 挂掉,DCA 将寻找一个新的代理来运行集群检查。

cluster agent scheduling node agent to query postgres

以下是有关如何设置 DCA 以运行集群检查的文档:https://docs.datadoghq.com/agent/cluster_agent/clusterchecks/#how-it-works

要配置它,您需要启用一些标志,并为 DCA 提供您使用配置映射创建的 yaml 文件,或者直接挂载该文件。 DCA 将该配置传递给它选择运行检查的任何节点代理。

关于kubernetes-helm - 使用 helm 和 values.yaml 部署 Datadog DaemonSet + 集群代理时如何包含集成指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64482767/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com