2016-01-31 30 views
7

Ho installato dd-agent su Amazon linux ec2. Se eseguo il mio script python direttamente sulla macchina host (ho usato l'SDK chiamato "dogstatsd-python"), tutte le metriche possono essere inviate al datadog (ho effettuato l'accesso a datadoghq.com e ho visto le metriche lì). lo script è qualcosa di simile:agente datadog non raggiungibile dall'interno del contenitore docker

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

Tuttavia, ho lanciato un contenitore finestra mobile ed eseguire lo stesso script dall'interno del contenitore:

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

'172.14.0.1' è l'IP dell'host, che è stato estratto con il comando

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

Non metriche sono stati inviati a datadog a tutti .....

Suppongo che forse sia dovuto a qualche problema di configurazione come "address binding". Forse il dd-agent che ho installato sull'host può ricevere solo le metriche da 'localhost'.

Spero che qualcuno possa aiutarmi. Grazie in anticipo.

+0

Hai trovato una soluzione ?. Ho impostato 'non_local_traffic: yes' ma sembra che non funzioni. – nerandell

risposta

2

Se dd-agent è in ascolto su localhost, può ricevere dati solo da localhost (127.0.0.1). Prova a cambiare l'host dd-agent in 0.0.0.0 anziché in localhost.

Stiamo usando docker-dd-agent e funziona OOTB.

+0

Grazie! Ho cambiato "bind_host" da "localhost" a "0.0.0.0" in /etc/dd-agent/datadog.conf. e riavviato dd-agent. Ma il problema esiste ancora ... c'è qualcos'altro che devo cambiare? – sheny35

+0

Sì, conosco l'immagine mobile del dd-agent. Ma per qualche ragione, cerchiamo di evitare di usarlo. – sheny35

9

È necessario impostare non_local_traffic: yes nel file /etc/dd-agent/datadog.conf. In caso contrario, l'agente rifiuterà le metriche dai contenitori.

Dopo l'impostazione, è necessario riavviare l'agente per la modifica abbia effetto: sudo /etc/init.d/datadog-agent restart o sudo service datadog-agent restart

L'immagine docker-dd-agent consente non_local_traffic: yes per impostazione predefinita.

0

In questo caso, in realtà non si desidera utilizzare l'IP dell'host. Se si sta eseguendo il dd-agent finestra mobile, ci sono due variabili d'ambiente si può attingere:

statsd.connect(DOGSTATSD_PORT_8125_UDP_ADDR, DOGSTATSD_PORT_8125_UDP_PORT)

che dovrebbe fare il trucco. In caso contrario, dovresti essere in grado di trovare le informazioni pertinenti al tuo problema in this section of the Datadog docs.

Inoltre, vorrei sottolineare che l'unica libreria Python che Datadog mostra nei loro documenti è datadogpy.