====== Zabbix ====== Документация: * Параметры агента https://www.zabbix.com/documentation/current/ru/manual/config/items/itemtypes/zabbix_agent ===== Описание ===== Система мониторинга, состоит из нескольких частей, которые можно разнести, в случае большой нагрузки.\\ * **сервер мониторинга**, который выполняет периодическое получение данных, обработку, анализ и запуск скриптов оповещения * **база данных**, реляционная (MySQL, postgres, sqlite, oracle) * **веб интерфейс** * **агенты**, службы работающие на отслеживаемых объектах, отправляющие данные серверу. Так же может использоваться трафик SNMP, внешние скрипты, выдающие данные, и несколько видов встроенных проверок, типа ping/http/ssh.. * **прокси**, может применяться для распределения нагрузки на основной сервер **Кроме агентов**, есть целый ряд доп возможностей для сбора информации: * **Simple check** - простые операции в т.ч. пинг * **Zabbix trapper** - Траппер элементы данных принимают входящие данные вместо запроса этих данных. Это полезно для любых данных, которые вы возможно захотите "запихнуть" в Zabbix * **Zabbix aggregate** - сбор совокупной информации из БД * **SSH agent** - подключение по SSH, используя указанные команды * **Calculate** - проверки, сопоставляя имеющиеся данные, + можно нивелировать погрешность пинга между агентом и основным сервером, разместив прокси рядом с агентами Основная логическая единица это **Узлы сети** (host), наблюдаемые машины. У каждого есть описание и адрес (dns/ip). Узлы объединяются в **группы**.\\ Каждый узел имеет несколько **элементов данных** (items)- параметров, за которыми ведется мониторинг, для каждого можно указать период обновления, способ хранения, множитель, интервал сбора и т.д.\\ Так же, можно создавать **узлы-шаблоны**, они так же содержат элементы данных, но не мониторятся, а используются только для сбора в себе и назначения предопределенных (групп) пар-ов.\\ ==== Триггеры ==== Логические выражения со значениями **False**, **True**, **Unknown**, используемые для обработки данных.\\ У каждого существует уровень серьезности угрозы: * **Без классификации** - серый * **Информация** - светло-синий * **Предупреждение** - желтый * **Средняя** - оранжевый * **Высокая** - светло-красный * **Чрезвычайная** - красный Функции триггеров: * **abschange, change** - разница между последним-предпоследним значениями * **avg** - среднее за определенный интервал * **count, sum** - кол-во отчетов по критерию * **date, dayofweek, now, time** - дата/время * **last, prev, max\min ** - определенные значения ==== Действия ==== Заданная реакция на событие, авто/созданная в ручную\\ * **Event source** - может служить: **авторегистрация**, **обнаружение** или **триггер** * **Enable escalations, Period** - разрешение на эскалацию, период времени шага эскалации * **Default subject, Default message** - извещенец по умолчанию, стандартный текст сообщения * **Recovery subject/message** - тоже самое, только после устранения * **Status** - вкл/выкл видимо ==== Операции ==== Операции/группы операций, указываются для событий\\ * **Operation type** - д-я на определенном шаге * **Event source** - источник события * **Send message to** - отдельное/групповое сообщение * **Subject/Default message/Message** - оповещенец, текст сообщения * **Remote command** - команда для удаленного управления ==== Низкоуровневое обнаружение ==== Авто-создание элементов и триггеров, для отслеживания систем, наблюдаемого сервера.\\ **Позволяет обнаружить**: OID SNMP, сетевые интерфейсы, процессоры и ядра, файловые системы, службы windows, ODBC\\ Так же, можно задать собственные типы обнаружения, с применением JSON, типы проверок типа: ssh, ldap, smtp, ftp, http и т.д.\\ ===== Установка ===== Основные ресурсы: [[https://www.dmosk.ru/miniinstruktions.php?mini=zabbix-server-ubuntu#zabbix]]\\ [[https://www.zabbix.com/download|Официальная инструкция на все платформы]] \\ ==== Подготовка сервера ==== **Автосинхронизация серверного времени**\\ Текущий часовой пояс: # timedatectl set-timezone Asia/Omsk Сервис синхронизации времени: # apt install chrony && systemctl {enable,start} chrony **Брандмауэр**: нужны порты 80/443 и 10050/10051- агенты/трапперы\\ Установка версии 6.0, alma/postgres/apache\\ rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm dnf clean all dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent dnf install postgresql-server service postgresql initdb либо /usr/pgsql-11/bin/postgresql-11-setup initdb chkconfig postgresql on systemctl enable postgresql systemctl start postgresql sudo -u postgres createuser --pwprompt zabbix sudo -u postgres createdb -O zabbix zabbix zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix "DBPassword=password" >> /etc/zabbix/zabbix_server.conf systemctl restart zabbix-server zabbix-agent httpd php-fpm systemctl enable zabbix-server zabbix-agent httpd php-fpm # Post set "host all all 127.0.0.1/32 password" in /var/lib/pgsql/data/pg_hba.conf sudo su - postgres & psql \c zabbix update users set passwd=md5('ddd') where username='Admin'; # Так же в параметрах возможно нужно указать схему public
:!: **Установка 11ой версии postgresql** sudo dnf -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo dnf module disable postgresql sudo dnf clean all sudo dnf -y install postgresql11-server postgresql11
:!: **Перенос расположения postgresql** При установке директории создаются в **/usr/pgsql-11**, там бинарники и **/var/lib/pgsql**, там данные и папка БД по дефолту\\ Сама структура создается командой **initdb**. Путь есть в конфиге службы, **/usr/lib/systemd/system/postgresql11.service**, так же есть в файле **/var/lib/pgsql/.bash_profile**
:!: Подробное описание ** База данных **\\ ** MariaDB **\\ [[linux:mysql|Установка MariaDB]] Cоздаем базу и пользователя: mysql> create database zabbix character set utf8 collate utf8_bin; mysql> create user zabbix@localhost identified by 'password'; mysql> grant all privileges on zabbix.* to zabbix@localhost; mysql> quit; Разворачиваем схему базы: # zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -uzabbix -p zabbix ** Postgresql **\\ # apt install postgresql postgresql-contrib Настройка базы sudo -u postgres createuser --pwprompt zabbix sudo -u postgres createdb -O zabbix -E Unicode -T template0 zabbix zcat /usr/share/zabbix-server-pgsql/schema.sql.gz | sudo -u zabbix psql zabbix zcat /usr/share/zabbix-server-pgsql/images.sql.gz | sudo -u zabbix psql zabbix zcat /usr/share/zabbix-server-pgsql/data.sql.gz | sudo -u zabbix psql zabbix ** Web-сервер **\\ ** Nginx **\\ [[linux:nginx|Установка Nginx]] (можно просто поставить, без всего лишнего)\\ **PHP, PHP-FPM**\\ # apt install php php-fpm php-mysql php-pear php-cgi php-common php-ldap php-mbstring php-snmp php-gd php-xml php-gettext php-bcmath Редактируем конфиг: **/etc/php/7.3/fpm/php.ini** date.timezone = "Asia/Omsk" ... max_execution_time = 300 ... post_max_size = 16M ... max_input_time = 300 ... max_input_vars = 10000 # systemctl {enable,start} php7.3-fpm **Nginx+ php**\\ **/etc/nginx/sitex-enabled/default**\\ # В 'Location /' добавляем 'index.php' ... location ~ \.php$ { set $root_path /var/www/html; fastcgi_buffer_size 32k; fastcgi_buffers 4 32k; fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name; include fastcgi_params; fastcgi_param DOCUMENT_ROOT $root_path; } Проверяем настройки и ребутим # nginx -t && systemctl restart nginx ** Apache **\\ # apt install apache2 apache2-utils # Отключите информацию о сервере, изменив следующие параметры в /etc/apache2/conf-enabled/security.conf ServerTokens Prod ServerSignature Off # Включите файл конфигурации Zabbix в Apache: cp /etc/apache2/conf-available/zabbix-frontend-php.conf /etc/apache2/conf-enabled/zabbix.conf # Установите часовой пояс для Zabbix в формате /etc/apache2/conf-enabled/zabbix.conf. ** Сервер zabbix **\\ Ставим сам zabbix (тут скачивается файл для настройки репозиториев, сам дистр ставится из репы) $ wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian10_all.deb $ dpkg -i zabbix-release_5.4-1+debian10_all.deb $ apt update && apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent Либо, если база postgres: # apt install zabbix-server-pgsql zabbix-frontend-php Так же, правим конфиг (все данные от БД): **/etc/zabbix/zabbix_server.conf** DBHost= DBName=zabbix DBUser=zabbix DBPassword= Создаем пару папок (иногда не создаются автоматом) и ребут "zabbix-server" mkdir /etc/zabbix/zabbix_server.conf.d mkdir /var/log/zabbix-server chown zabbix:zabbix /var/log/zabbix-server
==== Настройка ==== Открываем web-форму (http://ip-addr/zabbix/setup.php) и завершаем ее настройку\\ После установки пользователь был "Admin" оО\\ Список пользователей хранится в созданной БД забикса, таблица "user", там же можно сбрасывать пароли: update users set passwd=md5('new_pass') where alias='test_admin'; :!: Для авто-конвертации данных итема нужно указать ед. измерения. В условии триггера значение (для сравнения) указывается в байтах (по крайней мере из коробки так) :!: Опер данные в триггере - {ITEM.LASTVALUE1} :!: Зависимости указываются сверху вниз т.е. дочернему триггеру ставится зависимость базового, тогда при срабатывании обоих будет показан только базовый. У трех (и более) последовательных зависимостей не обязательно ставить единого предка, если они логически "в цепочке" ==== zabbix агент ==== Для использования "JMX" нужен софт "zabbix-java-gateway", ставится отдельно\\