2015-03-02 4 views
5

Я создал настраиваемое изображение Docker на основе ubuntu 14.04 с пакетом Sensu-Client внутри.Sensu-Client внутри контейнера Docker

Все прошло отлично, но теперь мне интересно, как я могу инициировать проверки для запуска с машины-хозяина.

Например, я хочу проверить процессы, выполняемые на хост-машине, а не только те, которые запущены внутри контейнера.

Thanks

ответ

0

Я не думаю, что это возможно прямо сейчас. Если процессы в экземпляре хоста выполняются внутри докера, вы можете смонтировать сокет и получить статус из контейнера sensu.

0

Добавить сенсу-клиент на главный компьютер? Возможно, вы захотите разделить его, чтобы у вас было гранулирование между проблемами в контейнерах. Проблемы с вашими хозяевами.

. . .

. Else. Вам нужно будет настроить способ сообщения изнутри. Либо используя что-то низкое (системные вызовы и т. Д.).) или настроить что-то извне, чтобы поймать вызовы и статус отчета.

HTHs

1

Это зависит от того, какие проверки вы хотите запустить. Многие проверки на системном уровне работают нормально, если вы запускаете контейнер sensu с флажками -net = host и --privileged. --net = host не только позволяет вам видеть одно и то же имя хоста и IP как хост-систему, но также все соединения tcp и метрика интерфейса будут соответствовать контейнеру и хосту.

--privileged дает контейнер полный доступ к системным метрикам, таким как hdd, memory, cpu.

Сложная вещь проверяет показатели внешнего процесса, поскольку докер изолирует ее даже от привилегированного контейнера, но вы можете совместно использовать корневую файловую систему хоста в качестве тома докера (-v /:/host) и исправления для использования chroot или use/host/proc вместо/proc.

Короткий рассказ, некоторые проверки будут работать, для других вам нужно запланировать или разработать свой собственный путь, но sensu в докере - один из возможных способов.

0

Большинство, если не все плагины sensu, жестко кодируют путь к файлам proc. Один из вариантов заключается в том, чтобы монтировать файлы proc хоста на другой путь внутри контейнера докеров и модифицировать плагины sensu для поддержки этого другого местоположения.

Это мой базовый контейнер-докер, который поддерживает модификацию файла файла procu.

https://github.com/sstarcher/docker-sensu

1

непривилегированных докер контейнер не может проверить процессы вне его контейнера, так как докер использует пространство имен ядра, чтобы изолировать его от всех других процессов, запущенных на хосте. Это дизайн: docker security documentation

Если вы хотите, чтобы запустить супер привилегированного Docker контейнера, который отключил это пространство имен вы можете запустить:

docker run -it --rm --privileged --pid=host alpine /bin/sh 

Это удаляет важный уровень безопасности, который Докер обеспечивает и следует избегать, если это возможно.Попав в контейнер, попробуйте запустить ps auxf, и вы увидите все процессы на хосте.

Смежные вопросы