Datadog 计数指标因多个容器而下降
Datadog count metric dropping with multiple containers
我正在 python 中递增 Datadog 计数器:
from datadog import initialize
from datadog import ThreadStats
stats.increment('api.request_count', tags=['environment:' + environment])
并在指标的元数据中将指标类型设置为 "count",并将单位设置为 "requests per none"。
代码在 Google 云中容器引擎中的 kubernetes 节点上的 docker 容器中运行...我有 docker-dd-agent(https://github.com/DataDog/docker-dd-agent) 运行 在每个节点上。
我可以将容器移动到任何节点,它每分钟记录大约 200 个请求。但是一旦我扩大规模并启动第二个容器,它每分钟只记录大约 100 个请求。如果我再次缩小到一个容器,它再次飙升至 200 rpm:
什么可能导致请求被其他 pods 丢弃或覆盖?
为什么不使用 dogstatsd 而不是 threadstats?如果您已经 运行 节点上的 dd-agent 以容器可以访问的方式,您可以使用 datadog.statsd.increment()
方法而不是通过 statsd 将指标发送到代理,然后从那里它会被转发到您的 datadog 帐户。
Dogstatsd 的优点是更直接,更容易解决问题,至少在调试级日志记录方面是这样。 Threadstats 有时具有不需要 dd-agent 的好处,但它做的错误记录很少(如果有的话),因此很难对此类情况进行故障排除。
如果您选择了 dogstatsd 路线,您将使用以下代码:
from datadog import initialize
from datadog import statsd
statsd.increment('api.request_count', tags=['environment:' + environment])
然后您会从那里找到具有 "rate" 类型和间隔“10”的指标元数据,并且您可以使用 "as_count" 函数将值转换为计数。
在 python 脚本中,我使用 api 键进行初始化:
from datadog import api
from datadog import initialize
from datadog import statsd
options = {
'api_key':'#######'
}
initialize(**options)
并发送一些事件
api.Event.create(title=title, text=text, tags=tags)
当我将其更改为这样初始化时,它开始与 dd-agent 一起工作:
initialize(statsd_use_default_route=True)
我不需要 link 命令 (--link dogstatsd:dogstastd)。
通过该设置,它现在可以在暂存环境中运行,但不能在生产环境中运行。 :/
我正在 python 中递增 Datadog 计数器:
from datadog import initialize
from datadog import ThreadStats
stats.increment('api.request_count', tags=['environment:' + environment])
并在指标的元数据中将指标类型设置为 "count",并将单位设置为 "requests per none"。
代码在 Google 云中容器引擎中的 kubernetes 节点上的 docker 容器中运行...我有 docker-dd-agent(https://github.com/DataDog/docker-dd-agent) 运行 在每个节点上。
我可以将容器移动到任何节点,它每分钟记录大约 200 个请求。但是一旦我扩大规模并启动第二个容器,它每分钟只记录大约 100 个请求。如果我再次缩小到一个容器,它再次飙升至 200 rpm:
什么可能导致请求被其他 pods 丢弃或覆盖?
为什么不使用 dogstatsd 而不是 threadstats?如果您已经 运行 节点上的 dd-agent 以容器可以访问的方式,您可以使用 datadog.statsd.increment()
方法而不是通过 statsd 将指标发送到代理,然后从那里它会被转发到您的 datadog 帐户。
Dogstatsd 的优点是更直接,更容易解决问题,至少在调试级日志记录方面是这样。 Threadstats 有时具有不需要 dd-agent 的好处,但它做的错误记录很少(如果有的话),因此很难对此类情况进行故障排除。
如果您选择了 dogstatsd 路线,您将使用以下代码:
from datadog import initialize
from datadog import statsd
statsd.increment('api.request_count', tags=['environment:' + environment])
然后您会从那里找到具有 "rate" 类型和间隔“10”的指标元数据,并且您可以使用 "as_count" 函数将值转换为计数。
在 python 脚本中,我使用 api 键进行初始化:
from datadog import api
from datadog import initialize
from datadog import statsd
options = {
'api_key':'#######'
}
initialize(**options)
并发送一些事件
api.Event.create(title=title, text=text, tags=tags)
当我将其更改为这样初始化时,它开始与 dd-agent 一起工作:
initialize(statsd_use_default_route=True)
我不需要 link 命令 (--link dogstatsd:dogstastd)。
通过该设置,它现在可以在暂存环境中运行,但不能在生产环境中运行。 :/