Все, кто знаком с Zabbix, знают, какие там карты сетей. Мне захотелось более «крутую» карту. Я начал искать и наткнулся на 1 очень интересную реализацию — Интерактивную карту.
Итак, саму карту я нашел вот тут. Там же есть описание на английском и там же ее можно скачать.
Что из себя представляет данная карта? Это карта местности, хотите Яндекс, хотите Гугл, хотите OpenStreet. На карту наносятся наши объекты и вы можете мониторить их видя где они находятся и в каком они состоянии. Есть ли там тригерры или нет. Вот примеры данной карты:
Установка данной карты очень простая.
- Установка zabbix imap
- Изменения в базе данных для работы связей
- Для MySQL
- Для PostgreSQL
- Размещение объектов на карте
- Связи между узлами на интерактивной карте
- Выбор типа оборудования (свои иконки на карте)
- Заключение
- Включаем мониторинг
- Генератор шаблонов
- Отладка
- Карта сети
- Мониторинг состояния портов
- Производительность
Установка zabbix imap
- Необходимо скачать саму карту и положить ее в папку zabbix-морды. Какую именно скачивать зависит от вашей версии заббикс-сервера. Вот ссылки для 2.2-2.4 и 3.0-3.2 и 3.4
- Редактируем файл include/menu.inc.php добавляя туда
для версии 2.2-.2.4 — в самый конец вставить:
для версии 3.x примерно на 314 строке находим «$denied_page_requested = false;» и перед этой строчкой вставляем:
Сохраняем и выходим.
Все, основное уже есть и работает. Есть множество дополнительных настроек, все они с комментариями в файле, не вижу смысла их еще раз переписывать, я думаю сами почитаете. чтобы они заработали, необходимо выполнить следующее: найдите в папке imap файл settings.js.template, переименуйте в settings.js в данном файле теперь можете менять настройки.
Так же можно устанавливать свои значки на устройства.
Чтобы работали связи между узлами, необходимо добавить пару таблиц в базу:
Изменения в базе данных для работы связей
Для MySQL
Для работы связей между хостами нам нужно добавить две таблицы в базу данных Zabbix.
В папке imap лежит файл tables.sql Вы можете открыть phpmyadmin, выбрать базу данных Zabbix, и выбрать этот файл в разделе Import
Второй способ для любителей командной строки:
Замените zabbixbd на название таблицы с данными zabbix, user на имя пользователя с правами добавления таблиц в базу и введите пароль.
Для PostgreSQL
От рута запустить
sudo -u zabbix — действия от имени системного пользователя zabbix (иначе PosgreSQL не аутентифицирует пользователя),
-U zabbix — владелец БД,
-d zabbix — название БД.
Размещение объектов на карте
Давайте рассмотрим как же разместить объекты на карте. В первую очередь необходимо в настройках узла выставить «инвентарные данные» в положение «вручную».
Далее у нас есть 2 способа размещения объектов.
Первый способ — прописывание точных координат в самих инвентарных данных. Для этого листаем вниз и находим 2 поля «широта» и «долгота» и в них вписываем координаты.
Второй способ — размещение непосредственно на самой карте. Тут мы переходим на интерактивную карту и справа видим надпись «Узлы сети». При наведении на нее мышкой раскрывается список узлов. Те узлы, которые еще не нанесены на карту будут перед названием иметь значок «мишень», которые уже нанесены на карту — соответственно будут без этой иконки.
Чтобы разместить узел, нажимаете на эту «мишень» и далее просто тыкаете левой кнопкой мыши на то место, куда необходимо разместить данный узел.
Вот и все. На этом размещение узла закончено. Если вы не будите переставлять узел в другое место, то можно вернуть инвентарные данные опять в положение «Авто», если это Вам требуется.
Связи между узлами на интерактивной карте
Какая же карта узлов сети, если между ними нету связей? Давайте рассмотрим как это сделать.
На самом деле делается это очень просто!
Находим на карте один из узлов сети, который будет участвовать в связи с другим/другими (все узлы, которые будут участвовать в связи должны быть предварительно нанесены на карту) и кликаем на него левой кнопочкой мыши.
Тут мы можем (слева на право):
- Задать новое расположение на карте
- Убрать узел сети с карты
- Установить связь (что нам и потребуется)
- Задать тип оборудования (об этом поговорим чуть ниже)
Выбираем «Установить связь».
Перед нами открывается окно выбора со всеми нанесенными на карту объектами. Можно найти узлы по имени или вписать его имя в строку поиска вверху. Связь можно установить как с 1 объектом, так и с несколькими сразу. Для этого всего лишь необходимо выбрать 1 или более узлов, отметив их в «чекбоксе»
Нажимаем кнопочку «Save» и наслаждаемся результатом. Вот в принципе и все.
Выбор типа оборудования (свои иконки на карте)
Для установки своей иконки требуется залить Ваши значки в папочку:
После этого переходим к нашему узлу, кликаем на него левой кнопочкой мыши и выбираем последний значок «Задать тип оборудования» (похожа на микроконтроллер)
В открывшемся окошке видите ваши иконки, которые вы закачали по пути выше (к примеру):
Название отображается так же как и вы назвали иконку.
Я себе брал иконки тут — http://www.iconarchive.com
Собственно на этом все. Пробуйте, тестируйте, экспериментируйте.
Заключение
Вот в принципе и все! Надеюсь данная статья была полезна и у вас все получилось. Если возникли трудности, вы можете написать в комментарии, я постараюсь ответить на ваши вопросы.
Zabbix speedtest скорость на карте
Установим консольную версию Speedtest
Для удобства переходим в root
Создадим папку где будем хранить файлы от исполняемых скриптов
Создадим файл с показателями speedtest
Разберем файл для получения значений
Как оказалось Zabbix агент не отрабатывает awk. Будем делать через cut
Сделаем чтобы данные обновлялись каждые 10 минут
Теперь необходимо передавать эти параметры на Zabbix сервер. Для этого в конфигурацию zabbix_agentd.conf необходимо добавить 3 строки для передачи 3х переметров
Теперь создадим шаблон с элементами данных speedtest. Добавим в него узел на котором установили speedtest. У меня это Zabbix server
Теперь создадим каждый элемент данных
Можно посмотреть в последних данных что получилось
Если по какой либо причине данных нет. То можно сделать проверку используя zabbix_get
Я использовал тот что шел с агентом для Windows
Если появляется ошибка
То в параметрах zabbix_agent на сервере с которого читаются данные, необходимо добавить IP адрес откуда читаются данные через запятую
Теперь можно добавить на карте сети отображене скорости интернет
Для этого на связи которую вы используете для интернета необходимо в подпись вписать 3 строки
У меня он установлен на узле Zabbix server. Далее через двоеточие идет что отображать.
Мониторинг — это один из столпов обеспечения высокой доступности ИТ-систем.
Как правило, системные администраторы при установке системы мониторинга в первую очередь настраивают ее на проверку параметров серверов и обнаружение недоступности сервисов, запущенных на этих серверах. Безусловно это приоритетная задача, но не стоит забывать и о другом оборудовании: ИБП, системах кондиционирования, сетевом оборудовании.
В этом топике я покажу как решить за полчаса задачу мониторинга активного сетевого оборудования (т.е. свитчей, роутеров и т.п.) в системе Zabbix с помощью пары полезных инструментов. В результате вы сможете получить полную картину происходящего в сети.
Включаем мониторинг
Думаю, я не ошибусь, если скажу, что большинству системных администраторов приходится работать с унаследованным «зоопарком» оборудования различных моделей и вендоров. К счастью, большинство моделей поддерживает открытый протокол SNMP. Именно по нему мы и будем получать информацию о состоянии сетевых интерфейсов.
Предположим, что Zabbix у вас уже установлен. Чтобы воспользоваться SNMP нужно:
- включить поддержку SNMP на сетевом устройстве (команды зависят от производителя)
- добавить соответствующие item в Zabbix — по одному на каждый параметр; для этого нужно указать используемую версию SNMP, корректный идентификатор параметра SNMP OID и SNMP community (что-то типа имени пользователя)
- добавить триггеры для отслеживания нежелательных значений item
С учетом того, что у каждого сетевого порта может быть несколько отслеживаемых параметров, у типичного свитча — 24, а то и 48 портов, а свитчей в сети могут быть десятки, ручная конфигурация чересчур трудоемка.
Для облегчения задачи необходимо использовать шаблоны (templates). Шаблон содержит в себе все необходимые item’ы, триггеры и графики — остается только завести хост и подключить к нему шаблон.
Для Zabbix уже есть много готовых шаблонов, которые можно или нагуглить или посмотреть в мануале.
Если вы не нашли нужный шаблон, не расстраивайтесь: как правило, производители используют стандартные OID’ы из RFC1213 и RFC2233:
sysName.0 | имя узла | |
.1.3.6.1.2.1.1.3.0 | uptime | |
.1.3.6.1.2.1.2.2.1.8.X | статус порта: 1(up) / 2(down) | X — номер порта; у Cisco номер порта пятизначный: 100XX для 100 Мбитных портов, 101XX для 1 Гбит/c |
.1.3.6.1.2.1.2.2.1.16.X | отправлено байт | |
.1.3.6.1.2.1.2.2.1.10.X | принято байт | |
.1.3.6.1.2.1.31.1.1.1.5.X | отправлено broadcast пакетов | |
.1.3.6.1.2.1.31.1.1.1.3.X | принято broadcast пакетов | |
.1.3.6.1.2.1.31.1.1.1.4.X | отправлено multicast пакетов | |
.1.3.6.1.2.1.31.1.1.1.2.X | принято multicast пакетов | |
.1.3.6.1.2.1.2.2.1.17.X | отправлено unicast пакетов | |
.1.3.6.1.2.1.2.2.1.11.X | принято unicast пакетов | |
.1.3.6.1.2.1.2.2.1.20.X | ошибок при отправке | |
.1.3.6.1.2.1.2.2.1.14.X | ошибок при получении |
Помимо этого можно считать имя интерфейса, MTU, скорость и другие параметры. Полный список смотрите на сайте Cisco.
Cisco Catalyst, как правило, поддерживают дополнительно:
.1.3.6.1.4.1.9.9.109.1.1.1.1.5.1 — процент загрузки CPU
.1.3.6.1.4.1.9.9.48.1.1.1.5.1 — занятая память (в байтах)
.1.3.6.1.4.1.9.5.1.2.13.0 — статус температуры (1 — нормальная, 2 — повышенная, 3 — критическая)
Генератор шаблонов
Заметив, то что идентификаторы стандартизованы, я написал простенький скрипт на PHP, который позволяет сгенерировать XML-шаблон для Zabbix с нужными OID для всех портов. Мы протестировали его на оборудовании Cisco (500G, 2960. 3550 и 3750), 3Com (2426, 2924, 2948), паре D-Link и Zyxel 4012. (Кто хочет, может скачать исходники).
Генератор создает шаблоны, которые умеют:
- отслеживать параметры интерфейсов (см. таблицу выше) и выводить их на графике;
- устанавливать триггер на падение порта;
- устанавливать триггер на превышение скорости прироста ошибок на порте;
- отслеживать загрузку процессора, памяти и температуры для Cisco.
После того, как вы сгенерировали и сохранили шаблон для устройства, сымпортируйте его: перейдите в Configuration → Templates и нажмите справа вверху кнопку Import. Создайте новый Host или отредактируйте существующий — привяжите к нему ваш шаблон.
Если вы хотите изменить какие-либо параметры (например, SNMP community), то это можно сделать прямо в Zabbix: зайдите в шаблон в Configuration → Templates , в Items выделите нужные элементы галочками и внизу выберите из выпадающего списка Mass update.
В результате вы получите симпатичные графики:
Отладка
Если прошло несколько минут после добавления к устройству шаблона, а данные от SNMP так и не появились, необходимо проверить, может ли сервер Zabbix считать данные с устройства. Делается это утилитой snmpget:
snmpget -v версия_протокола -c комьюнити адрес_устройства OID
Например, получим число отправленных байт на первом гигабитном порту для Cisco:
snmpget -v 2c -c qwerty 192.168.1.1 .1.3.6.1.2.1.2.2.1.16.10101
IF-MIB::ifOutOctets.10101 = Counter32: 2044250092
Для не-Cisco железки:
snmpget -v 2c -c qwerty 192.168.1.2 .1.3.6.1.2.1.2.2.1.16.1
IF-MIB::ifOutOctets.1 = Counter32: 1691279168
Если вы получаете сообщение Timeout: No Response from . , значит вам нужно убедиться, что SNMP включен на устройстве и серверу разрешено соединяться с портом 161/UDP коммутатора.
Сообщение No Such Object available on this agent at this OID говорит о том, что запрашиваемый параметр не поддерживается.
Чтобы прочитать полный список параметров с устройства выполните:
snmpwalk -v версия_протокола -c комьюнити адрес_устройства
Любители GUI для чтения SNMP-данных с устройства могут воспользоваться программами типа MIB Browser.
Карта сети
Карту придется кропотливо составлять вручную. Тут надо знать пару трюков. Чтобы над соединительными линиями между оборудованием показывать скорость, добавьте в подпись вызов соответствующего item в фигурных скобках. Например:
↑ <02-CS-42-3750:ifOutOctets.10112.last(0)>
<02-CS-42-3750:ifInOctets.10112.last(0)>↓
Запись 02-CS-42-3750:ifOutOctets.10112.last(0) означает получить у хоста 02-CS-42-3750 последнее по времени значение параметра ifOutOctets (отправлено байт). ↑ и ↓ это просто коды стрелочек ↑ и ↓ для красоты.
Также в свойствах Link вы можете настроить отображении линии красным в случае падения порта в down.
Мониторинг состояния портов
К сожалению, в Zabbix нет удобного инструмента для просмотра состояния отдельных портов устройств, поэтому его пришлось написать. Информация импортируется из Zabbix и выводится администратору в удобном виде:
Серый цвет порта обозначает, то что он находится в down. Цвет от зеленого до красного меняется в зависимости от загрузки порта. Гигабитные порты выделены рамочкой.
Минус скрипта в том, что он писался «для себя», поэтому установка достаточно корявая (-:. Скачайте исходники и прочитайте readme. UPD 13.03.13 (Версия для Zabbix 2.0)
Производительность
Нельзя не упомянуть о возможной проблеме с производительностью zabbix-сервера. Предположим, что вы раз в минуту получаете информацию об 11 параметрах каждого порта 50-ти 24-портовых свитчей. На базу данных zabbix-сервера ляжет нагрузка в среднем 220 записей в секунду. Для слабой машины она может оказаться непосильной. Поэтому рекомендуется ограничивать количество item’ов или увеличивать интервал проверки. Мы считаем достаточным запрашивать статус порта, трафик, количество ошибок и широковещательных пакетов раз в 60 секунд.