Мониторинг Docker контейнеров в Zabbix
Мониторить хочу количество контейнеров в состоянии Running/Crashed/Available. Для нескольких особо важных контейнеров нужно иметь возможность мониторить их статус по имени.
Что до количества, взял готовое решение вот тут. Добавил в Zabbix вот так:
Размещаем в /etc/zabbix/scripts такой вот скриптец под именем docker_status.sh:
function countContainers() {
docker ps -q $1 | wc -l
}
function countCrashedContainers() {
docker ps -a | grep -v -F 'Exited (0)' | grep -c -F 'Exited ('
}
TYPE=${1-all}
case $TYPE in
running) COUNT_FUNCTION="countContainers"; shift;;
crashed) COUNT_FUNCTION="countCrashedContainers"; shift;;
all) COUNT_FUNCTION="countContainers -a"; shift;;
esac
$COUNT_FUNCTION
В конфиг агента добавляем новый UserParameter:
UserParameter=docker.status[*],/etc/zabbix/scripts/docker_status.sh "$1"
...
Также необходимо добавить пользователя zabbix в группу docker:
Ну и перегрузить zabbix-agent
Теперь с zabbix-server-а можно опробовать получение данных:
0
usr@zabbixsrv:~$ zabbix_get -s 100.10.100.10 -k docker.status[all]
13
usr@zabbixsrv:~$ zabbix_get -s 100.10.100.10 -k docker.status[running]
6
usr@zabbixsrv:~$
Иногда наличие контейнеров в состоянии Crashed еще не показатель критического состояния системы, к примеру, когда «завалился» тестовый контейнер. Поэтому для меня было важно иметь возможность мониторить состояние нескольких конкретных контейнеров по имени. Эту проверку пришлось сооружать самому. Но особо ничего сложного, добавляем в zabbix-agent вот такой параметр:
и перегружаем сервис zabbix-agent
Теперь используя ключ docker.if.up[имя_контейнера] мы можем узнать в состоянии «Up» он (вернется «1») или же состояние «не Up» (вернется «0»)
Попробуем спросить с забикс-сервера состояние конкретного контейнера:
1
usr@zabbixsrv:~$ zabbix_get -s 100.10.100.10 -k docker.if.up[dev5]
0
usr@zabbixsrv:~$
Усе … осталось соорудить Template и добавить его к серверам с docker-ом
Вот для примера мой шаблон, в нем имя контейнера задается макросами «{$CONTAINER_NAME1}«, «{$CONTAINER_NAME2}» и тд, присваивайте на каждом хосте свои имена, лишние элементы данных для хоста можно деактивировать. Вцелом шаблон опробован — работает отлично!
Хай щастить!
Enjoy!