№ 9617 В разделе
Sysadmin
от December 2nd, 2018,
В подшивках: Docker, Monitoring, Zabbix
At first, you need to install jq utility to generate JSON in bash. You are SA, you know how to do it.
JSON you want to receive from agent looks like:
{"data":[{"{#CONTAINER}":"git"},{"{#CONTAINER}":"ark_storage_api"},{"{#CONTAINER}":"telegram-microblog-poster"},{"{#CONTAINER}":"telegram-microblog-site"},{"{#CONTAINER}":"mqtt-zabbix-agent"},{"{#CONTAINER}":"sbnc"},{"{#CONTAINER}":"mqtt-bus"},{"{#CONTAINER}":"zabbix-server"},{"{#CONTAINER}":"telegram-post-bot"},{"{#CONTAINER}":"mat-generator"},{"{#CONTAINER}":"ark-log-server"},{"{#CONTAINER}":"zabbix-panel"},{"{#CONTAINER}":"splash"},{"{#CONTAINER}":"mariadb"},{"{#CONTAINER}":"postgres"}]}
Create new custom config on target host /etc/zabbix/zabbix_agentd.d/docker.conf [download]
UserParameter=docker.running[*],docker ps -a -f status=running -f name="$1" | grep "$1$" UserParameter=docker.containers_running,docker ps -f status=running -q|wc -l UserParameter=docker.containers_all,docker ps -a -q|wc -l UserParameter=docker.discovery,echo -n "$(docker ps -a -q --format='{{.Names}}')"|/usr/bin/jq -R -s -c '{data: split("\n") | map({"{#CONTAINER}": (.)}) }'
You can import my xml with template, or create your own below.
Sample graph in my template
Now create new template “Template Docker containers” with Application “Docker” and discovery rule “Docker containers discovery”. Just like on screenshot below.
Now create templates for Item and Trigger
At last step assign newly created template to your monitored host.
Great! Now you can see statuses and receive alerts.
Fortune cookie: T-shirt of the Week: I'm not excited, I'm cold!
в правиле обнаружений ошибка – Value should be a JSON object.
а точно именно json отдается?
something is wrong
Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character ‘{‘ or ‘[‘ at: ‘3proxy
registry |/usr/bin/jq -R -s -c {data: split(”
“) | map({“{#CONTAINER}”: (.)}) }’
my config https://paste.ubuntu.com/p/2vNg6ZPKz8/
may be something wrong with your containers list, please paste it to https://paste.ubuntu.com/
Ошибка скорее всего из-за того что нет прав на запуск команды
Почему не срабатывает тригер?
Влад, спасибо за помощь в поиске бага, обновил конфиг.
А как сделать триггер который будет опрашивать контейнеры и алярмить если тот не отвечает 30 секунд? Так как столкнулся с проблемой когда контейнеры рестартятся каждую минуту (так задумано) и триггер постоянно срабатыват(
не совсем понял что значит не отвечает. контейнеры вообще никак не отвечают, отвечают сервисы внутри них. триггер вешать надо на сервис в таком случае.