пятница, 14 сентября 2018 г.

Установка Zabbix на Ubuntu

Появилась необходимость развернуть новый Zabbix под отдельный сектор мониторинга.
Т.к. прежний zabbix ставил давно и уже не помню тонкостей, решил оформить пост об актуальном процессе инсталляции.
Решаемые задачи:
1) Обновление ОС.
2) Установка необходимых компонентов ПО (mysql, apache, snmp, traceroute, nmap и т.д.)
3) Конфигурирование  mysql
4) Конфигурирование  apache
5) Конфигурирование  zabbix (zabbix.conf, глобальная автоинвентаризация, )
6) Составление списка хостов для мониторинга (nmap)
7) Настройка профилей автообнаружения (autodiscovery)
8) Настройка и запуск автообнаружения.

1.
Обновляем ubuntu по предыдущему сообщению. Дополнительно пропишем в файле
/etc/hosts названия хоста на которой будем ставить zabbix (в моем случае hostname машины был "zabbix")

127.0.0.1 zabbix
"your lan ip" zabbix

2.
Ставим утилиты snmp:

apt-get install snmp snmp-mibs-downloader

В файле /etc/snmp/snmp.conf
комментируем секцию "mibs :" (добавляем перед ней "#"):

# mibs :

запускаем скачивание mibs

sudo download-mibs
-------------------
Так получилось, что дистрибутив zabbix оказался с включенным в него mysql, я решил ставить в расчете, что mysql будет полностью изначально подготовлен для связки с zabbix (но это не так). Поэтому можно ставить mysql как обычно, если в zabbix не включает mysql:

sudo apt install mysql-server mysql-client

ввести пароль пользователя mysql "root", если спросит при инсталляции, или поставить его позже.
----------------
Если apache не стоит, то ставим (у меня уже стоял)

sudo apt install apache2
-------------------
Качаем дистрибутив zabbix:

wget https://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+bionic_all.deb

dpkg -i zabbix-release_3.4-1+bionic_all.deb

apt update

apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent
----------------
ставим остальные утилиты:

apg-get install traceroute

(если ругается, то можно добавлять  ключ --fix-missing при любой инсталляции пакетов)

apt install inetutils-traceroute --fix-missing
apt install nmap

3.
Конфигурирование Mysql. Необходимо создать БД для zabbix и наделить пользователя zabbix необходимыми правами:

если при инсталляции mysql не был задан пароль для root, то установим его сначала:
зайдем  клиентом mysql:
mysql -u root -p
получим приглашение:
mysql>

use mysql;
update user set authentication_string=PASSWORD("root-pass") where User='root';

создадим БД для zabbix:

create database zabbix character set utf8 collate utf8_bin;

дадим права:

grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix-pass';
quit;

Установим структуру таблиц для БД zabbix (я расcчитывал, что они там уже будут, если я устанавливал zabbix в одном дистрибутиве с mysql, но это было не так):

cd /usr/share/doc/zabbix-server-mysql/
gzip -d create.sql.gz
mysql -u zabbix -p zabbix < create.sql

-----------------
4.
Конфигурирование Apache:
надо раcкоментарить и установить правильную date.timezone в файле /etc/zabbix/apache.conf:
<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Moscow
</IfModule>
<IfModule mod_php7.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Moscow
</IfModule>

5.
Конфигурирование zabbix. По умолчанию zabbix имеет минимальные настройки для своей работы, поэтому их надо сразу увеличивать, чтобы он быстро определял новые узлы и не ругался на отсутствие ресурсов. В файле /etc/zabbix/zabbix_server.conf увеличить до ~:

StartPollers=50
StartPreprocessors=64
StartPollersUnreachable=10
StartDiscoverers=64
CacheSize=128M
HistoryCacheSize=64M
HistoryIndexCacheSize=16M
TrendCacheSize=16M
ValueCacheSize=32M

Затем надо все компоненты перестартовать и зайти через веб интерфейс http://"your lan ip"/zabbix
логин: Admin (c заглавной буквы!)
пароль: zabbix
далее откроется "мастер" который запросит имя БД, пользователя БД и его пароль.
после чего zabbix начнет работать.

6.
Составим список хостов. (Хоть zabbix и имеет функционал поиска хостов по маске сети, но работает очень медленно, даже если интервал автообнаружения выставлен минимальный, 10-20 сек.). Опытным путем выяснилось, что он быстро находит хосты если они ему подаются в виде списка конкретных IP адресов. Поэтому этот список составим отдельной процедурой, используя NMAP (мне нужны были устройства Cisco):

nmap 192.168.0-255.1-254 -A -O -sU -p U:161 -oG - | grep -i cisco | awk '/161\/open/{print $2","}'

будет ответ типа:
192.168.1.1,
192.168.2.1,
и т.д. , запятые нужны чтобы их не вставлять самому, т.к. заббиксу они нужны.

7.
Настройка профилей автообнаружения
а) В глобальных настройках: Administaration>General>Other
указать: Default host inventory mode - Automatic
(это нужно, что бы обнаруженные хосты вносили свои инвентарные данные (название узла, версия софта, шасси и т.д.) в таблицу сразу, иначе в каждый хост
придется заходить и править эту опцию).


б) Создадим профили автообнаружения:
для начала создадим "host group", это нужно чтобы увидеть его на главном дашборде.
Сonfiguration> host groups> create host group
назовем его "Discovered hosts"
Затем создадим шаблон: configuration> host groups> create template
Назовем его: "1-auto-discover"
в нем укажем, что он принадлежит хост группе "Discovered hosts"
в  "linked templates" выбрать "Template Net Cisco IOS SNMPv2" (в нем все для Cisco, что мне нужно),
затем в "Macros" добавить {$SNMP_COMMUNITY} , если community  отличается от "public".

Теперь настроим правило автообнаружения:
Сonfiguration>Discovery>Create riscovery rule
назовем его "routers"
"Update interval" укажем 20
в поле "Check" добавим snmp v2 agent и укажем community
в OID  укажем "SNMPv2-MIB::sysDescr.0",
создадим и второй "Check" с OID  "SNMPv2-MIB::sysName.0"
в "IP range" вставляем наш список полученный NMAP, с запятыми (после последнего ip адреса ставить ничего не надо)
ОБЯЗАТЕЛЬНО убираем галочку "Enable".

Создадим будущее действие с обнаруженными хостами (поэтому и не включали ещё правило обнаружение):
Сonfiguration>Actions>Create action
Назовем его: "Auto discovery routers move to 1-auto-discover"
Type of calculation - AND
Conditions  -
A) discovery rule routers
B) Discovery status = Up
C) Service type = SNMPv2 agent

переходим  в секцию "Operations"
Operations:
Add to host groups: Discovered hosts
Link to templates: auto-1-cisco
Добавляем-сохраняем, проверяем что  галочка Еnable на данном Action "Auto discovery routers move to 1-auto-discover" установлена.
затем переходим снова на Сonfiguration>Discovery> Разрешаем наше правило обнаружения "routers"
переходим на дашборд и ожидаем появления обнаруженных хостов в группе "Discovered hosts"


Комментариев нет:

Отправить комментарий