Главная >> Статьи и заметки >> Мониторинг >> Zabbix >> Пакетное добавление хостов на карту в Zabbix

Пакетное добавление хостов на карту в Zabbix Печать


Возникла необходимость в настроенном Заббиксе 1.8 построить карту сети, чтобы состояние хостов было видно визуально. Вроде бы ничего сложного: создаёшь карту, добавляешь объект на карту, выбираешь в свойствах, что это хост, выбираешь их всех хостов нужный, добавляешь описание объекта, выбираешь основную иконку и 3 дополнительные (хост_недоступен, хост_неизвестен, хост_доступен и т.д.). И всё, хост появился на карте и меняет цвет иконки в зависимости от его состояния. Но! У меня таких хостов больше сотни! И что, каждый вот так добавлять??? Поиск способа группового или автоматического добавления хостов на карту Zabbix ни к чему вразумительному не привёл. Но я заметил возможность импорта/экспорта карты в формате XML, и это было зацепкой. Немного поразмыслив я решил написать скрипт, который из списка хостов будет создавать карту в формате xml, которую потом можно будет импортировать в Zabbix.Под рукой оказалась винда, поэтому решил написать BAT-файл, который читает из текстового документа список хостов, которые уже мониторятся в Zabbix и делает XML файл. Вот что получилось:

@echo off
set /A A=300

echo ^<?xml version="1.0" encoding="UTF-8"?^> >routers.xml
echo ^<zabbix_export version="1.0" date="16.01.12" time="14.40"^> >>routers.xml
echo ^<images^> >>routers.xml
echo ^</images^> >>routers.xml
echo ^<sysmaps^> >>routers.xml
echo ^<sysmap^> >>routers.xml
echo ^<selements^> >>routers.xml

for /f %%i in (hosts.txt) do (

call :result %%i
)

echo ^</selements^> >>routers.xml
echo ^<links/^> >>routers.xml
echo ^<name^>my_map^</name^> >>routers.xml
echo ^<width^>1200^</width^> >>routers.xml
echo ^<height^>600^</height^> >>routers.xml
echo ^<label_type^>0^</label_type^> >>routers.xml
echo ^<label_location^>0^</label_location^> >>routers.xml
echo ^<highlight^>0^</highlight^> >>routers.xml
echo ^<expandproblem^>0^</expandproblem^> >>routers.xml
echo ^<markelements^>0^</markelements^> >>routers.xml
echo ^<show_unack^>0^</show_unack^> >>routers.xml
echo ^</sysmap^> >>routers.xml
echo ^</sysmaps^> >>routers.xml
echo ^</zabbix_export^> >>routers.xml

:result
if NOT "%1" == "" (
set /A A=%A%+1

echo ^<selement^> >>routers.xml
echo ^<selementid^>%A%^</selementid^> >>routers.xml
echo ^<elementid^> >>routers.xml
echo ^<host^>%1^</host^> >>routers.xml
echo ^</elementid^> >>routers.xml
echo ^<elementtype^>0^</elementtype^> >>routers.xml
echo ^<iconid_off^> >>routers.xml
echo ^<name^>48_g_router_on^</name^> >>routers.xml
echo ^</iconid_off^> >>routers.xml
echo ^<iconid_on^> >>routers.xml
echo ^<name^>48_g_router_off^</name^> >>routers.xml
echo ^</iconid_on^> >>routers.xml
echo ^<iconid_unknown^> >>routers.xml
echo ^<name^>48_g_router_unknown^</name^> >>routers.xml
echo ^</iconid_unknown^> >>routers.xml
echo ^<label^>%1^</label^> >>routers.xml
echo ^<label_location^>0^</label_location^> >>routers.xml
echo ^<x^>301^</x^> >>routers.xml
echo ^<y^>51^</y^> >>routers.xml
echo ^<iconid_disabled^> >>routers.xml
echo ^<name^>48_g_router_disable^</name^> >>routers.xml
echo ^</iconid_disabled^> >>routers.xml
echo ^</selement^> >>routers.xml
)


Переменная А - это уникальный идентификатор объекта на карте, для каждого нового хоста он должен быть уникальным, поэтому мы к нему прибавляем единичку для каэного нового хоста.

Скрипт написан для нестандартных иконок Zabbix, которые можно взять здесь: http://www.zabbix.com/forum/showthread.php?t=12155&highlight=icons.

Как этим пользоваться? В блокноте нужно в столбик создать список всех устройств, которые вы хотите добавить на карту. Например так:

router1
router2
router3

Где router1 - имя хоста, которое указано в Заббиксе в Configuration -> Hosts.

Сохраняете этот документ как hosts.txt и кладёте рядом с нашим BAT-файлом. Убедитесь что у вас в Zabbix установлены такие же иконки (например для роутера иконка 48_g_router_on), если это не так, то поменяйте в BAT-файле названия иконок на свои. Запускаем батник и видим что появился файл routers.xml. Теперь заходим в Zabbix в раздел Configuration -> Maps и нажимаем кнопку Import map. Выбираем наш созданный файл routers.xml и жмём импорт. Вот и всё!

Да, кстати, создастся карта с именем my_map. Имя вы можете заранее прописать своё всё там же, в BAT-файле. Теперь в новой созданной карте присутствуют все нужные хосты с настроенными иконками. Осталось только их расставить по карте и добавить линки, если нужно.

Вот ещё что, как создать список всех хостов в блокноте? Я сделал старым дедушкиным методом: Заходим в Заббиксе Configuration -> Hosts, нажимаем Ctrl+A и копируем всё (Ctrl+C) теперь открываем Microsoft Word и жмём Ctrl+V, аккуратно выделяем столбец Name, копируем его в буфер и вставляем в Exel. Из Exel данные вставляем в блокнот и всё, аккуратный список готов и в минимальные сроки.

Я создал ещё 2 BAT-файла для коммутаторов и для серверов, у них разные иконки соответственно. Все файлы скачать можете ниже, пользуйтесь на здоровье.

xml_routers_add.bat

xml_switches_add.bat

xml_servers_add.bat

Автор Bordac, http://bloggik.net
 

Последние комментарии