Установка Zabbix сервера, агента и прокси

Установка Zabbix сервера, агента и прокси

Мамкин Админ

На днях разворачивал с нуля новую копию Zabbix сервера, т.к. мой старый сервер, который отработал верой и правдой несколько лет и пережил кучу экспериментов, покрылся кучей ошибок и в итоге после очередного обновления благополучно сдох.
Это послужило стимулом все начать сначала.
Приведу выжимку из команд с минимальными комментариями по установке самого сервера, клиентов и разворачиванию активного прокси сервера Zabbix.

Установку всех компонентов буду выполнять на Debian 11 "bullseye".

1.Установка и настройка Zabbix сервера

Установка Mariadb

  • apt update -y
  • apt install wget curl apt-transport-https mc
  • wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
  • echo "d4e4635eeb79b0e96483bd70703209c63da55a236eadd7397f769ee434d92ca8 mariadb_repo_setup" | sha256sum -c -
  • chmod +x mariadb_repo_setup
  • ./mariadb_repo_setup
  • apt update -y
  • apt install mariadb-server mariadb-client
  • systemctl start mariadb
  • systemctl enable mariadb
  • mysql_secure_installation

mysql_secure_installation

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
 ... Success!

Change the root password? [Y/n] n
 ... skipping.

Remove anonymous users? [Y/n] y
 ... Success!

Disallow root login remotely? [Y/n] y
 ... Success!

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Установка Zabbix

Настройка БД

  • mysql -uroot -p
  • create database zabbix character set utf8mb4 collate utf8mb4_bin;
  • create user zabbix@localhost identified by 'password';
  • grant all privileges on zabbix.* to zabbix@localhost;
  • SET GLOBAL log_bin_trust_function_creators = 1;
  • quit;
  • zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
  • mysql -uroot -p
  • SET GLOBAL log_bin_trust_function_creators = 0;
  • quit;

Минимальная настройка Конфигов

  • mcedit /etc/zabbix/zabbix_server.conf
  • DBPassword=password
  • mcedit /etc/zabbix/nginx.conf
  • listen 8080;
  • #server_name server.example.com;
    Раскомментировать, если сервер смотрит наружу напрямую.
    Я использую перед ним прокси сервер Nginx, который смотрит в мир и управляет доменами. Порт и домен выбираете на свой вкус.
    Также строку с доменом можно оставить закомментированной, если планируется использование сервера только в локальной сети.

Финишные штрихи

  • systemctl stop apache2
  • systemctl disable apache2
  • systemctl restart zabbix-server zabbix-agent nginx
  • systemctl enable zabbix-server zabbix-agent

Доступ к веб интерфейсу

Дальше нужно несколько раз нажать далее-далее-далее в WEB интерфейсе, чтобы завершить настройку.

http://LAN_IP:8080/setup.php
Admin
zabbix

2.Установка и настройка Zabbix-proxy

Zabbix-proxy очень полезная штука.
Как известно, Zabbix сервер может соединяться с агентами в двух режимах - активном и пассивном (стандартном).
Различие этих режимов в том, что в стандартном режиме сервер подключается к агенту, запрашивает данные, и агент отправляет результат обратно серверу.
В активном режиме сначала агент должен запросить с сервера список элементов данных для независимой обработки, т.е. подключение идет в обратную сторону, от агента к серверу.

Из оф. документации:

Пассивная проверка:

  1. Сервер открывает TCP соединение
  2. Сервер отправляет agent.ping\n
  3. Агент получает запрос и отвечает <HEADER><DATALEN>1
  4. Серверные процессы обрабатывают данные полученного значения, в нашем случае "1".
  5. TCP соединение закрывается

Активная проверка:

  1. Агент открывает TCP соединение
  2. Агент запрашивает список элементов данных
  3. Сервер отвечает списком элементов данных (ключ элемента, задержка)
  4. Агент обрабатывает ответ
  5. TCP соединение закрывается
  6. Агент начинает периодический сбор данных

...далее:

  1. Агент открывает TCP соединение
  2. Агент отправляет список значений
  3. Сервер обрабатывает полученные данные и отправляет обратно результат обработки
  4. TCP соединение закрывается

Отсюда можно сделать вывод, что для пассивного подключения у сервера должен быть доступ к агенту, это не составляет никаких неудобств, если например, и сервер и агенты находятся в одной локальной сети.
Но если агенты находятся по разные стороны интернета, тогда придется на каждого агента пробрасывать свой порт, прописывать агенты вручную на сервер, а в настройках агентов в веб интерфейсе сервера указывать внешний статический адрес, за которым они находятся, и каждому свой порт для подключения - неудобно.
Для этого и существует второй способ - активный, когда только сервер должен иметь статику и один проброшенный на сервер порт (по-умолчанию 10051).
В таком случае все агенты смогут спокойно подключаться к серверу из-за ната через интернет.

Так в чем проблема?
В шаблонах, большинство шаблонов написаны для использования с пассивным (стандартным) агентом, а также в отслеживании состояния самого агента, пассивный агент отслеживается методом опроса самого агента, активный же по косвенным признакам.

Решение есть - Zabbix-proxy.

Zabbix-proxy можно установить непосредственной в сети, где работают агенты, и тогда уже он будет подключаться к серверу в активном режиме, а также к агентам в сети в обычном режиме, что позволит к ним применять все шаблоны для пассиных агентов, а также отслеживать их состояние, опрашивая сам агент.
Также преимущество Zabbix-proxy в том, что можно через инетрнет с помощью него проводить не только опросы агентов, но и опросы любого оборудования, которое находится за натом в удаленной частной локальной сети, к которому доступа извне нет.
Например, это могут быть различные коммутаторы и маршрутизаторы, железные серверы видеонаблюдения, да хоть принтеры, которые поддерживают SNMP.
Список поддерживаемых проверок в таком режиме большой, вплоть до отслеживания отдельных процессов и автоматизации с подключением к устройству для автоматического выполнения действий при возникновении проблем.

Установка Zabbix-proxy

  • apt update -y
  • apt install wget curl apt-transport-https mc
  • wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
  • echo "d4e4635eeb79b0e96483bd70703209c63da55a236eadd7397f769ee434d92ca8 mariadb_repo_setup" | sha256sum -c -
  • chmod +x mariadb_repo_setup
  • ./mariadb_repo_setup
  • apt update -y
  • apt install mariadb-server mariadb-client
  • systemctl start mariadb
  • systemctl enable mariadb
  • mysql_secure_installation
  • wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-1+debian11_all.deb
  • dpkg -i zabbix-release_6.2-1+debian11_all.deb
  • apt update -y
  • apt install zabbix-proxy-mysql zabbix-sql-scripts
  • mysql -uroot -p
  • create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
  • create user zabbix@localhost identified by 'password';
  • grant all privileges on zabbix_proxy.* to zabbix@localhost;
  • SET GLOBAL log_bin_trust_function_creators = 1;
  • quit;
  • cat /usr/share/doc/zabbix-sql-scripts/mysql/proxy.sql | mysql -uroot zabbix_proxy
  • mysql -uroot -p
  • SET GLOBAL log_bin_trust_function_creators = 0;
  • quit;
  • systemctl start zabbix-proxy
  • systemctl enable zabbix-proxy

Настройка Zabbix-proxy

  • mcedit /etc/zabbix/zabbix_proxy.conf
  1. ProxyMode=0
  2. Server=server.example.com:51051 # если порт не указывать, прокси будет пытаться подключиться на 10051, этот порт отличается от порта WEB интерфейса сервера и должен быть проброшен на сервер отдельно
  3. Hostname=Proxy1
  4. DBPassword=password
  5. AllowRoot=1 # ставлю от рута, поэтому надо разрешить проксе работать также от рута
  6. TLSConnect=psk
  7. TLSPSKIdentity=Proxy_psk_identity # это значение укажем при настройке прокси на сервере Zabbix
  8. TLSPSKFile=/etc/zabbix/key2.psk
  • echo "passphrase2" > /etc/zabbix/key2.psk

passphrase2 - результат вывода команды: openssl rand -hex 256
чтобы включить шифрование для передачи данных через интернет,
это значение также укажем при настройке прокси на сервере Zabbix

  • systemctl restart zabbix-proxy
  • systemctl enable zabbix-proxy

Настройка Прокси на сервере Zabbix

В веб интерфейсе сервера переходим в:

Администрирование --> Прокси --> Создать прокси.

Выбираем "Активный", имя прокси вводим такое же, как указали в конфиге "Proxy1", в шифровании оставляем только галочку "PSK" и вводим значения:

"Proxy_psk_identity" --> "Идентификатор PSK" и "passphrase2" --> "PSK".

3.Установка и настройка Zabbix-agent2

Существует две версии агентов, Zabbix-agent и Zabbix-agent2.
Если вкратце, то Zabbix-agent2 новее, продвинутее и имеет больше возможностей.
Но бывали случаи, когда на старые версии Windows ставился только Zabbix-agent.

Ставится он уже привычным нам способом:

Установка Zabbix-agent2 на Debian

passphrase - результат вывода команды: openssl rand -hex 256
чтобы включить шифрование для передачи данных через интернет, а также иметь возможность авторегистрации агентов (мы же не собираемся все 100500 агентов вбивать руками на сервере) даже подключенных через Zabbix-proxy.
Это значение отличается от passphrase2.

Установка Zabbix-agent2 на Windows

Качаем агента по ссылке.

Запускаем .msi файл, вбиваем настройки нашего сервера или прокси, ставим галочку PSK и указываем данные ключа passphrase и данные идентификации ключа, например Agent_psk_identity.

Настройка Zabbix-agent2

Настройка в общем виде сводится к изменению конфига, и одинакова что для Windows, что для Linux, за исключением пути к key.psk

Опишу настройку в Linux

  • mcedit /etc/zabbix/zabbix_agent2.conf
  • Server=server.example.com,LAN_IP_PROXY # можно указать несколько адресов серверов или прокси, с которых агент будет принимать соединения в пассивном режиме
  • ServerActive=server.example.com:51051,LAN_IP_PROXY
  • Hostname=PC # Так наш агент будет отображаться на Zabbix сервере
  • TLSConnect=psk
  • TLSAccept=psk
  • TLSPSKIdentity=Agent_psk_identity
  • TLSPSKFile=/etc/zabbix/key.psk
    для Windows пути будут:
    TLSPSKFile=C:\Program Files\Zabbix Agent 2\key.psk
    или
    TLSPSKFile=C:\Program Files\Zabbix Agent\key.psk
  • systemctl restart zabbix-agent2
  • systemctl enable zabbix-agent2

Авторегистрация активных агентов или агентов, подключенных через прокси

В веб интерфейсе сервера переходим в:

Администрирование --> Общие --> Авторегистрация

Оставляем только галочку "PSK" и вводим значения:

"Agent_psk_identity" --> "Идентификатор PSK" и "passphrase" --> "PSK".

Далее переходим в:

Настройка --> Действия --> Действия авторегистрации

На вкладке "Дейстия" даем любое имя, на вкладке "Операции" выбираем "Добавить" и из списка выбираем "Добавить узел сети".

Теперь наши агенты будут автоматически регистрироваться на сервере под теми именами, которые мы укажем в конфиге агентов в строчке "Hostname=PC".
Агенты будут попадать в группу узлов "Discovered hosts", им нужно будет присоединить в настройках необходимые шаблоны и дождаться обновления данных.

В действиях авторегистрации можно полностью автоматизировать, в какую группу будут помещаться новые агенты, какие шаблоны им будут автоматически назначены и т.д.
В том числе это можно автоматизировать с помощью настроек метаданных "HostMetadata" в конфигах агентов, а также указанием, из каких прокси пришли агенты и т.д.

Возможно, когда-нибудь я напишу о более тонкой настройке Zabbix сервера и возможностях автоматизации с помощью него.

Если вы захотите прокомментировать написанное, будем рады увидеть вас в нашем Telegram канале.

Report Page