агент datadog недоступен изнутри контейнера докеров

Я установил dd-agent на Amazon linux ec2. Если я запускаю свой скрипт python непосредственно на хост-машине (я использовал SDK с именем «dogstatsd-python»), все метрики можно будет отправить в datadog (я вошел на datadoghq.com и увидел там метрики). сценарий выглядит примерно так:

from statsd import statsd
statsd.connect('localhost', 8125)
statsd.increment('mymetrics')

Однако я запустил док-контейнер и запустил тот же скрипт изнутри контейнера:

from statsd import statsd
statsd.connect('172.14.0.1', 8125)
statsd.increment('my metrics')

'172.14.0.1' - это IP-адрес хоста, который был извлечен с помощью команды

netstat -nr | grep '^0\.0\.0\.0' | awk '{print $2}'

В datadog не отправлялись никакие метрики ...

Я предполагаю, что, возможно, это связано с какой-то проблемой конфигурации, такой как "привязка адреса". Возможно, dd-agent, который я установил на хосте, может получать метрики только от localhost.

Надеюсь, кто-нибудь сможет мне помочь. Заранее спасибо.


person sheny35    schedule 31.01.2016    source источник
comment
Вы придумали, как исправить? Я установил non_local_traffic: yes, но похоже, что он не работает.   -  person nerandell    schedule 29.08.2017


Ответы (3)


Вам нужно будет установить non_local_traffic: yes в вашем /etc/dd-agent/datadog.conf файле. В противном случае агент будет отклонять метрики из контейнеров.

После настройки вам нужно будет перезапустить агент, чтобы изменения вступили в силу: sudo /etc/init.d/datadog-agent restart или sudo service datadog-agent restart

Образ docker-dd-agent по умолчанию включает non_local_traffic: yes.

person Scott Enriquez    schedule 01.02.2016
comment
В последней версии это файл /etc/datadog-agent/datadog.conf, а не dd-agent. - person Stian Jensen; 02.08.2018
comment
Это именно то, что было нужно. Моя установка: агент данных OS Windows server 2016 на хосте. оконные контейнеры. оставив детали для других, кто может нуждаться. - person Zameer Fouzan; 04.03.2019
comment
Я запустил это в Docker, и для меня самый простой способ заставить это работать было с переменной окружения DD_DOGSTATSD_NON_LOCAL_TRAFFIC = True. См. Также docs.datadoghq.com/agent/docker/ < / а>. - person Ben; 07.03.2021

Если dd-agent слушает localhost, он может получать данные только от localhost (127.0.0.1). Попробуйте изменить хост dd-agent на 0.0.0.0 вместо localhost.

Мы используем docker-dd-agent, и он работает OOTB.

person Aleš Roubíček    schedule 31.01.2016
comment
Спасибо! Я изменил bind_host с localhost на 0.0.0.0 в /etc/dd-agent/datadog.conf. и перезапустил dd-agent. Но проблема все еще существует ..... нужно ли что-то еще изменить? - person sheny35; 31.01.2016
comment
Да, я знаю образ докера dd-agent. Но по какой-то причине мы стараемся его не использовать. - person sheny35; 31.01.2016

На самом деле вы не хотите использовать IP-адрес хоста в этом случае. Если вы используете docker dd-agent, вы можете использовать две переменные среды:

statsd.connect(DOGSTATSD_PORT_8125_UDP_ADDR, DOGSTATSD_PORT_8125_UDP_PORT)

Это должно делать свое дело. В противном случае вы сможете найти соответствующую информацию о своей проблеме в этот раздел документации Datadog.

Также я должен отметить, что единственная библиотека Python, которую Datadog показывает в своих документах, - это datadogpy.

person Brandon Aaskov    schedule 22.09.2016