2016-04-15 8 views
0

Ich versuche, sensu-server einzurichten, um meine Docker-Container zu überwachen, indem ich die Anweisungen auf this Post befolge.Fehler beim Einrichten von Containerized Sensu-Server und Client, um Docker zu überwachen

Der Docker-Daemon läuft auf dem gleichen Host hat die sensu-server und sensu-clients (localhost).

Die Datei Check-Docker, enthält einen Eintrag um das Skript zu nennen load-docker-metrics.sh

check-docker.sh

{ 
    "checks": { 
    "load_docker_metrics": { 
     "type": "metric", 
     "command": "load-docker-metrics.sh", 
     "subscribers": [ 
     "docker" 
     ], 
     "interval": 10 
    } 
    } 
} 

load-docker-metrics.sh

#!/bin/bash 
set -e 

# Count all running containers 
running_containers=$(echo -e "GET /containers/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock \ 
    | tail -n +5               \ 
    | python -m json.tool             \ 
    | grep \"Id\"               \ 
    | wc -l) 
# Count all containers 
total_containers=$(echo -e "GET /containers/json?all=1 HTTP/1.0\r\n" | nc -U /var/run/docker.sock \ 
| tail -n +5 \ 
| python -m json.tool \ 
| grep \"Id\" \ 
| wc -l) 

# Count all images 
total_images=$(echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock \ 
| tail -n +5 \ 
| python -m json.tool \ 
| grep \"Id\" \ 
| wc -l) 

echo "docker.invismac.running_containers ${running_containers}" 
echo "docker.invismac.total_containers ${total_containers}" 
echo "docker.invismac.total_images ${total_images}" 

if [ ${running_containers} -lt 3 ]; then 
    exit 1; 
fi 

load-docker-metrics macht im Grunde einige Aufrufe an die Docker-API und ruft einige Metriken ab. Wenn ich dieses Skript auf meinem Host (invismac) laufen, es gibt mir ein genaues Ergebnis:

docker.invismac.running_containers 7 
docker.invismac.total_containers 8 
docker.invismac.total_images 15 

Ich Start der sensu-Server-Container, mit diesem Befehl:

Docker run -d --name sensu-server \ -p 3000: 3000 \ -p 4567: 4567 \ -p 5671: 5671 \ -p 15672: 15672 \ -v $ PWD/Check-docker.json:/etc/sensu/conf .d/check-docker.json \ hiroakis/docker-sensu-server

Danach kann ich auf den richtigen Uchima Armaturenbrett, an Port 3000

Dann starte ich den Client, mit diesem Befehl:

Docker Lauf --name sensu-Client --privileged \ -v $ PWD/load-docker-metrics.sh: /etc/sensu/plugins/load-docker-metrics.sh \ -v /var/run/docker.sock:/var/run/docker.sock \ usman/sensu -client localhost sensu passwort CLIENT-1 localhost

Der Client soll mit RabbitMQ kommunizieren und sich in Uchima registrieren, aber nichts passiert. Ich habe den Container eingegeben, in dem der Client ausgeführt wird, und bei der Anzeige des Protokolls scheint ein Fehler bei rabbitMQ aufgetreten zu sein:

"timestamp": "2016-04-15T15: 18: 50.768594 + 0000", "level ":" Fehler“, "message": "[AMQP] erkannt TCP-Verbindungsfehler"}

RabbitMQ läuft, und ich kann hier seinen Endpunkt zugreifen:

http://localhost:15672

Das Armaturenbrett gibt mir einige Informationen: Ich habe 2 Verbindungen, 2 Kanäle, 2 Benutzer.

Auch, wenn ich an die sensu-Master-Container gehen, das kann ich rabbitmq überprüfen hat diesen Benutzer:

sensu [Administrator]

mit allen Berechtigungen:.

/sensu *. *.*

Irgendwelche Ideen, warum der sensu-Client nicht in der Lage ist, mit RabbitMQ zu kommunizieren? Einige andere überprüfen, dass ich es versuchen könnte? Übertrage ich einige falsche Werte bei der Konfiguration des Servers oder des Clients? Ist es nicht möglich, Server und Client auf demselben Host zu haben?

nDmesg auf dem Client, gibt mir diese Meldung auch (ich weiß nicht, ob es zusammenhängen könnte)

[29252,322147] Prüfung: type = 1400 Audit (1460734746,650: 975): apparmor = "Verweigern" Betrieb = "ptrace" Profil = "docker-default" pid = 27531 comm = "ps" requested_mask = "Spur" denied_mask = "Spur" peer = "unconfined"

Uchima dashboard

Antwort

0

ich habe das gleiche Problem. Hat alles von this Anweisung, sieht sehr ähnlich wie Ihre. Die einzige Möglichkeit, das Problem zu lösen, war, die Server- und Client-Teile auf verschiedenen Rechnern mit unterschiedlichen IP-Adressen zu starten.

Danach haben Sie 3 Verbindungen in RabitMQ, keine 'ampq' Fehler in sensu-Client-Protokoll, und erfolgreich hinzugefügt Client in Uchiwa.

Here how it looks like.

Verwandte Themen