Zabbix агент 2 — новое поколение Zabbix агента, его можно использовать в качестве замены Zabbix агента. Zabbix агент 2 разработан для:
- уменьшения количества TCP соединений
- улучшения многопоточности проверок
- легкого расширения при помощи плагинов. Плагин должен уметь следующее:
- обеспечивать простые проверки, состоящие только из нескольких строк кода
- обеспечивать сложные проверки, состоящие из длительно выполняемых скриптов и автономного сбора данных с периодической отправкой данных обратно
Agent 2 написан на Go (с частичным использованием C кода из Zabbix агента). Для сборки Zabbix агент 2 требуется подготовленная среда Go с поддерживаемой в настоящее время версией Go.
Agent 2 не имеет встроенной поддержки режима демона на Linux; его можно запустить службой Windows.
Пассивные проверки работают аналогично Zabbix агенту. Активные проверки поддерживают интервалы по расписанию/гибкие интервалы, к тому же проверки выполняются параллельно в пределах одного активного сервера.
New Agent 2 features in Zabbix 6.0 LTS by Aigars Kadiķis / Zabbix Summit Online 2021
По умолчанию, Zabbix agent 2 планирует первый сбор данных по активным проверкам в случайное время в течение интервала времени обновления элемента данных, во избежание скачков в использовании ресурсов. Чтобы активные проверки, у которых отсутствует интервал обновления По расписанию, выполнялись сразу после перезапуска агента, укажите параметр ForceActiveChecksOnStart (глобальный уровень) или Plugins..System.ForceActiveChecksOnStart (влияет только на проверки из конкретного плагина) в файле конфигурации. Параметр уровня плагина, если задан, переопределяет собой глобальный параметр. Принудительные активные проверки при запуске агента поддерживаются, начиная с Zabbix 6.0.2.
Параллелизм проверок
Проверки из разных плагинов могут выполняться параллельно. Количество параллельных проверок в пределах одного плагина ограничено настройкой производительности плагина. Каждый плагин может иметь жёстко зашитую в код настройку производительности (по умолчанию, 100), значение которой можно уменьшить, указав Plugins..System.Capacity=N при настройке параметра конфигурации Plugins. Прежнее название этого параметра Plugins..Capacity всё ещё поддерживается, но устарело с версии Zabbix 6.0.
Passive and active checks
Passive checks work similarly to Zabbix agent. Active checks support scheduled/flexible intervals and check concurrency within one active server.
By default, after a restart, Zabbix agent 2 will schedule the first data collection for active checks at a conditionally random time within the item’s update interval to prevent spikes in resource usage. To perform active checks that do not have Scheduling update interval immediately after the agent restart, set ForceActiveChecksOnStart parameter (global-level) or Plugins..System.ForceActiveChecksOnStart (affects only specific plugin checks) in the configuration file. Plugin-level parameter, if set, will override the global parameter. Forcing active checks on start is supported since Zabbix 6.0.2.
Zabbix Agent2
Check concurrency
Checks from different plugins can be executed concurrently. The number of concurrent checks within one plugin is limited by the plugin capacity setting. Each plugin may have a hardcoded capacity setting (100 being default) that can be lowered using the Plugins..System.Capacity=N setting in the Plugins configuration parameter. Former name of this parameter Plugins..Capacity is still supported, but has been deprecated in Zabbix 6.0.
Поддерживаемые платформы
Zabbix агент 2 поддерживается на следующих платформах:
- Windows (все настольные и серверные версии, начиная с XP; также доступно в виде скомпилированных бинарных файлов)
- Linux (также доступно в виде Установка
Zabbix агент 2 доступен в уже подготовленных, скомпилированных пакетах Zabbix. Для компиляции Zabbix агента 2 из исходных кодов вам необходимо указать опцию конфигурации —enable-agent2 .
Опции
Следующие параметры командной строки могут быть использованы с Zabbix агентом 2:
-c —config | Путь к файлу конфигурации. Вы можете использовать данную опцию, чтобы задать файл конфигурации, размещенный в папке отличной от заданной по умолчанию. В UNIX, путь по умолчанию /usr/local/etc/zabbix_agent2.conf или как задано во время компиляции переменными —sysconfdir или —prefix |
-f —foreground | Запуск Zabbix агента без перехода в фоновый режим (по умолчанию: true). |
-p —print | Вывод известых элементов данных и выход. Обратите внимание: Чтобы также получить результаты пользовательских параметров, вам необходимо указать файл конфигурации (если он находится вне папки заданной по умолчанию). |
-t —test | Тестирование указанного элемента данных и выход. Обратите внимание: Чтобы также получить результат пользовательского параметра, вам необходимо указать файл конфигурации (если он находится вне папки заданной по умолчанию). |
-h —help | Вывод справочной информации и выход. |
-v —verbose | Вывод отладочной информации. Используйте эту опцию совместно с -p и -t опциями. |
-V —version | Вывод номера версии агента и выход. |
-R —runtime-control | Выполнение административных функций. Смотрите управление работой. |
- отображение всех встроенных элементов данных с их значениями
- тестирование пользовательского параметра с ключом «mysql.ping», заданном в указанном файле конфигурации
shell> zabbix_agent2 —print shell> zabbix_agent2 -t «mysql.ping» -c /etc/zabbix/zabbix_agentd.conf
Управление работой
Управление работой агента предоставляет некоторые опции для удаленного управления агентом.
log_level_increase | Увеличение уровня журналирования. |
log_level_decrease | Уменьшение уровня журналирования. |
metrics | Список доступных метрик. |
version | Отображение версии агента. |
userparameter_reload | Перезагрузка пользовательских параметров из текущего файла конфигурации. Обратите внимание, из всех опций конфигурации агента можно перезагрузить только UserParameter. |
help | Отображение справочной информации о функции управления работой. |
- увеличение уровня журналирования агента 2
- вывод опций управления работой
shell> zabbix_agent2 -R log_level_increase shell> zabbix_agent2 -R help
Файл конфигурации
Параметры конфигурации агента 2 большей частью совместимы с Zabbix агентом за несколькими исключениями.
ControlSocket | Путь к сокету управления работой. Агент 2 использует управляющий сокет для административных команд. |
EnablePersistentBuffer, PersistentBufferFile, PersistentBufferPeriod |
Эти параметры используются для настройки постоянного хранилища агента 2 для активных элементов данных. |
ForceActiveChecksOnStart | Параметр определяет должен ли агент выполнить активные проверки немедленно после перезапуска агента или равномерно распределить их по времени. Поддерживается, начиная с Zabbix 6.0.2. |
Plugins | Плагины могут иметь свои собственные параметры, в формате Plugins..= . Общий параметр плагинов — System.Capacity, задаёт ограничение количества проверок, которые могут быть выполнены одновременно. |
StatusPort | Этот порт агент 2 будет слушать для запросов HTTP состояния и отображать список настроенных плагинов и некоторых внутренних параметров |
Исключенные параметры | Описание |
AllowRoot, User | Не поддерживается, так как режим демона не поддерживается. |
LoadModule, LoadModulePath | Загружаемые модули не поддерживаются. |
StartAgents | Этот параметр использовался в Zabbix агенте для увеличения параллелизма пассивных проверок или для их отключения. В Агенте 2 параллелизм настраивается на уровне плагинов и может быть ограничен настройкой производительности. Между тем полное отключение пассивных проверок в настоящее время не поддерживается. |
HostInterface, HostInterfaceItem | Ещё не поддерживается. |
Для получения подробной информации смотрите параметры файла конфигурации по zabbix_agent2.
Коды завершения
Начиная с версии 4.4.8, Zabbix агент 2 также может быть скомпилирован с более старыми версиями OpenSSL (1.0.1, 1.0.2).
В этом случае Zabbix предоставляет мьютексы для блокировки в OpenSSL. Если блокировка или разблокировка мьютекса не удалась, то в стандартный поток ошибок (STDERR) выводится сообщение об ошибке, и агент 2 завершает работу, возвращая код 2 или 3 соответственно.
Источник: www.zabbix.com
Отличие Zabbix Agent2 от обычного агента мониторинга
Послушал вебинар на тему Zabbix_agent2, который я анонсировал ранее. В целом было полезно, потому что я с этим агентом вообще не знаком. Но сам по себе материал очень поверхностный. Никаких примеров не было. Просто небольшое описание возможностей.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти вступительный тест.
Я основные моменты по zabbix agent2 законспектировал и делюсь с вами:
- В agent2 есть буфер для хранения информации. Если нет связи с сервером, то данные накапливаются на агенте и потом отправляются. Это полезная штука, только ради которой можно переходить на этого агента.
- Поддержка плагинов на Go. Уже есть для mysql, postgres, redis, memcached, docker. Постараюсь посмотреть на них в ближайшее время и написать статью.
- Статус агента можно проверить через браузер. Любопытная вещь, впервые об этом услышал. Пока не придумал, зачем это может быть нужно.
- Старый агент будет по прежнему развиваться и поддерживаться. Нет планов по его закрытию.
- На одном и том же узле могут работать оба агента одновременно.
Немного погуглил после вебинара на тему второго агента. Вроде ничего нового и полезного не нашел. Делюсь вот этой ссылкой — https://temofeev.ru/info/articles/razrabotka-plaginov-dlya-zabbix-agent-2/ Там очень подробно описан механизм работы нового агента zabbix, так же рассказано, как для него писать плагины. Приведены конкретные примеры кода.
❗️ Плавно подходим к тому, что чтобы настраивать хороший мониторинг, нужно быть программистом. Эту мысль я уже озвучивал раньше в заметках. Так что господа админы: «Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!»
Есть еще вариант переквалифицироваться в строителя, таксиста или водителя автобуса. У них пока значительно меньше изменений, но не факт, что эти профессии не исчезнут через несколько десятилетий вообще. Так что программистами быть, иначе в охрану. Там ничего учить не надо. Ну либо картриджи заправлять. У нас, думаю, эта тема никогда не умрет 🙂
Источник: serveradmin.ru
Zabbix: установка и базовая настройка системы мониторинга
07.05.2020
insci
CentOS, Linux, Ubuntu, Windows Server 2016
комментариев 10
Zabbix это open-source система мониторинга корпоративного уровня. На текущий момент Zabbix одна из самых популярных и функциональных бесплатных систем мониторинга. Благодаря простой установке и настройке Zabbix можно использовать для мониторинга крупных инфраструктур с сотнями серверов, так и для мелких конфигураций. В этой статье мы рассмотрим, как выполнить установку и базовую настройку сервера Zabbix 4.4 с веб-интерфейсом на базе Linux Ubuntu и CentOS, установить агенты Zabbix на сервере Windows и Linux, и добавить новые хосты в систему мониторинга.
Общий интерфейс Zabbix сервера представлен на скриншоте ниже.
Из чего состоит Zabbix и что он может?
Zabbix простой установке и настройке, написан на C (сервер, прокси и агент) и PHP (фронтенд). Zabbix Server и Zabbix Proxy может работать только на Linux системах. Агент можно установить на большом количестве поддерживаемых ОС и платформах.
Инсталляция Zabbix сервера состоит из:
- бинарника zabbix_server (обычно работает как сервис);
- MySQL (MariaDB)/PostgreSQL базы данных;
- Веб сервера Apache2/Nginx с обработчиком PHP;
- Файлов самого frontend сайта (.php, .js, .css и т.д.).
Обычно схема работы выглядит так:
-
Агент Zabbix посылает данные на сервер
Zabbix может работать со всеми известными протоколами, а благодаря системе внешних скриптов, Zabbix может выполнять и получать данные из любых исполняемых скриптов/бинарников.
Установка Zabbix Server в Linux (Ubuntu, CentOS)
В этой статье мы рассмотрим пример установки Zabbix Server 4.4 на Linux (на примере Ubuntu Server 18.4 и CentOS) через пакетный менеджер.
Перейдите на страницу загрузки https://www.zabbix.com/download и выберите репозиторий, соответствующий вашему дистрибутиву Linux. Готовые пакеты есть для всех популярных дистрибутивов.
Например, для установки Zabbix на Ubuntu 18.04 нужно последовательно выбрать :
Zabbix Version (4.4) -> OS Distribution (Ubuntu) -> OS Version (18.04 Bionic) -> Database (MySQL) -> Веб сервер (Nginx или Apache).
Скачем и добавим репозиторий:
# wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+bionic_all.deb
# dpkg -i zabbix-release_4.4-1+bionic_all.deb
# apt update
Теперь можно установить необходимые пакеты:
# apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-agent
Для установки Zabbix в CentOS 8/RHEL 8 нужно подключить репозиторий с актуальной версией Zabbix (можно установить Zabbix из ветки 4.0 LTS или последнюю версию Zabbix 4.4):
# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
# dnf clean all
Предполагаем, что на сервере уже установлены: nginx, MySQL/MariaDB, php и php-fpm. Теперь через пакетный менеджер установим сам сервер Zabbix и агент:
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-agent
Осталось создать базу данных для Zabbix в MySQL (вместо MySQL можно использовать PostgreSQL, просто замените в командах ‘mysql’ на ‘pgsql’).
Создайте базу данных и дайте права пользователю, из-под которого Zabbix будет обращаться к базе данных:
mysql -uroot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to [email protected] identified by ‘ВашПароль’;
mysql> quit;
Импортируйте базу данных Zabbix. Нужно будет ввести пароль, который вы указали при создании пользователя.
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p Zabbix
Измените конфигурационный файл /etc/zabbix/zabbix_server.conf, укажите пароль от вновь созданного пользователя.
DBPassword=Пароль_Пользователя_Zabbix
Так как в моем случае веб сервером служит nginx, нужно изменить nginx.conf, раскомментировав следующие строчки
# listen 80; # server_name example.com;
Уберите # и поменяйте example.com на домен, по которому вы хотите заходить на Zabbix, в моём случае это test.zabbix.local .
Для Apache файл нужно править файл конфигурации /etc/httpd/conf.d/zabbix.conf .
Выставим временную зону в PHP. В файле /etc/zabbix/php-fpm.conf раскомментируем строчку
php_value[date.timezone] = Europe/Moscow
Убедитесь, что время на Zabbix сервере синхронизировано с надежным NTP источником.
Дополнительно можно выставить следующие параметры PHP в /etc/php.ini :
memory_limit 128M upload_max_filesize 8M post_max_size 16M max_execution_time 300 max_input_time 300 max_input_vars 10000
Добавьте службу zabbix-server в автозапуск и запустите ее:
# systemctl enable zabbix-server zabbix-agent nginx php7.2-fpm
# systemctl restart zabbix-server zabbix-agent nginx php7.2-fpm
Настройка веб-интерфейса Zabbix
Теперь нужно настроить frontend (веб-интерфейс) Zabbix. В браузере откройте указанный ранее URL адрес zabbix сервера. В моем случае это test.zabbix.local (или на домен, который вы указывали. Не забудьте прописать его у себя в hosts файле или на DNS сервере).
Убедитесь, что во всех требования инсталлятора указано ОК.
Укажите данные для подключения к БД. Используйте пользователя и пароль, который создали ранее.
Укажите название Zabbix сервера. Порт рекомендую оставлять стандартный – TCP 10051.
Система Zabbix по-умолчанию использует два порта:
- TCP 10050 — порт пассивного агента, по нему zabbix сервер опрашивает клиентов;
- TCP 10051 — порт, на котором zabbix сервер получает данные от клиентов (активный агент).
Не забудьте открыть данные порты. Например, на Zabbix сервере на базе CentOS можно открыть порты в firewalld с помощью firewall-cmd:
# firewall-cmd —add-service= —permanentfirewall-cmd —add-port= –permanent
А на агенте достаточно открыть 10050:
# firewall-cmd —permanent —add-port=10050/tcp
Не забудьте перезагрузить firewalld:
После этого жмите Next Step и Finish. После успешной установки вас попросит залогиниться. По-умолчанию логин Admin , пароль zabbix (замените его).
На этом установка сервера Zabbix Server завершена.
На странице https://www.zabbix.com/download есть пошаговые инструкции для установки Zabbix Server на другие операционные системы, а так же инструкции как собрать zabbix-server из исходного кода или запустить его в docker контейнерах.
Вы можете настроить Zabbix на аутентфикацию пользователей через Active Directotry LDAP.
Установка Zabbix Agent в Windows
Попробуем установить Zabbix агент на сервер Windows и добавим его на наш сервер мониторинга Zabbix. Скачать версию Zabbix агент для Windows можно здесь: https://www.zabbix.com/download_agents.
Выберите нужную версию агента под Windows. Я выберу формат msi (amd64) (без OpenSSL). Если вы планируете устанавливать zabbix agent на сервера/компьютеры домена через групповые политики или SCCM, то можете скачать zip архив с бинарными файлами и конфигурационными файлами.
Запустите инсталлятор, примите лицензионное соглашение, укажите запрошенные данные. Обратите внимание, что в поле “Server or Proxy for active checks” я указал IP адрес в формате IP:PORT. Поскольку порт я оставлял стандартный, я пишу IP:10051.
Далее еще пару раз нажмем Next и Install.
После этого убедимся, что наш агент установлен. В списке служб должен появиться сервис Zabbix Agent.
На клиенте Windows нужно разрещить входящие подключения с IP адреса сервера Zabbix в Брандмауэре Windows:
New-NetFirewallRule -DisplayName «ZabbixMonitoring» –RemoteAddress 192.168.1.100 -Direction Inbound -Protocol TCP –LocalPort 10050 -Action Allow
Добавление устройства на Zabbix-сервере
Чтобы убедиться в работоспособности агента, нужно добавить хост testnode2 на Zabbix сервер и назначить ему проверки (checks).
Заметка. В заббиксе есть 2 типа проверок:
- Пассивные – Zabbix сервер запрашивает у агента какие-либо данные;
- Активные – агент посылает на сервер данные;
При установке агента мы указывали сервер в формате IP:PORT как раз для активных проверок.
Добавление нового устройства для мониторинга в Zabbix выполняется через Web-интерфейс. Перейдите в раздел Configuration -> Hosts.
Нажмите Create host и заполните данные. Обратите внимание, что Host name хоста должен полностью совпадать с hostname машины или значением параметра Hostname в конфиге агента.
Во вкладке Templates добавить несколько встроенных Windows шаблонов. Шаблоны в Zabbix это наборы значений, триггеров, графов и правил обнаружения, которые могут быть назначены одному или нескольким хостам.
Эти интегрированные шаблоны имеют постфикс “active”, значит, будут использоваться активные проверки.
Нажмите Add. Чтобы не ждать пока сервер и агент увидят друг друга (обычно занимает пару минут), перезагрузите службу Zabbix Agent на testnode2 и проверьте лог агента (C:Program FilesZabbix Agentzabbix_agentd.txt).
Сообщение “started [active checks #1]” говорит о том, что на сервере найдены активные проверки для этого хоста. Теперь посмотрим на данные, которые пришли на сервер Zabbix от агента. Для этого в Zabbix перейдите на Monitoring -> Latest Data и выберете нужный вам хост в поле Hosts.
В этом разделе отображаются последние данные, которые пришли на сервер по выбранным хостам или группам хостов.
Обратите внимание на то, что в дашборде Zabbix висит уведомление о том, что служба BITS не запущена. Это уведомление появилось потому что мы назначили стандартные шаблоны нашему хосту. В одном из шаблонов был мониторинг сервиса BITS и соответствующий триггер, который срабатывает если служба BITS находится не в статусе Running.
На этом настройка Windows Agentа завершена.
Установка Zabbix Agent в Linux
Теперь установим агент Zabbix в Linux. Для установки Zabbix агента в Ubuntu Server 18.04 с помощью пакетного менеджера нужно скачать и установить репозиторий Zabbix. Затем из репозитория установим zabbix agent:
# wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+bionic_all.deb
# dpkg -i zabbix-release_4.4-1+bionic_all.deb
# apt update
# apt install zabbix-agent
В CentOS для добавления репозитория и установки агента zabbix используется команды:
# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
# dnf clean all
# dnf install zabbix-agent
Перед тем как мы запустим zabbix агент, нужно отредактировать конфигурационный файл /etc/zabbix/zabbix_agentd.conf. В нем нужно указать IP адрес сервера Zabbix для активных проверок.
Server=IP ServerActive=IP:10051 Hostname=testagent
После этого запустите сервис агента:
# service zabbix-agent start
Убедитесь, что агент успешно запустился.
Строка cannot parse list of active checks говорит о том, что на сервере нет активных проверок для этого хоста.
Как и в случае с Windows агентом, вам нужно добавить ваш Linux хост в настройках сервера Zabbix. Обратите внимание на параметр Host name в настройка хоста в интерфейсе заббикс сервера — этот параметр должен совпадать с Hostname параметром, который мы указываем в конфиге Zabbix -агента. В конфиге выше я указывал имя хоста testagent.
Перезагрузите Zabbix агент и проверьте лог.
Проверьте, что данные от агента появились на сервере Zabbix.
На этом настройка Zabbix-агента на Linux системе завершена. В следующей статье мы рассмотрим безагентный мониторинг доступности узлов в Zabbix через ICMP Ping.
Предыдущая статья Следующая статья
Источник: winitpro.ru