Мелкие и средние компании зачастую пренебрегают таким компонентом IT инфраструктуры, как мониторинг разных узлов локальной сети. При возникновении проблем в таких компаниях может проходить достаточно много времени, пока инженеры поймут, что происходит в их IT инфраструктуре, что, само по себе, очень критично для бизнеса. Имплементация и правильная настройка системы мониторинга облегчает жизнь IT специалиста на порядок, но стоит заметить, что на начальном этапе сбора и анализа информации в системе мониторинга увеличивается количество рабочих часов. Почему? Всплывают те ошибки, которые вы могли не замечать или просто игнорировали в течении долгого периода времени. При этои рынок программного обеспечения предлагает целый ряд продуктов, так или иначе связанных с мониторингом. В ряде широко используемых продуктов присутствуют такие, как Microsoft System Center Operations Manager (SCOM), Nagios, Zabbix, Cacti и т.д.
Если взять SCOM, то он хорошо “заточен” под программное обеспечение от Microsoft, прекрасно отслеживает требуемое, но очень “толстый”, и чтобы его развернуть в Enterprise режиме, нужно задействовать несколько серверов. Как показывает моя практика, SCOM не могут себе позволить развернуть даже некоторые крупные компании, не говоря уже о мелком и среднем бизнесе.
Иначе обстоят дела с Zabbix. Этот продукт позволяет развернуть себя на старом Desktop’e и предоставлять результат. Для мониторинга Windows-систем Zabbix функционально не так богат, как SCOM, но в симбиозе с технологией Windows Event Subscriptions мы можем получить вполне эффективную систему мониторинга.
Если говорить про Linux или Unix системы и их сервисы (MySQL, FTP, SMTP, HTTP, SSH, Exim, Squid и т.п.), то Zabbix предоставляет множество уже готовых шаблонов для их мониторинга.
В современной гетерогенной IT инфраструктуре для достижения максимальной эффективности и гибкости нужно использовать как коммерческие продукты, такие как SCOM, так и СПО, такое как Zabbix.
Применительно к Zabbix, в этой заметке мы рассмотрим пример следующих действий:
- Установка Zabbix на Ubuntu 14.04
- Настройка LDAP аутентификации на базе Active Directory
- Установка Zabbix агентов на ОС Windows и Linux
- Настройка оповещений через e-mail и Telegram
Установка Zabbix на Ubuntu 14.04
Сама установка Zabbix 3.0 LTS сервера на Ubuntu Server 14.04 LTS очень тривиальна и не доставляет особых проблем. Многие зададутся вопросом, почему для установки Zabbix 3.0 не взять дистрибутив Ubuntu к примеру 15-16 версии, но на данный момент Zabbix не поддерживает эти версии Ubuntu. И при попытке установки Zabbix сервера на Ubuntu 15-16 получим ошибку:
Особо ленивые могут скачать Zabbix Appliance, развернуть и протестировать, но как можно прочитать “The Appliance is not intented for serious production use at this time”
Мы установим Zabbix из пакетов, даем последовательно ряд команд. Скачаем и установим пакет, который добавит репозиторий для Zabbix сервера:
$ cd /tmp/
$ sudo wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-1+trusty_all.deb
$ sudo dpkg -i zabbix-release_3.0-1+trusty_all.deb
Обновим кэш менеджера пакетов и убедимся в том, что репозиторий для Zabbix добавился:
$ sudo apt-get update
$ cat /etc/apt/sources.list.d/zabbix.list
deb http://repo.zabbix.com/zabbix/3.0/ubuntu trusty main
deb-src http://repo.zabbix.com/zabbix/3.0/ubuntu trusty main
Наш Zabbix-сервер будет хранить всю информацию в MySQL и поэтому устанавливаем пакет для Zabbix сервера с поддержкой MySQL:
$ sudo apt-get install zabbix-server-mysql zabbix-frontend-php
Сразу установим Zabbix-агента на Zabbix-сервер, чтобы сервер мог мониторить сам себя, а к настройкам агента вернёмся позже:
$ sudo apt-get install zabbix-agent
Теперь нужно создать в MySQL базу данных. Подключимся к MySQL:
$ mysql -uroot -p
Здесь MySQL запросит пароль. Укажем тот пароль, который мы задавали при установке пакета zabbix-server-mysql В контексте MySQL создаем базу данных с именем Zabbix и даем полные права на вновь созданную базу данных пользователю zabbix@localhost:
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'Password';
mysql> quit;
Переходим в директорию, где лежит скрипт, который создаст структуру для нашей базы:
$ cd /usr/share/doc/zabbix-server-mysql
$ ls -l
Создаем структуру:
$ zcat create.sql.gz | mysql -uroot zabbix -p
Теперь нужно указать Zabbix-серверу какую базу данных использовать:
$ sudo vim /etc/zabbix/zabbix_server.conf
Конечные настройки моего конфигурационного файла для Zabbix-сервера:
$ grep -v '^#\|^
Запускаем Zabbix-сервер:
$ sudo service zabbix-server start
Проверяем статус:
$ sudo service zabbix-server status
Теперь заходим в конфигурацию веб-сервера Apache:
$ sudo vim /etc/apache2/conf-enabled/zabbix.conf
и правим:
Цитата из документации:
It's necessary to uncomment the “date.timezone” setting and set the correct timezone for you. After changing the configuration file restart the apache web server.
После правки конфигурационного файла перезапускаем Apache:
$ sudo /etc/init.d/apache2 restart
Возможно вы увидите, что apachе2 выдает предупреждение:
В таком случае снова заходим в конфигурационный файл Apache и задаем параметр ServerName:
$ sudo vim /etc/apache2/apache2.conf
После этого предупреждение должно исчезнуть.
Далее открываем веб-консоль Zabbix:
Будет запущен мастер первоначальной конфигурации. Каждый шаг этого мастера описывать нет смысла, так как мастер очень простой. Конечный результат:
Для аутентификации используем UserName: Admin Password: zabbix – регистр важен – это Linux.
Как видите, все элементарно просто. Установка занимает не более 30 минут.
Настройка LDAP аутентификации на базе Active Directory
Первое, что мы сделаем после установки, - настроим аутентификацию на нашем Zabbix сервере через Active Directory.
Создаем в Active Directory пользователя, к примеру zabbix:
Я обычно ставлю галочку Password never expires, но решать вам.
По умолчанию этот пользователь входит в группу Domain Users и этого достаточно. Почему-то многие дают этому пользователю чрезмерно большие права доступа, по типу Domain Admins. Делать этого не нужно.
Далее идем в Zabbix (используем UserName: Admin Password: zabbix для аутентификации) и создаем пользователя с именем, как в Active Directory:
В поле Alias и Name пишем точно так же как в Active Directory в поле User SamAccountName:
И даем права:
Далее перелогиниваемся вновь созданным пользователем zabbix и переходим:
Нажимаем Test и если все хорошо, то нажимаем Update.
Откуда взять Bind DN для пользователя (в моем примере zabbix):
Откуда взять Base DN для вашего домена Active Directory:
После того, как мы переключимся на LDAP аутентификацию, пользователем UserName: Admin Password: zabbix мы уже не зайдем, так как пользователя Admin c паролем zabbix в нашей Active Directory просто нет, но есть другой пользователь zabbix. Используем для входа именно этого пользователя. Подобным образом на Zabbix-сервере создаем учетные записи для всех ответственных инженеров.
Не забываем дать Permissions пользователю и назначить в определенную группу.
Таким образом, если учетная запись в Active Directory существует – это еще не значит, что мы сможем залогиниться с помощью этой учётной записи на Zabbix-сервер. На Zabbix-сервере нужно создать ассоциированную учетную запись, такую же как в Active Directory.
Возможна ситуация, когда LDAP хост “упал”, а у нас вся аутентификация завязана на Active Directory, и при попытке входа на Zabbix сервер будет выводиться сообщение о некорректных учётных данных:
В таком случае можно переключиться на internal аутентификацию, чтобы в последующем, к примеру, переключиться на другой LDAP сервер. Для этого подключаемся к MySQL …
$ mysql -uroot -p
… и даем команду:
mysql> UPDATE `zabbix`.`config` SET `authentication_type` = '0' WHERE `config`.`configid` =1;
Команда отключит LDAP и активирует internal аутентификацию. После этой команды на Zabbix сервер можно будет зайти с использованием учётной записи Admin / zabbix.
Установка Zabbix агентов на ОС Windows и Linux
Начнем с Linux, так как на этой ОС всё это делается элементарно. В наличии у нас Ubuntu Linux 14.04 LTS и и в репозитории Ubuntu zabbix-agent уже представлен, правда версии 2.2:
$ sudo aptitude show zabbix-agent
Можно обойтись и этой версией агента, но мы хотим использовать последнюю версию Zabbix-агента:
$ cd /tmp/
$ wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-1+trusty_all.deb
$ sudo dpkg -i zabbix-release_3.0-1+trusty_all.deb
$ sudo apt-get update
$ sudo aptitude show zabbix-agent
Устанавливаем агента:
$ sudo aptitude install zabbix-agent
После того, как мы установили агента, идем по пути /etc/zabbix/zabbix_agentd.conf (для Ubuntu, путь в зависимости от конкретного дистрибутива может отличаться) и вносим настройки:
После внесения изменений не забываем перезапускать Zabbix агента:
$ sudo /etc/init.d/zabbix-agent restart
Кстати по параметру Server в конфигурационном файле zabbix агента, приведу такую цитату:
Note that hostnames must resolve hostname→IP address and IP address→hostname.
То есть, когда в DNS будем создать A-запись для Zabbix сервера, то не забываем создать и PTR запись.
Еще момент для параметра Server:
List of comma delimited IP addresses (or hostnames) of Zabbix servers. Incoming connections will be accepted only from the hosts listed here.
То есть наш Zabbix агент может работать одновременно с разными Zabbix серверами. Просто стоит указать их FQDN или IP-адрес через запятую.
Вернемся к нашим параметрам для Zabbix агента. Как можно было заметить, я внес минимальные изменения в .conf файл Zabbix агента. По моему опыту в небольших инсталляциях (реальная цифра из жизни - 20 Linux-серверов) этого вполне хватает. По параметрам конфигурационного файла дополнительно можно почитать по ссылке, но интуитивно все и так понятно.
Если кто-то сталкивался с тонкой настройкой конфигурационного файла Zabbix агента, просьба поделиться информацией в комментариях.
Далее идем на наш Zabbix сервер и указываем ему FQDN и IP адрес нашего клиента:
В поле DNS name я пишу неполный FQDN наблюдаемого хоста, так как у меня корректно настроена сеть на Zabbix сервере:
Далее идем на вкладку Templates:
Без применения шаблона или шаблонов на конкретный хост никакие параметры подвергаться мониторингу не будут.
Возвращаемся на вкладку Hosts:
И видим, что индикатор ZBX зеленый – это значит, что Zabbix сервер и агент взаимодействуют между собой и так же появились Items и Triggers, потому что мы применили шаблон для OS Linux, т.е. какой-то набор параметров начал мониториться. Можно нажать на Items и Triggers и увидеть, что именно мы наблюдаем.
Можно в ручном режиме изменять или добавлять. К примеру Items:
Zabbix – это конструктор.
Итак, давайте добавим SSH шаблон и проверим, как он отработает.
Выключаем SSH руками на наблюдаемом сервере и смотрим на нашу dashboard на zabbix сервере:
Теперь попробуем установить zabbix агента на Windows Server 2012 R2.
Первое, что надо сделать это скачать агента с сайта Zabbix:
Далее распаковываем полученный архив и копируем путь до установочных файлов:
Открываем CMD от имени администратора изменяем путь до исполняемых файлов zabbix агента. Когда путь будет изменен выполняем команду:
zabbix_agentd.exe –-install
Если выполнить команду в таком исполнении, то файл конфигурации должен находиться по пути C:\zabbix_agentd.conf
Официальное руководство о том, как установить zabbix агента.
Теперь, если посмотреть на оснастку управления службами, можно увидеть службу и для zabbix агента:
Кстати, Zabbix агент установиться без проблем даже если Windows Server установлен в режиме Core.
Теперь нужно создать конфигурационный файл для Zabbix агента и его можно будет запустить. Так как я устанавливал агента без указания дополнительных параметров для пути конфигурационного файла и не собираюсь это делать при запуске агента, мой конфигурационный файл будет располагаться по умолчанию в C:\zabbix_agentd.conf
Копируем конфигурационный файл по умолчанию:
И вносим точно такие же изменения, как для Linux клиента (смотри настройку Zabbix агента для Linux, которую мы делали ранее).
Не забываем переименовать конфигурационный файл. По умолчанию он имеет вид zabbix-agentd.win.conf:
Теперь можно запустить службу Zabbix агента и добавить Windows хост на Zabbix сервер.
Процедура добавления Windows клиента на Zabbix сервер точно такая же, как и для Linux клиента за исключением того, что здесь мы применяем шаблон именно для Windows OS.
Если на системе с Windows-агентом Zabbix включён Windows Firewall, то нужно добавить разрешающее правило для Zabbix агента – разрешить входящие подключения на порт TCP 10050
Конечный результат:
Настройка оповещений через e-mail и Telegram
Подошло время настроить систему уведомлений.
В Zabbix присутствуют несколько вариантов уведомлений это:
Не забываем о скриптах, которые могут выполняться в зависимости от определенного события:
Мы настроим уведомления через Email и Telegram
Переходим Administration –> Media Types (как на скриншоте выше) и нажимаем Email:
К примеру, для реально работающего почтового сервера на Zimbra:
Далее активируем Action:
И последний шаг - включаем e-mail уведомления для наших пользователей или группы пользователей:
Мой пользователь входит в группу администраторов, и дополнительных настроек на указанной вкладке я не делаю:
И пробуем протестировать придет письмо или нет.
Обычно я захожу на консоль виртуальной машины Linux сервер и останавливаю SSH службу:
И включаем обратно SSH:
Email уведомления у нас работают, но формат сообщения не очень удобен. Давайте попробуем поправить. Я оставляю минимум информации - на каком хосте произошло событие, и что именно “сломано”:
Результат:
Сделаем еще одно улучшение. Уменьшим кол-во уведомлений на разные события - убираем галочки:
События класса Information and Warning мы всегда сможем увидеть на DashBoard
Чуть порассуждаем, прежде чем начать настраивать следующий вид уведомлений. Есть компании, которые свою IT инфраструктуру располагают на той же физической площадке, где и располагается офис компании, т.е. есть отдельная оборудованная серверная комната. Но есть компании, которые полностью “живут” в дата-центрах, и конечным работникам нужен только монитор, RDP или ICA терминал, мышка и клавиатура и “шнурок”, который позволит выходить в Интернет. Я работал в компаниях, как первого типа, так и второго, и везде внедрял Zabbix, но уведомления я организовывал по разному.
В первом сценарии, когда серверная комната находится на той же физической площадке, я настраивал как минимум E-mail уведомления и SMS уведомления, либо только SMS. Почему? Довольно часто я встречал проблемы с интернет провайдером - или полностью падал линк, или частично, к примеру HTTP и HTTPS работает, а вот другие протоколы уже нет. Таким образом, получается, что когда IT персонал находится вне офиса, о проблемах в нашей IT инфраструктуре через e-mail уведомления мы не узнаем. Но у нас есть SMS уведомления, которые нас благополучно уведомят о проблемах. Можно выставить расписание, как пример: e-mail уведомления, когда мы находимся в офисе, а SMS-уведомления, когда мы находимся вне офиса.
Стоит заменить, что в первом случае для SMS уведомлений я всегда использовал локальный SMS девайс – это был корпоративный телефон специально выделенный для Zabbix или USB модем. В случае использования внешнего интернет SMS шлюза и падения интернет-канала наш Zabbix будет “молчать” для нас.
Описывать то, как это сделать, я не буду, так как в интернатах “куча” инфы и для каждого GSM девайса нужен отдельный подход, универсальных “рецептов” нет.
Второй сценарий - вся IT инфраструктура находится в дата-центре. Сразу скажем, вряд ли упадет интернет канал, так как обычно у нормального дата-центра их целая “пачка”. За электричество мы тоже можем быть спокойны, в отличие от локальной серверной комнаты. За IT инфраструктуру отвечают инженеры из разных стран. И я долго думал, что же мне использовать для уведомлений в такой ситуации и решил остановить свой выбор на Telegram.
Как же я сделал выбор при поиске скрипта для Telegram? Зашел по ссылке и дал запрос:
Сам проект Zabbix-in-Telegram находится на GitHub. Там есть официальная инструкция, но я попытаюсь описать свой опыт.
Первое, что надо сделать - это зарегистрироваться в Telegram, поставить клиента Telegram и зайти в него.
Далее мы создадим бота в Telegram для нашего Zabbix сервера. Новые боты создаются через BotFather. Находим BotFather по имени :
Далее даем последовательно команды, т.е например пишем /start и нажимаем кнопку Send:
После того как вы зададите имя (на скриншоте выше это zabbix), нужно будет еще указать UserName для вашего бота:
Все, ваш бот создан и готов работать.
Далее переходим на Zabbix сервер и устанавливаем Python и PIP (что такое PIP можно почитать на WikiPedia):
$ sudo aptitude install python-pip python-dev build-essential
$ sudo -H pip install --upgrade pip
$ sudo -H pip install pyopenssl ndg-httpsclient pyasn1
Далее переходим в директорию, из которой Zabbix сервер может запускать внешние скрипты (этот путь прописывается в конфигурационном файле Zabbix сервера /etc/zabbix/zabbix_server.conf):
$ cd /usr/lib/zabbix/alertscripts
И создаем два скрипта в этой директории:
- zbxtg.py - скрипт используется для отправки сообщения конкретному человеку
- zbxtg_settings.py - тут прописана вся "механика" как взаимодействовать с Telegram
$ sudo touch zbxtg.py
$ sudo touch zbxtg_settings.py
Назначаем на скрипты владельца и группу zabbix. Так как у нас zabbix сервер работает от zabbix пользователя, таких разрешений должно хватить. Делаем скрипты исполняемыми:
$ sudo chown zabbix.zabbix zbxtg.py
$ sudo chown zabbix.zabbix zbxtg_settings.py
$ sudo chmod 554 zbxtg.py
$ sudo chmod 554 zbxtg_settings.py
Далее открываем по порядку ссылки zbxtg.py и zbxtg_settings.py, копируем содержимое соответствующих скриптов и вставляем содержимое во вновь созданные Python скрипты.
Далее настроим “главный” скрипт zbxtg_settings.py. Открываем его и вносим изменения:
Нужно изменить два параметра, второй параметр (стрелочка два) опциональный. Первый параметр – это tg_key (Token to access the HTTP API) формируется при создании бота:
Теперь можно проверить работоспособность (запускаем скрипт из папки /usr/lib/zabbix/alertscripts):
$ sudo ./zbxtg.py "<username>" "<message_subject>" "<message_body>" --debug $ sudo ./zbxtg.py "@aivonin3093" "Test" "Test2" --debug
UserName если забыли, можно посмотреть тут:
Результат:
Теперь нужно настроить Zabbix сервер.
Создаем media types для Telegram:
Параметр --debug опциональный.
Цитата из официального руководства:
Далее можно создать отдельный Actions для каждого media types или использовать один.
Я использую один.
Так как я использую один Actions для всех media types, формат сообщений от zabbix у меня один :
Теперь нужно назначить вновь созданный media types (Telegram) нужному пользователю:
Теперь настроим, чтобы наш бот слал уведомления на чат группу.
Первое, что нужно сделать, это создать чат группу в Telegram и добавить нашего бота в эту чат группу.
Далее добавляем параметр –-group.:
Моя чат группа в Telegram называется ZabbixAivonin:
На этом настройка оповещение ботом чат группы закончена.
Работу так же можно протестировать из командной строки:
$ sudo ./zbxtg.py "Название вашего чата" "Test" "Test body" --debug --group
На том все!
Прошу поделиться вашими идеями и реализациями мониторинга в вашей локальной сети.
Спасибо за внимание.
/etc/zabbix/zabbix_server.conf
Запускаем Zabbix-сервер:
Проверяем статус:
Теперь заходим в конфигурацию веб-сервера Apache:
и правим:
Цитата из документации:
It's necessary to uncomment the “date.timezone” setting and set the correct timezone for you. After changing the configuration file restart the apache web server.
После правки конфигурационного файла перезапускаем Apache:
Возможно вы увидите, что apachе2 выдает предупреждение:
В таком случае снова заходим в конфигурационный файл Apache и задаем параметр ServerName:
После этого предупреждение должно исчезнуть.
Далее открываем веб-консоль Zabbix:
Будет запущен мастер первоначальной конфигурации. Каждый шаг этого мастера описывать нет смысла, так как мастер очень простой. Конечный результат:
Для аутентификации используем UserName: Admin Password: zabbix – регистр важен – это Linux.
Как видите, все элементарно просто. Установка занимает не более 30 минут.
Настройка LDAP аутентификации на базе Active Directory
Первое, что мы сделаем после установки, - настроим аутентификацию на нашем Zabbix сервере через Active Directory.
Создаем в Active Directory пользователя, к примеру zabbix:
Я обычно ставлю галочку Password never expires, но решать вам.
По умолчанию этот пользователь входит в группу Domain Users и этого достаточно. Почему-то многие дают этому пользователю чрезмерно большие права доступа, по типу Domain Admins. Делать этого не нужно.
Далее идем в Zabbix (используем UserName: Admin Password: zabbix для аутентификации) и создаем пользователя с именем, как в Active Directory:
В поле Alias и Name пишем точно так же как в Active Directory в поле User SamAccountName:
И даем права:
Далее перелогиниваемся вновь созданным пользователем zabbix и переходим:
Нажимаем Test и если все хорошо, то нажимаем Update.
Откуда взять Bind DN для пользователя (в моем примере zabbix):
Откуда взять Base DN для вашего домена Active Directory:
После того, как мы переключимся на LDAP аутентификацию, пользователем UserName: Admin Password: zabbix мы уже не зайдем, так как пользователя Admin c паролем zabbix в нашей Active Directory просто нет, но есть другой пользователь zabbix. Используем для входа именно этого пользователя. Подобным образом на Zabbix-сервере создаем учетные записи для всех ответственных инженеров.
Не забываем дать Permissions пользователю и назначить в определенную группу.
Таким образом, если учетная запись в Active Directory существует – это еще не значит, что мы сможем залогиниться с помощью этой учётной записи на Zabbix-сервер. На Zabbix-сервере нужно создать ассоциированную учетную запись, такую же как в Active Directory.
Возможна ситуация, когда LDAP хост “упал”, а у нас вся аутентификация завязана на Active Directory, и при попытке входа на Zabbix сервер будет выводиться сообщение о некорректных учётных данных:
В таком случае можно переключиться на internal аутентификацию, чтобы в последующем, к примеру, переключиться на другой LDAP сервер. Для этого подключаемся к MySQL …
… и даем команду:
Команда отключит LDAP и активирует internal аутентификацию. После этой команды на Zabbix сервер можно будет зайти с использованием учётной записи Admin / zabbix.
Установка Zabbix агентов на ОС Windows и Linux
Начнем с Linux, так как на этой ОС всё это делается элементарно. В наличии у нас Ubuntu Linux 14.04 LTS и и в репозитории Ubuntu zabbix-agent уже представлен, правда версии 2.2:
Можно обойтись и этой версией агента, но мы хотим использовать последнюю версию Zabbix-агента:
Устанавливаем агента:
После того, как мы установили агента, идем по пути /etc/zabbix/zabbix_agentd.conf (для Ubuntu, путь в зависимости от конкретного дистрибутива может отличаться) и вносим настройки:
После внесения изменений не забываем перезапускать Zabbix агента:
Кстати по параметру Server в конфигурационном файле zabbix агента, приведу такую цитату:
Note that hostnames must resolve hostname→IP address and IP address→hostname.
То есть, когда в DNS будем создать A-запись для Zabbix сервера, то не забываем создать и PTR запись.
Еще момент для параметра Server:
List of comma delimited IP addresses (or hostnames) of Zabbix servers. Incoming connections will be accepted only from the hosts listed here.
То есть наш Zabbix агент может работать одновременно с разными Zabbix серверами. Просто стоит указать их FQDN или IP-адрес через запятую.
Вернемся к нашим параметрам для Zabbix агента. Как можно было заметить, я внес минимальные изменения в .conf файл Zabbix агента. По моему опыту в небольших инсталляциях (реальная цифра из жизни - 20 Linux-серверов) этого вполне хватает. По параметрам конфигурационного файла дополнительно можно почитать по ссылке, но интуитивно все и так понятно.
Если кто-то сталкивался с тонкой настройкой конфигурационного файла Zabbix агента, просьба поделиться информацией в комментариях.
Далее идем на наш Zabbix сервер и указываем ему FQDN и IP адрес нашего клиента:
В поле DNS name я пишу неполный FQDN наблюдаемого хоста, так как у меня корректно настроена сеть на Zabbix сервере:
Далее идем на вкладку Templates:
Без применения шаблона или шаблонов на конкретный хост никакие параметры подвергаться мониторингу не будут.
Возвращаемся на вкладку Hosts:
И видим, что индикатор ZBX зеленый – это значит, что Zabbix сервер и агент взаимодействуют между собой и так же появились Items и Triggers, потому что мы применили шаблон для OS Linux, т.е. какой-то набор параметров начал мониториться. Можно нажать на Items и Triggers и увидеть, что именно мы наблюдаем.
Можно в ручном режиме изменять или добавлять. К примеру Items:
Zabbix – это конструктор.
Итак, давайте добавим SSH шаблон и проверим, как он отработает.
Выключаем SSH руками на наблюдаемом сервере и смотрим на нашу dashboard на zabbix сервере:
Теперь попробуем установить zabbix агента на Windows Server 2012 R2.
Первое, что надо сделать это скачать агента с сайта Zabbix:
Далее распаковываем полученный архив и копируем путь до установочных файлов:
Открываем CMD от имени администратора изменяем путь до исполняемых файлов zabbix агента. Когда путь будет изменен выполняем команду:
Если выполнить команду в таком исполнении, то файл конфигурации должен находиться по пути C:\zabbix_agentd.conf
Официальное руководство о том, как установить zabbix агента.
Теперь, если посмотреть на оснастку управления службами, можно увидеть службу и для zabbix агента:
Кстати, Zabbix агент установиться без проблем даже если Windows Server установлен в режиме Core.
Теперь нужно создать конфигурационный файл для Zabbix агента и его можно будет запустить. Так как я устанавливал агента без указания дополнительных параметров для пути конфигурационного файла и не собираюсь это делать при запуске агента, мой конфигурационный файл будет располагаться по умолчанию в C:\zabbix_agentd.conf
Копируем конфигурационный файл по умолчанию:
И вносим точно такие же изменения, как для Linux клиента (смотри настройку Zabbix агента для Linux, которую мы делали ранее).
Не забываем переименовать конфигурационный файл. По умолчанию он имеет вид zabbix-agentd.win.conf:
Теперь можно запустить службу Zabbix агента и добавить Windows хост на Zabbix сервер.
Процедура добавления Windows клиента на Zabbix сервер точно такая же, как и для Linux клиента за исключением того, что здесь мы применяем шаблон именно для Windows OS.
Если на системе с Windows-агентом Zabbix включён Windows Firewall, то нужно добавить разрешающее правило для Zabbix агента – разрешить входящие подключения на порт TCP 10050
Конечный результат:
Настройка оповещений через e-mail и Telegram
Подошло время настроить систему уведомлений.
В Zabbix присутствуют несколько вариантов уведомлений это:
Не забываем о скриптах, которые могут выполняться в зависимости от определенного события:
Мы настроим уведомления через Email и Telegram
Переходим Administration –> Media Types (как на скриншоте выше) и нажимаем Email:
К примеру, для реально работающего почтового сервера на Zimbra:
Далее активируем Action:
И последний шаг - включаем e-mail уведомления для наших пользователей или группы пользователей:
Мой пользователь входит в группу администраторов, и дополнительных настроек на указанной вкладке я не делаю:
И пробуем протестировать придет письмо или нет.
Обычно я захожу на консоль виртуальной машины Linux сервер и останавливаю SSH службу:
И включаем обратно SSH:
Email уведомления у нас работают, но формат сообщения не очень удобен. Давайте попробуем поправить. Я оставляю минимум информации - на каком хосте произошло событие, и что именно “сломано”:
Результат:
Сделаем еще одно улучшение. Уменьшим кол-во уведомлений на разные события - убираем галочки:
События класса Information and Warning мы всегда сможем увидеть на DashBoard
Чуть порассуждаем, прежде чем начать настраивать следующий вид уведомлений. Есть компании, которые свою IT инфраструктуру располагают на той же физической площадке, где и располагается офис компании, т.е. есть отдельная оборудованная серверная комната. Но есть компании, которые полностью “живут” в дата-центрах, и конечным работникам нужен только монитор, RDP или ICA терминал, мышка и клавиатура и “шнурок”, который позволит выходить в Интернет. Я работал в компаниях, как первого типа, так и второго, и везде внедрял Zabbix, но уведомления я организовывал по разному.
В первом сценарии, когда серверная комната находится на той же физической площадке, я настраивал как минимум E-mail уведомления и SMS уведомления, либо только SMS. Почему? Довольно часто я встречал проблемы с интернет провайдером - или полностью падал линк, или частично, к примеру HTTP и HTTPS работает, а вот другие протоколы уже нет. Таким образом, получается, что когда IT персонал находится вне офиса, о проблемах в нашей IT инфраструктуре через e-mail уведомления мы не узнаем. Но у нас есть SMS уведомления, которые нас благополучно уведомят о проблемах. Можно выставить расписание, как пример: e-mail уведомления, когда мы находимся в офисе, а SMS-уведомления, когда мы находимся вне офиса.
Стоит заменить, что в первом случае для SMS уведомлений я всегда использовал локальный SMS девайс – это был корпоративный телефон специально выделенный для Zabbix или USB модем. В случае использования внешнего интернет SMS шлюза и падения интернет-канала наш Zabbix будет “молчать” для нас.
Описывать то, как это сделать, я не буду, так как в интернатах “куча” инфы и для каждого GSM девайса нужен отдельный подход, универсальных “рецептов” нет.
Второй сценарий - вся IT инфраструктура находится в дата-центре. Сразу скажем, вряд ли упадет интернет канал, так как обычно у нормального дата-центра их целая “пачка”. За электричество мы тоже можем быть спокойны, в отличие от локальной серверной комнаты. За IT инфраструктуру отвечают инженеры из разных стран. И я долго думал, что же мне использовать для уведомлений в такой ситуации и решил остановить свой выбор на Telegram.
Как же я сделал выбор при поиске скрипта для Telegram? Зашел по ссылке и дал запрос:
Сам проект Zabbix-in-Telegram находится на GitHub. Там есть официальная инструкция, но я попытаюсь описать свой опыт.
Первое, что надо сделать - это зарегистрироваться в Telegram, поставить клиента Telegram и зайти в него.
Далее мы создадим бота в Telegram для нашего сервера мониторинга. Новые боты создаются через BotFather. Находим BotFather по имени :
Далее даем последовательно команды, т.е например пишем /start и нажимаем кнопку Send:
После того как вы зададите имя (на скриншоте выше это zabbix), нужно будет еще указать UserName для вашего бота:
Все, ваш бот создан и готов работать.
Далее переходим на сервер мониторинга и устанавливаем Python и PIP (что такое PIP можно почитать на WikiPedia):
Далее переходим в директорию, из которой Zabbix сервер может запускать внешние скрипты (этот путь прописывается в конфигурационном файле Zabbix сервера /etc/zabbix/zabbix_server.conf):
И создаем два скрипта в этой директории:
- zbxtg.py - скрипт используется для отправки сообщения конкретному человеку
- zbxtg_settings.py - тут прописана вся "механика" как взаимодействовать с Telegram
Назначаем на скрипты владельца и группу zabbix. Таких разрешений должно хватить. Делаем скрипты исполняемыми:
Далее открываем по порядку ссылки zbxtg.py и zbxtg_settings.py, копируем содержимое соответствующих скриптов и вставляем содержимое во вновь созданные Python скрипты.
Далее настроим “главный” скрипт zbxtg_settings.py. Открываем его и вносим изменения:
Нужно изменить два параметра, второй параметр (стрелочка два) опциональный. Первый параметр – это tg_key (Token to access the HTTP API) формируется при создании бота:
Теперь можно проверить работоспособность (запускаем скрипт из каталога /usr/lib/zabbix/alertscripts):
UserName если забыли, можно посмотреть тут:
Результат:
Теперь нужно настроить сервер мониторинга.
Создаем media types для Telegram:
Параметр --debug опциональный.
Цитата из официального руководства:
Далее можно создать отдельный Actions для каждого media types или использовать один.
Я использую один.
Так как я использую один Actions для всех media types, формат сообщений от zabbix у меня один :
Теперь нужно назначить вновь созданный media types (Telegram) нужному пользователю:
Теперь настроим, чтобы наш бот слал уведомления на чат группу.
Первое, что нужно сделать, это создать чат группу в Telegram и добавить нашего бота в эту чат группу.
Далее добавляем параметр –-group.:
Моя чат группа в Telegram называется ZabbixAivonin:
На этом настройка оповещение ботом чат группы закончена.
Спасибо ... подожду пока 16.04 будет поддерживать.
Антон, подскажите пожалуйста сталкивались ли вы с необходимость мониторинга DFS? Искал, но толку ноль https://share.zabbix.com/search?searchword=dfs&search_cat=1
Если да, может поделитесь наработками.
Кстати актуальная тема для следующей статьи ... Zabix - опыт, наработки, фичи и то чего нет в сети :)
Как вариант Вы можете мониторить определенные события относящиеся к DFS на серверах с ролью DFS.
Делал всё по инструкции, затык на проверке тестового сообщения "sudo ./zbxtg.py "@myaccount" "Test" "Test2" --debug" Получаю ошибку "User 'username' needs to send some text bot in private". Как победить? (гуглил, честно, рецепты не помогли)...
Напиши на мыло aivonin3093@gmail.com я тебе подскажу.
Антон, если нет желания разводить канитель в комментах, то проблемы лучше разбирать на форуме, чтобы возможные пути их решения были доступны другим людям, попавшим в аналогичную ситуацию.
нужно было перейти по ссылке в телеграме на своего бота и написать /start
после этого бот заработае
а вот после ребута убунты сервис zabbix-server автоматом не стартует
Как и клиенты в ubuntu. Как решить вопрос по феншую?
А решить это так:
systemctl enable zabbix-server.service для сервера
systemctl enable zabbix-agent.service для клиента
zbxtg.py: You need to mention your bot in 'BOTNAME' group chat (i.e. type @YourBot)
вот после выходных что выдало
Аутентификация в домене принудительно занижена? В данном случае у меня ругнулся на следующую строку: Unable to bind to server: Strong(er) authentication required [authentication.php:132 → CLdapAuthValidator->validate() → CLdap->checkPass() → ldap_bind() in include/classes/ldap/CLdap.php:112]
Добрый день, помогите пожалуйста уже несколько дней бьюсь, при импорте базы данных create.sql.gz операция заканчивается по тайм-ауту, так же пытался ее импортировать через phpmyadmin тот же эффект.
В результате на этапе Configure DB connection выдает ошибку The frontend does not match Zabbix database.
Че делать уже не знаю, помогите :(
После установки в веб интерфейсе пишет "zabbix сервер не запущен отображаемая информация может быть неактуальной". При этом команда service zabbix-server status пишет ... is ranning. Что это может быть?
Доброго времени суток! Подскажи мне какое необходимо железо под zabbix сервер на 200 машин?
Сложно сказать. Посмотрите документацию возможно там есть рекомендации.
Закрутили гайки, теперь не работает статья про телеграмм, можно конечно прокси прикрутить, но а если его забанят или работать не будет, придётся видимо Вк подключать
а почему статья 2 раза повторяется
Статья повторяется 2 раза и на одном из скриншотов видно на каком домене у вас был установлен Zabbix (правда, он вроде как не доступен :)