Я пытаюсь настроить sensu-server для мониторинга моих док-контейнеров, следуя инструкциям на этот пост.
Демон Docker работает на том же хосте, что и sensu-server и sensu-clients (localhost).
Файл check-docker содержит запись для вызова скрипта load-docker-metrics.sh.
проверка-docker.sh
{
"checks": {
"load_docker_metrics": {
"type": "metric",
"command": "load-docker-metrics.sh",
"subscribers": [
"docker"
],
"interval": 10
}
}
}
загрузить-докер-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 в основном делает несколько вызовов API-интерфейса докера и извлекает несколько метрик. Если я запускаю этот скрипт на своем хосте (invismac), он дает мне точный результат:
docker.invismac.running_containers 7
docker.invismac.total_containers 8
docker.invismac.total_images 15
Я запускаю контейнер sensu-server с помощью этой команды:
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
После этого я могу правильно получить доступ к панели управления uchima через порт 3000.
Затем я запускаю клиент с помощью этой команды:
docker run --name sensu-client --привилегированный \ -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 CLIENT-1 localhost
Предполагается, что клиент связывается с RabbitMQ и регистрируется в uchima, но ничего не происходит. Я вошел в контейнер, который запускает клиент, и, посмотрев журнал, похоже, произошла ошибка с rabbitMQ:
"отметка времени": "2016-04-15T15:18:50.768594+0000", "уровень": "ошибка", "сообщение": "[amqp] Обнаружен сбой соединения TCP"}
Rabbitmq запущен, и я могу получить доступ к его конечной точке здесь:
Приборная панель дает мне некоторую информацию: у меня есть 2 подключения, 2 канала, 2 пользователя.
Кроме того, если я зайду в контейнер sensu-master, я могу проверить, что у rabbitmq есть этот пользователь:
сенсу [администратор]
Со всеми разрешениями:
/сенсу .* .* .*
Есть идеи, почему sensu-client не может общаться с RabbitMQ? Какая-то другая проверка, которую я мог бы попробовать? Я передаю какие-то неправильные значения в конфигурации сервера или клиента? нельзя ли иметь сервер и клиент на одном хосте?
Dmesg на клиенте также выдает мне это сообщение (я не знаю, может ли это быть связано)
[29252.322147] аудит: тип = 1400 аудит (1460734746.650:975): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=27531 comm="ps" required_mask="trace" disabled_mask="trace" одноранговый = "неограниченный"