1

I am incrementing a Datadog counter in python:

from datadog import initialize
from datadog import ThreadStats
stats.increment('api.request_count', tags=['environment:' + environment])

And have set the metric type to "count" and the unit to "requests per none" in the metadata for the metric.

The code runs in a docker container on a kubernetes node in a Container Engine in Google Cloud... I have docker-dd-agent (https://github.com/DataDog/docker-dd-agent) running on each node.

I can move the container to any node and it logs around 200 requests per minute. But as soon as I scale it up and launch a second container, it only logs around 100 requests per minute. If I scale down to one container again, it spikes to 200 rpm again:

enter image description here

What could be causing the requests to drop or get overwritten from other pods?

4

2 回答 2

2

为什么不使用 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”函数将值转换为计数。

于 2017-05-26T04:50:45.967 回答
0

在 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 dogstatsd:dogstastd)。

有了这个设置,它现在可以在登台环境中工作,但不能在生产环境中工作。:/

于 2017-06-07T07:26:03.750 回答