datadog的新手让我真的很困惑。第一种配置快速而简单。但是,由于我想要一些特定于应用程序的图表,因此对于我当前的场景来说,它似乎并不像以前那么清晰。
我们有一台托管计算机主机,每台服务一台: - nginx - 清漆 - 阿帕奇 - 数据库(mysql)
我们已经在主机内部安装了datadog客户端,还有docker集成,一切正常。 我没有得到的是如何从apache或varnish或docker中的任何服务获取指标。 Reading the docs in 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容器(更改服务器字段)? 是否又被视为另一个主持人?
答案 0 :(得分:0)
在大多数情况下,datadog代理通过连接到URL端点从集成中检索指标。对于诸如nginx,mysql等服务,情况就是如此。
这意味着您只能在主机上运行一个datadog代理,并将其配置为侦听从每个容器公开的服务的URL端点。
例如,假设使用以下命令运行mysql docker容器:
docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=mySchema \
mysql
您可以在mysql.yaml
代理配置中指示主机上运行的代理连接到容器IP:
init_config:
instances:
- server: <container IP>
user: datadog
pass: secret
tags:
- optional_tag1
- optional_tag2
options:
清漆略有不同,因为代理使用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