2016-01-31 17 views
7

Ich installierte dd-Agent auf Amazon Linux ec2. Wenn ich mein Python-Skript direkt auf dem Host-Rechner ausführen lasse (ich habe das SDK "dogstatsd-python" verwendet), können alle Metriken an datadog gesendet werden (ich habe mich bei datadoghq.com angemeldet und dort die Metriken gesehen). das Skript ist so etwas wie:datadog Agent nicht erreichbar von innen Docker Container

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

Allerdings habe ich einen Docker Container ins Leben gerufen und das gleiche Skript aus dem Inneren des Behälters laufen:

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

'172.14.0.1' ist die IP-Adresse des Host, die mit dem Befehl wurde

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

keine Metriken gesendet wurden, überhaupt datadog .....

Ich vermute, dass es vielleicht aufgrund eines Konfigurationsproblems wie "Adressbindung" ist. Vielleicht kann der dd-Agent, den ich auf dem Host installiert habe, nur Metriken von 'localhost' empfangen.

Hoffe jemand könnte mir helfen. Vielen Dank im Voraus.

+0

Haben Sie eine Lösung gefunden ?. Ich stelle 'non_local_traffic: yes' ein, aber es scheint nicht zu funktionieren. – nerandell

Antwort

2

Wenn dd-agent auf localhost hört, kann es Daten nur von localhost (127.0.0.1) empfangen. Versuchen Sie, den dd-agent Host zu 0.0.0.0 statt localhost zu ändern.

Wir verwenden docker-dd-agent und es funktioniert OOTB.

+0

Vielen Dank! Ich habe "bind_host" von "localhost" auf "0.0.0.0" in /etc/dd-agent/datadog.conf geändert. und neu gestartet dd-agent. Aber das Problem besteht immer noch ... Gibt es noch etwas, das ich ändern muss? – sheny35

+0

Ja, ich kenne das dd-agent docker image. Aber aus irgendeinem Grund versuchen wir es zu vermeiden. – sheny35

9

Sie müssen non_local_traffic: yes in Ihrer /etc/dd-agent/datadog.conf Datei setzen. Andernfalls wird der Agent Metriken von Containern ablehnen.

Nach der Einstellung müssen Sie die Agenten neu starten, damit die Änderungen wirksam werden: sudo /etc/init.d/datadog-agent restart oder sudo service datadog-agent restart

Das docker-dd-agent Bild ermöglicht non_local_traffic: yes standardmäßig.

0

Sie möchten in diesem Fall nicht die IP des Hosts verwenden. Wenn Sie die Docker dd-Agent laufen lassen, gibt es zwei Umgebungsvariablen Sie anzapfen können:

statsd.connect(DOGSTATSD_PORT_8125_UDP_ADDR, DOGSTATSD_PORT_8125_UDP_PORT)

, die den Trick tun sollten. Wenn nicht, sollten Sie in der Lage sein, die relevanten Informationen zu Ihrem Problem in this section of the Datadog docs zu finden.

Außerdem sollte ich darauf hinweisen, dass die einzige Python-Bibliothek, die Datadog in ihren Dokumenten zeigt, datadogpy ist.