4

datadog 的新手,所以我真的很困惑。第一次配置既快速又简单。但是,由于我想要一些特定于应用程序的图表,因此对于我当前的情况,它似乎不像以前那么清楚。

我们有一台主机和几台 docker 机器,每个服务一台: - nginx - varnish - apache - 数据库(mysql)

我们已经在主机内部安装了 datadog 客户端以及 docker 集成,一切正常。我没有得到的是如何从 apache 或 varnish 或 docker 内的任何服务获取指标。 例如,阅读 varnish中的文档,您必须执行:

$ sudo usermod -G varnish -a dd-agent

但是,我应该在哪里运行命令?dd-agent 用户只存在于宿主机中,不存在于 docker 容器中。清漆正好相反。

我是否需要在每个容器上安装代理?

它会被视为定价的另一个主机吗?

在 mysql 的情况下,我只需要配置代理:

init_config:

instances:
  - server: localhost
    user: datadog
    pass: <UNIQUEPASSWORD>

    tags:
        - optional_tag1
        - optional_tag2
    options:

但是由于我的主机和容器位于不同的路由中,我是否应该使用代理创建一个新的 docker 容器,以便它可以访问 db 容器(更改服务器字段)?它是否再次被视为另一个主机?

4

1 回答 1

1

在大多数情况下,datadog 代理通过连接到 URL 端点从集成中检索指标。nginx,mysql等服务就是这种情况。

这意味着您可以在主机上只运行一个数据狗代理,并将其配置为侦听从每个容器公开的服务的 URL 端点。

例如,假设使用以下命令运行 mysql docker 容器:

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=secret \
  -e MYSQL_DATABASE=mySchema \
  mysql

您可以在代理配置中指示运行在主机上的代理连接到容器 IP mysql.yaml

init_config:

instances:
- server: <container IP>
    user: datadog
    pass: secret

    tags:
        - optional_tag1
        - optional_tag2
    options:

Varnish 略有不同,因为代理使用varnishstat二进制文件检索指标。根据示例模板:

为了支持监控作为 Docker 容器运行的 Varnish 实例,我们需要使用在运行容器上执行 docker exec 的脚本来包装命令(varnishstat)。

为此,在主机上,为容器创建一个包装脚本:

echo "/usr/bin/docker exec varnish_container_name varnishstat "$@"" > /home/myuser/docker_varnish

varnish.yaml然后在代理配置中指定脚本位置:

init_config:

instances:
    - varnishstat: /home/myuser/docker_varnish
于 2018-08-21T03:48:18.723 回答