###### tags: Linux, zabbix.
# Zabbix.
В этой заметки: Установка zabbix, базовый мониторинг linux и windows систем с помощью zabbix агента, настрйка уведомлений на почту и телеграмм.
# Система мониторинга zabbix.
Любой системный администратор за время своей работы приходит к необходимости мониторить состояние вверенного ему оборудования. А если есть возможность автонастройки удобных уведомлений, так вообще замечательно. При этом начальство мечтает, чтобы на "эти свои игрушки" сисадмин не просил ни рубля из бюджета организации.
Есть несколько достаточно развитых opensource систем мониторинга. К примеру zabbix, nagios, prometheus, icinga, opennms, munin. Эти системы давно разрабатываются и в целом их можно назвать универсальными, хотя у каждой есть свои особенности и специализация.
Разберем такой, не побоюсь этого слова, комплекс ПО для мониторинга как Zabbix.
Этот комплекс состоит из следующих компонентов:
- Zabbix-сервер
- Zabbix-агент
- Zabbix-прокси
В минимальной конфигурации достаточно только **Zabbix-сервера**. Он умеет не только пинговать узлы, но также опрашивать их по snmp, http, telnet/ssh, ipmi протоколам. Позволяет проводить проверки по самописным скриптам (например опрос времени жизни ssl-сертификатов). Конфигурируется он через удобный (хотя с первого раза непонятный) веб-интерфейс.
Для мониторинга серверов обычно ставят на них zabbix-агента. **Zabbix-агент** также чрезвычайно гибкий инструмент по сбору параметров с наблюдаемого компьютера. Часть базовых проверок встроено в агента, но если их не хватает, то с помощью скриптов можно лихо увеличить количество собираемой информации.
Но это еще не все. При правильной настройке zabbix-агент умеет запускать скрипты по команде с сервера. А сервер может выслать такую команду по сработавшему событию (к примеру, когда основной интернет отключился, перейти на резервный.)
Агент существует как под windows, так и под *nix.
**Zabbix-прокси** пригодится, если у нас в подчинении много офисов, которые на связи бывают не всегда. Чтобы не делать много самостоятельных серверов и не путаться во вкладках браузера мы можем собирать показания с помощью zabbix-proxy, который при появлении связи передаст их на центральный сервер, на котором мы и будем анализировать информацию. Также прокси может помочь для оптимизации нагрузки на zabbix-сервер.
### Познакомимся с основными терминами zabbix
**Хост** - наблюдаемый узел.
**Элемент данных** - это одиночный (дискретный) элемент данных, собираемый с хоста. К примеру загрузка процессора, сколько занято оперативки или ip-адрес сетевой карты. У элемента данных есть параметр - период опроса. К примеру, если период равен 60 секунд, то после создания элемента данных, мы увидим ответ от хоста через минуту. Соответственно и триггеры по нему сработают только через минуту. Надо это понимать.
Возникает желание поставить этот период в 1 секунду, но тогда нагрузка на базу данных будет огромной. А хост может не успевать отдавать эти данные. Поэтому выбор периода опроса это компромисс между временем реакции и производительностью.
**Триггер** - условие, по которому генерируется событие. Зависит от элементов данных. Не может без них существовать.
**Действие** - действие (отправить уведомление, выполнить скрипт и т.д.), которое происходит после срабатывания триггера. Зависит от триггера. Не может без него существовать.
Можно на каждый хост отдельно создавать свои элементы данных и триггеры, но гораздо удобнее определить общие параметры и накатывать их автоматически на группы хостов. Именно для этого существуют **шаблоны**. Шаблоны содержат сразу много элементов данных и триггеров по ним.
С заббикс-сервером комплектом идет несколько шаблонов по умолчанию их мы и будем использовать.
## Установка zabbix.
Установка выполняеться по [официальной документации](https://www.zabbix.com/download).
В процессе установки главное использовать mariadb-server а не mysql-server. И тогда все будет хорошо.
Если у вас нету выбора русского языка при установки тогда сделайте следующие.
Проверьте список доступных языков.
```
locale -a
```
Посмотрите какие русские языки доступны.
```
cat /usr/share/i18n/SUPPORTED | grep ru_
```
Устанавливаем нужные нам языки.
```
locale-gen ru_RU
locale-gen ru_RU.UTF-8
```
После установки обязательно требуется переконфигурировать языки в системе.
```
dpkg-reconfigure locales
```
Вам будет предложено выбрать из большого списка, какие локали переконфигурировать – Вы можете выбрать все (что займет много времени), либо только те, что мы добавили:
Для применения изменений в Zabbix требуется также перезапустить nginx или apache в зависимости от того что вы используете.
После перезагрузите страницу в браузере и выбирите русский язык.
## Настройка мониторинга.
Как говорилось выше будем использовать zabbix agent для мониторинга устройств. Zabbix agent можно взять с [официального сайта](https://www.zabbix.com/download_agents).

### Мониторинг Windows.
Скачаем zabbix agent на Windows 10. Выбираем Windows и версию zabbix-server.

Указываем IP адресс zabbix сервера. Потом везде кликаем делее.

Добавьте в брандмаур Windows правило разрешающие входящие подключения по 10050 tcp порту.

Перейдем к добавлению узла. Для этого перейдите в Мониторинг -> Узлы сети и кликните добавить узел. В открывшемся окне впишите имя узла. Выбирите шаблон Windows by Zabbix agent. В интерфейсах выбирите agent и укажите IP адресс хоста с Windows. Порт мы не меняли, поэтому оставляем по умолчанию. В группах выбирете удаленные хосты.

Проверьте доступность значок должен гореть зеленным.

Перезагрузите хост с Windows и получите уведомление.

### Мониторинг Linux.
Поставить на мониторинг Linux машину также просто как и Windows.
Добавляем репозитории zabbix.
```
wget https://repo.zabbix.com/zabbix/6.0/debian/pool/main/z/zabbix-release/zabbix-release_6.0-4%2Bdebian11_all.deb
dpkg -i zabbix-release_6.0-4+debian11_all.deb
apt update
```
Скачаем zabbix-agent.
```
apt-get install zabbix-agent
```
Откроем файл.
```
nano /etc/zabbix/zabbix_agentd.conf
```
Тут нас интересует два параметра:
- Hostname. Можно найти и раскомментировать его. А можно просто в начале файла написать `Hostname = Proxmox`
Этот параметр должен быть уникальным у всех узлов. Сервер будет по нему различать хосты.
- Server. Тут мы указываем сервер, который имеет право опрашивать агента. У меня сервер живет на ip - 10.143.0.70, так что я пропишу`Server = 10.143.0.70`
Перезагружаем и добавляем в автозагрузку zabbix-agent.
```
service zabbix-agent restart
systemctl enable zabbix-agent
```
Добавляем узел в zabbix, также как и Windows.

Проверьте доступность узлов.

## Настройка уведомлений на почту.
Создадим способ оповищения для gmail. Перейдите в Администрирование -> Способы оповещения и нажмите добавить способ оповещения. Дальше как на скрине.

Перейдите в шаблоны оповещений и добавьте все стандартные.

Перейдите в настройки профиля и добавьте оповищения типа gmail созданное ранее. Не забудьте после добавление нажать кнопку обновить.

Перейдите в действия тригеров и проверьте чтобы действие "Report problems to Zabbix administrators" было в активированном состояние.

Перезагрузите Linux машину для получения оповещения о проблеме. На почту придет такое сообщение.

## Настройка уведомлений в телеграмм.
Оповещения в телеграмм настраиваються через бота. Для создания бота перейдите в диолог к @BotFather.
Выполните команду /newbot. Укажите имя бота.

Скопируйте токен. Перейдите в способы оповещения, выбирите готовый способ telegram. В поле Tocken вставьте выданный токен от BotFather.

Добавьте способ оповещения для пользователя, также как это делали для gmail. Выбираем Telegram. В поле "отправлять на" указываем свой ID в телеграмм. Чтобы узнать свой ID воспользуйтесь этим ботом: https://t.me/MyTelegramIDworks_bot . Не забудьте нажать обновить.

Перезагрузите Linux машину. В итоге бот отправит вам такое сообщение.

На этом все. В следующем уроке рассмотрим как писать свои шаблоны мониторинга.
