Введение
Все будет сделано очень просто. Я буду мониторить системный log файл, который содержит информацию о ssh подключениях. В rpm дистрибутивах, в частности, в Centos это /var/log/secure. В deb дистрибутивах Debian/Ubuntu это /var/log/auth.log.
Вначале у меня была идея хранить полностью этот лог в zabbix для разбора каких-то инцидентов на сервере. Это может быть актуально, если у вас нет централизованного сбора логов в каком-то отдельном месте. Потом передумал, так как если у вас используется стандартный ssh порт 22, то лог подключений по ssh будет огромного размера. Хранить его полностью в zabbix — забивать понапрасну базу данных. В итоге решил хранить только информацию об успешных авторизациях.
Если сервером управляете только вы, то отправлять оповещения об успешных авторизациях, скорее всего нет смысла. Если несколько человек, то можно настроить проверку подключений кого-то конкретного, либо всех пользователей. Это уже на ваше усмотрение. Я в конце приведу готовый шаблон.
Все будет сделано с использованием штатного функционала zabbix. На хостах не нужно ничего настраивать, кроме выдачи прав на чтение к лог-файлу группе zabbix. Так что придется немного пожертвовать локальной политикой безопасности. По-умолчанию, системный лог не может читать никто, кроме рута. Исправляем это в Centos:
# chgrp zabbix /var/log/secure # chmod 640 /var/log/secure
и то же самое делаем в Debian/Ubuntu
# chgrp zabbix /var/log/auth.log # chmod 640 /var/log/auth.log
На хосте все готово. Все остальное делаем на сервере мониторинга.
Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:
- Установка CentOS 8.
- Настройка CentOS 8.
- Установка и настройка zabbix сервера.
То же самое на Debian 10, если предпочитаете его:
- Установка Debian 10.
- Базовая настройка Debian.
- Установка и настройка zabbix на debian.
Подготовка сервера
1) Отключите selinux
Для этого отредактируйте файл /etc/selinux/config. Установите параметр SELINUX=permissive
setenforce 0 && sed -i "s/SELINUX=enforcing/SELINUX=permissive/" /etc/selinux/config
2) Обновите систему
# yum update -y
3) Установите httpd и включите его автозагрузку
# yum install httpd # systemctl enable httpd
4) Установите сервер баз данных PostgresSQL и добавьте его в автозагрузку
# yum install postgresql postgresql-server # systemctl enable postgresql
5) Выполните инициализацию нового сервера баз данных PostgresSQL
# /usr/bin/postgresql-setup initdb
6) Запустите postgres
# systemctl start postgresql
Установка сервера Zabbix
Перед тем как мы сможем установить zabbix ubuntu 17.04, 16.04 и в других версиях, потребуется кое-что настроить. Нужно установить веб-сервер, MySQL и PHP. Если эти сервисы у вас уже настроены, то просто можете пропустить этот шаг.
Установка Apache, PHP, MySQL
Для установки выполните такие команды:
Дальше необходимо настроить правильный часовой пояс в php.ini. Вам нужна секция Data и строка timezone:
Добавление репозитория
Например, можно использовать wget для загрузки файла:
Если у вас другая операционная система, посмотрите список файлов на сервере через браузер и выберите нужный установщик. Затем установка zabbix 3.2 на Ubuntu:
Установка и настройка Zabbix
Когда репозиторий будет добавлен, можно перейти к настройке самого сервера Zabbix. Для установки программ выполните:
Как я уже говорил, для работы программы понадобится база данных. Сейчас нам предстоит создать ее и выдать все необходимые привилегии пользователю:
Для нормальной работы Zabbix нужна кодировка базы данных UTF-8, если вы создадите базу в кодировке utf8mb4, то получите ошибку: “Specified key was too long; max key length is 767 bytes”. Дальше нужно загрузить все таблицы в базу данных, они находятся в папке /usr/share/zabbix-server-mysql/. Вместо zabbix и zabbixdb нужно указать своего пользователя и имя базы данных:
Чтобы Zabbix смог подключиться к базе данных нужно отредактировать конфигурационный файл /etc/zabbix/zabbix_server.conf и указать там данные аутентификации:
Далее, включаем конфигурационный файл zabbix для apache2:
Теперь нужно перезапустить Zabbix и Apache, чтобы применить изменения:
Установка и настройка Zabbix Ubuntu почти завершена, осталось настроить веб-интерфейс.
Настройка веб-интерфейса zabbix
Веб-интерфейс программы готов к работе, теперь вы можете его открыть, набрав в адресной строке http://адрес_сервера/zabbix/
На первой странице нажмите “Next”. На следующем шаге программа проверит правильно ли настроен интерпретатор PHP:
Дальше укажите параметры доступа к базе данных, они будут использоваться для работы веб-интерфейса:
На следующем шаге можно изменить ip и порт, на котором будет слушать Zabbix:
Последний шаг, проверьте все ли верно и не нужно ли чего менять:
Если получаете такую ошибку, то файл нужно скачать и сохранить в /etc/zabbix/ вручную:
Владельца файла нужно изменить на www-data, чтобы программа имела к нему права доступа:
Теперь вернитесь в браузер и нажмите “Finish”:
Перед вами откроется окно ввода логина и пароля. Используйте стандартные значения, логин admin и пароль zabbix.
Вот и все, теперь установка Zabbix Ubuntu завершена и вы можете переходить к настройке.
Настройка в Zabbix отправки уведомлений
Заполняем необходимые параметры как на картинке:
Name | |
Type | Script |
Script name | mail.sh |
Сохраняем настройки, нажав Update. Дальше идем в раздел Administration -> Users. Меняем отображение с групп на пользователей:
Нажимаем на пользователя Admin и переходим на вкладку Media, там жмем на add. Откроется окно добавления источника оповещений. Заполняем как на картинке:
Нажимаем Update. Затем в разделе Media пользователя Admin еще раз жмем Update для применения настроек:
Теперь последний штрих, который лично я частенько забываю сделать, а потом долго разбираюсь, почему zabbix не отправляет оповещения на почту. Идем в раздел Configuration -> Actions и в единственной строке Report problems to Zabbix administrators жмем на Disabled в столбце статус, чтобы он стал Enabled:
Теперь все готово. Надо ждать срабатывания тригера и проверять почту. После срабатывания тригера и отправки заббиксом письма, в системном почтовом логе /var/log/maillog должны появиться записи об этом.
Настройка мониторинга
Добавим узел сети. Перейдите во вкладку «Configiraton» — «Hosts». В правом верхнем углу нажмите на «Create host» и заполните поля вкладок Host и Template
Готовых шаблонов (Template) великое множество. Ознакомитесь с ними, и выберите те, которые отвечают вашим требованиям. В качестве примера добавлено буквально пару шаблонов для демонстрации работы. Руководство будет не полным, если мы что-нибудь специально не поломаем, и не посмотрим результат. Давайте остановим наш VPS
…и запустим его:
Zabbix позволяет создавать комплексные экраны, графики, диаграммы и анализировать их данные за выбранные промежутки времени.
В рамках одной статьи невозможно затронуть все возможности системы мониторинга Zabbix, она получится слишком обзорной, возможности Zabbix велики. Мы рекомендуем обратиться к официальной документации, чтобы ознакомиться с возможностями и найти ответы на вопросы, которые здесь не рассмотрены
Добавляем UserParameter в zabbix agent
Открываем конфигурационный файл агента и добавляем в самый конец новые параметры, которые будет собирать zabbix:
UserParameter=pump_1, C:\zabbix\parser\pump_1.bat UserParameter=time_pump_1, C:\zabbix\parser\time_pump_1.bat UserParameter=state, C:\zabbix\parser\state.bat UserParameter=power, C:\zabbix\parser\electric-power.bat
И так далее. Не стал приводить полный вывод своего файла. По аналогии делаете у себя. Первое значение это название ключа, который будет указан в итеме на сервере, второе это путь к батнику.
После изменения конфигурационного файла нужно перезапустить службу агента. Проверить, все ли сделано правильно можно с помощью команды в консоли:
C:\zabbix>zabbix_agentd.exe -c c:\zabbix\zabbix_agentd.win.conf -t power power
Если у вас все работает и значения правильные выводятся, идем на сервер, настраивать сбор параметров.
Настройка Zabbix proxy
Открываем файл конфигурации zabbix proxy для настройки:
# mcedit /etc/zabbix/zabbix_proxy.conf
Необходимо изменить несколько параметров, все остальное можно не трогать:
server=84.143.241.246 hostname=proxy01 DBName=/var/lib/sqlite/zabbix.db
server | Адрес центрального сервера мониторинга |
hostname | Имя прокси сервера, которое мы будем использовать на основном сервере |
DBName | Путь к локальной базе данных |
Добавляем proxy в автозагрузку и запускаем:
systemctl enable zabbix-proxy systemctl start zabbix-proxy
Если сейчас посмотреть лог, то увидим там следующее:
# cat /var/log/zabbix/zabbix_proxy.log
2701:20160816:225839.865 cannot obtain configuration data from server at "84.143.241.246": proxy "proxy01" not found 2702:20160816:225839.865 cannot send heartbeat message to server at "84.143.241.246": proxy "proxy01" not found
В данном случае все в порядке, это не ошибка. Просто основной сервер еще ничего не знает о только что настроенном прокси. Нам нужно идти на сервер и добавлять свежеустановленный proxy. Заходим в web панель, идем в раздел Administration -> Proxies (Администрирование -> Прокси) и справа нажимаем на кнопку Create proxy (Создать прокси):
Заполняете необходимые поля. В данном случае обязательное только одно поле Proxy name.
Proxy name | Имя прокси сервера, должно соответствовать параметру hostname в файле конфигурации прокси |
Proxy mode | Режим работы: active — прокси всегда сам обращается к основному серверу и отправляет данные, passive — команды на получение данных каждый раз инициирует основной сервер |
Hosts | Хосты, которые будут мониториться через этот прокси. Так как мы только добавляем прокси, вряд ли у нас есть хосты для него. |
Description | Произвольное описание сервера |
После добавление proxy на основной сервер, можно перезапустить сам прокси сервер и посмотреть лог:
# systemctl restart zabbix-proxy # cat /var/log/zabbix/zabbix_proxy.log
2871:20160816:231130.025 received configuration data from server at "84.143.241.246", datalen 2664
Все в порядке, прокси подключился к основному серверу и забрал от него данные. При этом на основном сервере изменился статус прокси:
В качестве теста запустим на самом прокси сервере zabbix agent и подключим его к основному серверу мониторинга через proxy. Для этого открываем конфиг агента и устанавливаем следующие параметры:
# mcedit /etc/zabbix/zabbix_agentd.conf
Server=192.168.56.10 ServerActive=192.168.56.10 Hostname=proxy01
192.168.56.10 — локальный ip адрес прокси сервера.
Сохраняем файл, агента пока не запускаем. Идем в веб интерфейс и добавляем новый хост.
Имя указываем такое же, как Hostname у агента, ip адрес — локальный адрес агента, Monitored by proxy выбираем в выпадающем списке нужный proxy сервер. Когда добавите их несколько, они все будут в этом списке. Не забудьте назначить какой-нибудь шаблон. Если этого не сделать, то можно долго ждать поступления данных и недоумевать, почему ничего не поступает, хотя на вид все в порядке и ошибок в логах нет. Я много раз с подобным сталкивался в своей практике.
После того, как добавите новый хост на основном сервере, возвращаемся на proxy и перезапускаем его, чтобы сразу же получить настройки с основного сервера. Это делать не обязательно, через некоторое время (не знаю точно какое, любопытно было бы узнать) прокси сам заберет конфигурацию. Но мы форсируем процесс:
# systemctl restart zabbix-proxy
Теперь запускаем агент и добавляем его в автозагрузку:
# systemctl enable zabbix-agent # systemctl start zabbix-agent
Проверяем лог агента:
# cat /var/log/zabbix/zabbix_agentd.log
Все в порядке, ошибок нет. Через некоторое время данные начнут поступать на основной сервер мониторинга с помощью посредника zabbix proxy.
Установка zabbix imap
- Необходимо скачать саму карту и положить ее в папку zabbix-морды. Какую именно скачивать зависит от вашей версии заббикс-сервера. Вот ссылки для 2.2-2.4 и 3.0-3.2 и 3.4
- Редактируем файл include/menu.inc.php добавляя туда
для версии 2.2-.2.4 — в самый конец вставить:require_once dirname(__FILE__).’ /../imap/menu.inc.php’ ;
для версии 3.x примерно на 314 строке находим «$denied_page_requested = false;» и перед этой строчкой вставляем:
require_once dirname(__FILE__).’ /../imap/menu3.inc.php’ ;
Сохраняем и выходим.
- Теперь у нас в мониторинге появилось меню «Интерактивная карта».
imapsettings.js.templatesettings.js
Так же можно устанавливать свои значки на устройства.
Чтобы работали связи между узлами, необходимо добавить пару таблиц в базу:
Установка Zabbix Agent в Linux
Теперь установим агент Zabbix в Linux. Для установки Zabbix агента в Ubuntu Server 18.04 с помощью пакетного менеджера нужно скачать и установить репозиторий Zabbix. Затем из репозитория установим zabbix agent:
В CentOS для добавления репозитория и установки агента zabbix используется команды:
Перед тем как мы запустим zabbix агент, нужно отредактировать конфигурационный файл /etc/zabbix/zabbix_agentd.conf. В нем нужно указать IP адрес сервера Zabbix для активных проверок.
Server=IP ServerActive=IP:10051 Hostname=testagent
После этого запустите сервис агента:
Убедитесь, что агент успешно запустился.
Строка cannot parse list of active checks говорит о том, что на сервере нет активных проверок для этого хоста.
Как и в случае с Windows агентом, вам нужно добавить ваш Linux хост в настройках сервера Zabbix
Обратите внимание на параметр Host name в настройка хоста в интерфейсе заббикс сервера — этот параметр должен совпадать с Hostname параметром, который мы указываем в конфиге Zabbix -агента. В конфиге выше я указывал имя хоста testagent
Перезагрузите Zabbix агент и проверьте лог.
Проверьте, что данные от агента появились на сервере Zabbix.
На этом настройка Zabbix-агента на Linux системе завершена. В следующей статье мы рассмотрим безагентный мониторинг доступности узлов в Zabbix через ICMP Ping.
Отправка уведомлений в telegram через webhook
Начиная с 5-й версии, в Zabbix из коробки работают уведомления в telegram через механизм webhook. Чтобы настроить его, переходите в Администрирование -> Способы оповещений и выбирайте там Telegram.
Внутри увидите некоторые параметры. Можно так же посмотреть текст скрипта, который используется для отправки оповещений. В целом, тут сейчас не обязательно что-то менять. Дефолтные настройки полностью рабочие. Надо только указать токен бота.
Тут же можете шаблоны поправить так, как вам нравится. Это нововведение 5-й версии Zabbix — правка шаблонов оповещений в настройках самих оповещений. Это позволяет создавать для каждого типа свои шаблоны. Очень удобно.
Давайте теперь проверим отправку уведомлений через этот способ. Нажимайте Тест.
Я указал текст сообщения, заголовок, свой id и token бота. В итоге мне в личку пришло сообщение от бота.
Если хотите отправить оповещение в группу, то сначала создайте ее, а потом добавьте туда бота. Не потеряйте минус в id группы. Его тоже нужно указывать. Я сначала не понял этого и копировал id группы без минуса. В итоге, оповещения в группу не отправлялись.
Итак, убедились, что сообщения в telegram нормально отправляются. С технической стороны проблем нет. Теперь настроим отправку уведомлений по событиям. Я обычно для этого использую тестовый триггер. В стандартном шаблоне zabbix для OS Linux есть элемент данных Number of logged in users, который считает количество залогиненных пользователей. Я для него делаю триггер, чтобы он срабатывал, когда пользователей 2 и более. И с его помощью тестирую уведомления, просто подключаясь на сервер по ssh двумя подключениями одновременно.
Теперь идем в настройки пользователя и добавляем ему способ оповещений через telegram.
Если у вас ранее не работали никакие уведомления, то не забудьте активировать Действия.
У нас все настроено для отправки оповещений в telegram. Добейтесь срабатывания триггера и проверяйте телеграм канал, в который настроили отправку сообщений.
Все работает. Если вам достаточно такого функционала, то можно оставлять и пользоваться. Но как по мне, так бледновато эти уведомления выглядят. Можно немного шаблоны изменить, чтобы было более читаемо. Так же есть возможность все настроить более красиво и наглядно, да еще и с графиками. Дальше я расскажу еще 2 разных способа отправки уведомлений из zabbix в telegram с графиками и готовыми ссылками на события.
Заключение
Zabbix очень гибок. Это книга рецептов, и она у каждого своя. На каждом узле сети мы можем настроить мониторинг чего угодно. Будь то программный сервис или аппаратная часть сервера. Вы можете настроить уведомление о дисковом пространстве, которое заканчивается, или увеличении потребления потреблении оперативной памяти сервера в целом, или отдельных приложений. Осуществлять мониторинг аппаратных и программных raid-массивов, состояние дисков на наличие ошибок. Он довольно хорошо документирован и успешно используется в крупных компаниях, в том числе и у нас. Изучение Zabbix требует определенной доли усидчивости и понимания функционирования сервера, но даже его базовое понимание позволит предотвратить аварийные ситуации. Но главное, он не требователен к ресурсам. У нас вы можете заказать облачный VPS c предустановленной системой Zabbix, а наша служба технической поддержки поможет с его базовой настройкой.