Домой / Видео / Настройка мониторинга Zabbix для IT-инфраструктуры компании. Универсальная система мониторинга Zabbix — введение

Настройка мониторинга Zabbix для IT-инфраструктуры компании. Универсальная система мониторинга Zabbix — введение

И сетевого оборудования , написанная Алексеем Владышевым.

Для хранения данных используется MySQL , PostgreSQL , SQLite или Oracle . Веб-интерфейс написан на PHP . ZABBIX поддерживает несколько видов мониторинга:

  • Simple checks - может проверять доступность и реакцию стандартных сервисов, таких как SMTP или HTTP, без установки какого-либо программного обеспечения на наблюдаемом хосте.
  • ZABBIX agent - может быть установлен на UNIX-подобных или Windows -хостах для получения данных о нагрузке процессора , использования сети, дисковом пространстве и т. д.
  • External check - выполнение внешних программ. ZABBIX также поддерживает мониторинг через SNMP .

Энциклопедичный YouTube

  • 1 / 5

    Zabbix начался в 1998 году как проект внутреннего программного обеспечения. Спустя 3 года, в 2001 году, он был выпущен публично под лицензией GPL . Прошло более трёх лет до выхода первой стабильной версии - 1.0, которая была выпущена в 2004.

    График релизов
    Дата Релиз
    Zabbix 1.0
    1998 ПО Zabbix началось как внутренний проект в банке Алексеем Владышевым
    7 Апреля 2001 Zabbix 1.0alpha1 был выпущен с лицензией GPL
    23 Марта 2004 Выпущен Zabbix 1.0
    Zabbix 1.1
    6 Февраля 2006 Выпущен Zabbix 1.1
    Zabbix 1.4
    29 Мая 2007 Выпущен Zabbix 1.4
    Zabbix 1.6
    11 Сентября 2008 Выпущен Zabbix 1.6
    Zabbix 1.8
    7 Декабря 2009 Выпущен Zabbix 1.8
    Zabbix 2.0
    21 Мая 2012 Выпущен Zabbix 2.0
    Zabbix 2.2.1
    21 Декабря 2013 Выпущен Zabbix 2.2.1
    Zabbix 2.4.0
    11 Сентября 2014 Выпущен Zabbix 2.4.0
    Zabbix 3.0
    16 Февраля 2016 Выпущен Zabbix 3.0

    Архитектура

    • Zabbix-сервер - это ядро программного обеспечения Zabbix. Сервер может удаленно проверять сетевые сервисы, является хранилищем, в котором хранятся все конфигурационные, статистические и оперативные данные, и он является тем субъектом в программном обеспечении Zabbix, который оповестит администраторов в случае возникновения проблем с любым контролируемым оборудованием.
    • Zabbix-прокси - собирает данные о производительности и доступности от имени Zabbix-сервера. Все собранные данные заносятся в буфер на локальном уровне и передаются Zabbix-серверу, к которому принадлежит прокси-сервер. Zabbix-прокси является идеальным решением для централизованного удаленного мониторинга мест, филиалов, сетей, не имеющих локальных администраторов. Он может быть также использован для распределения нагрузки одного Zabbix-сервера. В этом случае, прокси только собирает данные, тем самым на сервер ложится меньшая нагрузка на ЦПУ и на ввод-вывод диска.
    • Zabbix-агент - контроль локальных ресурсов и приложений (таких как жесткие диски, память, статистика процессора и т. д.) на сетевых системах, эти системы должны работать с запущенным Zabbix-агентом. Zabbix-агенты являются чрезвычайно эффективными из-за использования родных системных вызовов для сбора информации о статистике.
    • Веб-интерфейс - интерфейс является частью Zabbix-сервера, и, как правило (но не обязательно), запущен на том же физическом сервере, что и Zabbix-сервер. Работает на PHP , требует веб сервер (например, Apache).

    Обзор возможностей

    • Распределённый мониторинг вплоть до 1000 узлов. Конфигурация младших узлов полностью контролируется старшими узлами, находящимися на более высоком уровне иерархии.
    • Сценарии на основе мониторинга
    • Автоматическое обнаружение
    • Централизованный мониторинг лог-файлов
    • Веб-интерфейс для администрирования и настройки
    • Отчетность и тенденции
    • SLA мониторинг
    • Поддержка высокопроизводительных агентов (zabbix-agent) практически для всех платформ
    • Комплексная реакция на события
    • Поддержка SNMP v1, 2, 3
    • Поддержка SNMP ловушек
    • Поддержка IPMI
    • Поддержка мониторинга JMX приложений из коробки
    • Поддержка выполнения запросов в различные базы данных без необходимости использования скриптовой обвязки
    • Расширение за счет выполнения внешних скриптов
    • Гибкая система шаблонов и групп
    • Возможность создавать карты сетей

    Автоматическое обнаружение

    • Автоматическое обнаружение по диапазону IP-адресов, доступным сервисам и SNMP проверка
    • Автоматический мониторинг обнаруженных устройств
    • Автоматическое удаление отсутствующих хостов
    • Распределение по группам и шаблонам в зависимости от возвращаемого результата

    Низкоуровневое обнаружение

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

    • обнаружение файловых систем
    • обнаружение сетевых интерфейсов
    • обнаружение нескольких SNMP OID’ов

    Системные требования для установки ZABBIX-сервера

    Поддерживаемые платформы

    Платформа ZABBIX-сервер ZABBIX-агент
    AIX Поддерживается Поддерживается
    FreeBSD Поддерживается Поддерживается
    HP-UX Поддерживается Поддерживается
    Linux Поддерживается Поддерживается
    Mac OS X Поддерживается Поддерживается
    Novell Netware - Поддерживается
    OpenBSD Поддерживается Поддерживается
    SCO Open Server Поддерживается Поддерживается
    Solaris Поддерживается Поддерживается
    Tru64/OSF Поддерживается Поддерживается
    Windows NT 4.0, Windows 2000, Windows 2003, Windows XP, Windows Vista - Поддерживается

    Доброго времени суток. В данную серию статей я хочу посвятить одной из замечательных систем мониторинга - zabbix. По долгу службы пришлось мне искать систему мониторинга. Я останавливался на nagios, cacti, mrtg. Но они мне не подошли. И вот я нашел zabbix. Ознакомившись с документацией, я понял, что zabbix - это то, что надо...

    И так, что же такое zabbix? Zabbix - это система распределенного мониторинга, которая позволяет мониторить многочисленные параметры сети и узлов сети. Zabbix распространяется под лицензией GPL, а это означает - она бесплатна.

    Возможности zabbix

    Как я уже говорил выше, zabbix обладает огромными возможностями, а конкретно:
    • мониторинг доступности
    • мониторинг по SNMP
    • мониторинг по IPMI
    • мониторинг по JMX
    • собственная настройка порогов срабатывание проблемы
    • настройка оповещений
    • группировка по хостам, по собираемым данным
    • использование шаблонов
    • система прав доступа
    • и многое другое

    Подготовка к установке zabbix

    Сразу хочу отметить, что установку я буду производить на Linux, а точнее на Ubuntu Server.
    Установку я буду производить из исходников. Поэтому давайте в начале скачаем исходный код Zabbix с . Разархивируем скачанный архив. Для этого переходим в директорию с архивом и вводим комманду:

    $ tar -zxvf zabbix-2.0.0.tar.gz

    Отлично. Следующим этапом необходимо подготовить нашу систему к установке zabbix. Нам понадобятся следующие пакеты:
    • snmp
    • libsnmp-dev
    • snmpd
    • libcurl4-openssl-dev
    • fping
    Этих пакетов достаточно для того, чтобы zabbix смог опрашивать узлы на доступность и собирать информацию по SNMP.
    Если данные пакеты не установлены в системе, установим их:

    sudo apt-get install snmp libsnmp-dev snmpd libcurl4-openssl-dev fping

    После того как все необходимые пакеты установлены, необходимо создать группу zabbix и пользователя zabbix:

    groupadd zabbix
    useradd -g zabbix zabbix

    Теперь нужно подготовить базу данных. Zabbix может работать как с MySQL, так и с PostgreSQL. (поддерживает и другие, Вы можете ознакомиться в официальной документации). Производитель рекомендует использовать в качестве сервера базы данных PostgreSQL, если Вы собираетесь мониторить более 50 узлов.
    Но я использую MySQL и на данный момент у меня на мониторинге стоит 123 узла - пока проблем не наблюдал. В дальнейшем планируется увеличение узлов, тогда и посмотрим. И так, создаем базу данных в MySQL:

    shell> mysql -u <имя пользователя> -p
    <пароль>
    mysql> create database zabbix character set utf8
    mysql> quit

    Теперь заходим в директорию с разархивированными исходниками zabbix. В ней в директории./database/mysql/ находятся три файла:

    1. schema.sql
    2. images.sql
    3. data.sql
    И запускаем их на исполнение:

    mysql -u <пользователь> -p < schema.sql

    или из самого mysql:

    mysql>use zabbix
    mysql>source schema.sql

    По аналогии запускаем и остальные файлы images.sql и data.sql
    Порядок обязателен.
    Все на этом этап подготовки к установке завершен. Теперь можно приступить к самой установке zabbix.

    Установка мониторинга zabbix

    Переходим в директорию с кодом zabbix и запускаем:

    sudo ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl

    Мы подключаем сам zabbix сервер, zabbix агент, поддержку snmp.
    Если все прошло хорошо (а об ошибках с которыми я столкнулся и как их решить я опишу ниже) запускаем установку:

    sudo make install

    На этом установка завершена. Осталось произвести небольшую конфигурацию сервера и агента zabbix.

    Первоначальная настройка zabbix

    Для работы zabbix сервера необходимо произвести первоначальные настройки. Открываем файл конфигурации /usr/local/etc/zabbix_server.conf (так в Ubuntu) и редактируем его:

    DBName=[имя базы данных, у меня zabbix]
    DBUser = [имя пользователя доступа к MySQL]
    DBPassword = [пароль доступа к базе данных]

    Вот в принципе и все. Если у Вас MySQL настроен по умолчанию, то все должно заработать.
    Теперь настроим агент zabbix. Если zabbix агент находится на той же машине, где и zabbix сервер, то ничего менять не надо. Если же zabbix агент находиться на другой машине, то открываем /usr/local/etx/zabbix_agentd.conf ищем строку Server=127.0.0.1 и заменяем на Server=[адрес zabbix сервера]
    Вот и все. Запускаем zabbix сервер и агент командами:

    zabbix_server
    zabbix_agentd

    Пришло время к установке web интерфейса для zabbix.

    Установка web интерфейса zabbix

    Создаем виртуальный хост zabbix, как это сделать я писал в своей статье про . Копируем в директорию созданного виртуального хоста файлы из директории с zabbix/frontends/php
    Заходим на наш хост. Тут нужно немного подправить наш php.ini согласно требованиям zabbix.
    • memory_limit - задает максимальную величину использования памяти скриптом
    • post_max_size - устанавливает максимальный размер данных передаваемых методом POST
    • upload_max_filesize - максимальный размер загружаемого файла
    • max_execution_time - время выполнения скрипта
    • max_input_time - максимальное время в секундах, в течение которого скрипт должен разобрать все входные данные
    • timezone - в php.ini date.timezone, устанавливает часовой пояс
    Дальше идут расширения PHP
    • datebase support - тип базы данных
    • bcmath - вычисления с произвольной точностью
    • mbstring - работа с многобайтными строками
    • sockets - работа с сокетами
    • gd - графическая библиотека
    • и др.
    Перезапускаем сервер apache.
    После того как все требования zabbix будут удовлетворены, можно перейти к следующему шагу.

    На этом шаге нам надо выбрать тип базы данных (в моем случае это MySQL), укаазать адрес сервера (у меня localhost), название базы данных (для моего случае это zabbix), логин и пароль для доступа к базе данных:

    После ввода всех данных жмем “Test connection”, если тест прошел успешно переходим к следующему шагу, если же нет, то проверяем введенные данные. Если вся информация введена правильно - переходим к установке, нет - возвращаемся и исправляем.

    Как видите у меня все прошло успешно. Учтите, что файл zabbix.conf.php должен быть открыт на запись. Как это сделать я описывал в своей статье об Жмем “Finish”. И переходим к окну авторизации.

    По умолчанию логин - Admin, пароль - zabbix.
    На этом установка завершена.
    Давайте рассмотрим проблемы с которыми я столкнулся при установке zabbix и как их решить.

    Проблемы возникающие при установке zabbix и их решение

    Во время установки мониторинга я столкнулся с двумя ошибками:

    1. При выполнении configure у меня выскочила ошибка “MySQL library not found”. Решается данная проблема легко, путем установки libmysqlclient16-dev
    2. Вторая ошибка выскочила при выполнении make install “The programm ‘make’ is currently not installed”. Тут все просто, у меня не установлена программа make.
    Больше при установке zabbix проблем не возникло. Если же у Вас что-то пошло не так и Вы не знаете как это решить или решили - делитесь в комментариях. Думаю это будет полезно всем.
    А на этом я завершаю статью, посвященную установке мониторинга zabbix. В следующей статье мы познакомимся с основными понятиями, затем разберем интерфейс и перейдем к настройке мониторинга хостов (устройств нашей сети). Так, что следите за выходом новых статей.

    20 Фев 2018

    Zabbix - это свободная (open-source) система для мониторинга состояния компьютерных сетей, серверов и различного оборудования. Фактически программа состоит из трех компонентов:

    1. Zabbix-сервер - это ядро системы (центральный процесс) программного обеспечения Zabbix. Используется для хранения и обработки всей информации, а также оповещает администраторов о возникающих проблемах.
    2. Zabbix-прокси - это процесс, который собирает данные с нескольких узлов в локальное хранилище. После этого, он передает всю информацию на сервер (единым пакетом).
    3. Zabbix-агент - это программа, устанавливаемая непосредственно на наблюдаемое устройство. Собирает всю информацию (о локальных ресурсах и приложениях), которая после передается на сервер.

    Стоит отметить особенности Zabbix - программа поддерживает множество платформ (Linux, Mac OS, Windows) и доступна через веб-интерфейс. С его помощью вы можете получить доступ к данным мониторинга с любого ПК, но для этого стоит выполнить предварительную настройку на Zabbix-сервере.

    Возможности Zabbix

    Для сбора информации Zabbix использует системные вызовы, благодаря чему, влияние на производительность минимальное. Ознакомится с параметрами, которые мониторятся с помощью Zabbix можно в таблице.

    Детальные параметры

    Базовые параметры

    Объем занятой оперативной памяти

    Свободное место на диске

    Скорость работы накопителей (IOPS)

    Изменения определенных файлов

    Информация о сервере (время работы, имя)

    Мониторинг комплектующих сервера. Для данного мониторинга используется интерфейс IPMI (либо его аналоги)

    Температурные показатели (информация со всех установленных датчиков) и вольтаж комплектующих

    Скорость вращения вентиляторов

    Информация о сетевом оборудовании

    Уровень трафика (с разделением на download и upload)

    Состояние интерфейсов, а также информация о возникающих ошибках

    Мониторинг служб

    Получение информации о службах на сервере (например, о конкретных портах)

    Различные параметры служб MySQL Asterisk, Microsoft Exchange

    Сертификаты

    Срок службы сертификатов

    Это позволяет предотвратить возникающие проблемы до их наступления, а также точно определить “узкое” место в системе. Мониторинг осуществляется круглосуточно, что позволяет фиксировать все ошибки, независимо от времени их возникновения. Давайте разберемся, какие практические сценарии использования мониторинга Zabbix.

    Пример 1. Непредвиденное отключение сервера

    Возможная проблема

    В ходе работы сервера накапливаются системные файлы. Это может привести к отключению сервера из-за переполнения системного диска C.

    Решение

    Мониторинг системы, был настроен на вывод предупреждения, если на диске доступно менее 5 Гб. Таким образом, администратор может предотвратить возникновение данного инцидента вновь, очистив диск С от ненужных файлов.



    Пример 2. Некорректно работающее резервное копирование

    Проблема

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

    Решение

    Так как видимых причин проблемы нет (изменение настроек и т.д.), был установлен мониторинг. С его помощью выяснилось, что установленный сертификат неактуален - закончился срок действия. Сертификат был обновлен, после чего резервное копирование работает корректно.

    Кроме того, Zabbix был настроен на отслеживание состояния сертифика. Как только срок его действия подходит к концу, администратор системы получал об этом уведомление.


    Пример 3. Безопасность системы

    Проблема

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

    Решение

    Мониторинг файла passwd (в нем хранится информация о пользователях), сообщающий о его изменениях. В случае добавления нового пользователя или изменения прав у существующих, администратор получает уведомление об этом. Благодаря круглосуточному мониторингу, специалисты It-lite отреагируют на это в кратчайшие сроки и предпримут необходимые действия. Это позволит предотвратить несанкционированный доступ к системе в любое время суток.

    Внедрение Zabbix

    Как видим, Zabbix полезный инструмент, позволяющий не только найти причины ошибки, но и избежать ее повторения в будущем. Однако, для получения полной и корректной информации, следует выполнить его настройку. Это технически сложный процесс, для которого не подходит универсальная инструкция. У специалистов It-lite большой опыт таких работ, благодаря чему они быстро и качественно выполнят внедрение мониторинга Zabbix. При этом, они обязательно учитывают нюансы настраиваемой инфраструктуры.

    Небольшая статья-инструкция, посвященная тому, как сделать первоначальную настройку мониторинга Zabbix. Итак: Заходим. Пользователь и пароль по умолчанию Admin zabbix. Настраиваем Email уведомления, в меню “Administration -> Media types -> Email” Указываем настройки подключения к Вашему почтовому серверу и адрес отправки, в меню “Administration -> Users -> Admin -> Media” добавляем адреса получателей, галочками отмечаем типы…

    Установка Zabbix на Centos 7 - инструкция самостоятельной установки

    Приступаем к установке Centos 7 Скачиваем последний образ Centos. Готовим для него железо или виртуальную среду в соответствии с требованиями. Окно “INSTALLATION SUMMARY” Не забываем выставить свой часовой пояс в “DATE & TIME”, добавить раскладку в “KEYBOARD”, зайти в “INSTALLATION DESTINATION” и выбрать диск, выбрать тип установки в “SOFTWARE SELECTION”. Многие ресурсы рекомендуют выставить “MINIMAL…

    Безвозвратное удаление данных

    Просто отформатировать носитель и затем выбросить его неэффективно - информация может быть восстановлена с помощью специального ПО. Безвозвратное удаление данных выполняется несколькими методами, о которых мы расскажем в данной статье


    Защита информации в 1С

    Услуги обеспечения защиты и информационной безопасности баз данных и модулей 1С:Предприятие 7.7 и 8, настройка защиты сервера 1С. Защита информации в 1С от сбоев, взлома, копирования на программном и аппаратном уровнях для обеспечения отказоустойчивости бизнеса

    Настройка разграничения прав доступа на сервере

    Услуги по настройке файлового сервера с разграничением прав доступа. Разграничение прав доступа пользователей обеспечит более высокий уровень защиты вашей конфиденциальной информации и закроет некоторые потенциальные уязвимости в корпоративной сети.

    Прямой обмен по технологии directbank 1С

    Прямой обмен с банками по технологии DirectBank для тех, кто хочет работать с банковскими документами ещё быстрее, комфортнее и безопаснее. Все происходит в привычном интерфейсе 1С, все действия в одном-единственном окне – не придется тратить время и силы на обучение, можно сразу же приступать к работе.

    Внедрение 1С: ERP (Управление предприятием)

    Установка и настройка 1С:УТ редакций 11.2, 10.3, доработка конфигурации под задачи пользователей, создание собственных форм отчетов и другие работы по внедрению данной системы в рамках проектов по автоматизации 1С

    Обновление 1С нетиповых конфигураций

    Услуги обновления 1С для организаций. Апдейт различных платформ, версий, типовых и нетиповых конфигураций. Обновление 1С – именно та услуга, которая позволяет избегать ошибок и неисправности эксплуатации программного комплекса “1 С”.

    1-го октября 2018 года вышла новая версия бесплатной системы мониторинга, которую я постоянно использую. Я подробно расскажу об установке и начальной настройке Zabbix 4.0 на примере систем CentOS, Debian, Ubuntu со скриншотами и пояснениями. В этой версии много интересных и полезных нововведений, так что посмотреть на неё однозначно стоит.

    На сегодняшний день, по моему мнению, из бесплатных систем мониторинга именно Zabbix самая популярная и функциональная. Упоминания о ней я постоянно встречаю в технических статьях специалистов различного масштаба и организаций. К примеру, СберТех использует Zabbix как единую платформу мониторинга. ИТ отдел сети магазинов Магнит так же использует zabbix как основную систему мониторинга. Пару лет назад я смотрел выступление представителя ИТ отдела Магнита, где он подробно описывал структуру системы. На тот момент это была самая крупная инсталляция заббикса с тысячами прокси серверов для сбора данных из магазинов по всей стране. Упоминания о мониторинге заббикс я встречал у специалистов компаний 1С, Крок, Яндекс.Деньги и других. Перечислил только то, что запомнилось.

    Нужно понимать, что Zabbix — система мониторинга общего назначения. У нее нет специализации в микросервисы, сеть, железо и т.д. В связи с этим, всегда может найтись инструмент, который сможет выполнять ту или иную задачу удобнее и эффективнее, чем zabbix. Но это не умоляет остальных достоинств системы. Я их вижу в первую очередь в том, что в ней можно настроить мониторинг всего, что угодно. Главное научиться подавать значения в систему. А для этого есть масса инструментов — как самих агентов, так и скриптов, которые можно подключать к сбору данных.

    Система мониторинга Zabbix позволяет так или иначе завести на нее все обслуживаемые сервисы. Где-то это может быть не очень просто, но в любом случае, один универсальный инструмент удобнее, чем несколько. Мне всегда удавалось настроить желаемый мониторинг с помощью заббикса. Если не было готовых шаблонов или подходящих агентов для сбора, писал скрипты и передавал ими данные агенту. С моими (и не только) решениями по мониторингу можете познакомиться в отдельном разделе .

    Чем меня еще подкупает zabbix — хорошая документация и большое комьюнити. Много выступлений от различных специалистов с описанием внедрений. Все это облегчает работу с системой. Проще принять решение как поступить в той или иной ситуации. Сами разработчики постоянно проводят встречи, приглашают выступающих, потом выкладывают видео. В общем, система со всех сторон оставляет благоприятное впечатление.

    Я буду устанавливать и настраивать работу сервера zabbix на nginx, что несколько отличается от дефолтной установки, которая включает в себя веб сервер apache. В связи с этим, нам необходимо будет подготовиться.

    Подготовка сервера CentOS к установке

    Первым делом вам необходимо и сервер CentOS 7. Перед установкой сервера Zabbix нам также нужно подготовить Web сервер. У меня есть отдельная статья по . Там все подробно описано. Сейчас же я кратко и без лишних комментариев выполню минимум необходимых действий для работы заббикса. Так же я не буду останавливаться на . Эта отдельная тема и мне не хочется ее касаться в этой статье. Либо настройте сами по моим инструкциям, либо просто отключите firewall:

    # systemctl stop firewalld # systemctl disable firewalld

    Подключаем репозиторий nginx и устанавливаем его:

    # rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm # yum install nginx

    Запускаем nginx и добавляем в автозагрузку.

    Проверяем, работает ли он. Для этого открываем в браузере ссылку http://192.168.13.117/, где 192.168.13.117 — ip адрес настраиваемого сервера.

    Если у вас не работает nginx, разберитесь с ним, прежде чем двигаться дальше. В первую очередь проверьте настройки фаервола.

    # yum install epel-release # rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

    Активируем репу remi-php71, для этого выполняем команды:

    # yum install yum-utils # yum-config-manager --enable remi-php71

    Устанавливаем php 7.1 и модули к нему.

    # yum install php71 php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-bcmath

    Запускаем php-fpm и добавляем в автозагрузку.

    # systemctl start php-fpm # systemctl enable php-fpm

    Проверяем, запустился ли он.

    # netstat -tulpn | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 13261/php-fpm: mast

    Все в порядке, запустился на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:

    # mcedit /etc/php-fpm.d/www.conf ;listen = 127.0.0.1:9000

    Вместо нее добавляем несколько других:

    Listen = /var/run/php-fpm/php-fpm.sock listen.mode = 0660 listen.owner = nginx listen.group = nginx

    Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx, отредактировав соответствующие параметры.

    User = nginx group = nginx

    Перезапускаем php-fpm.

    # systemctl restart php-fpm

    Проверяем, стартовал ли указанный сокет.

    # ll /var/run/php-fpm/php-fpm.sock srw-rw----. 1 nginx nginx 0 Oct 4 15:08 /var/run/php-fpm/php-fpm.sock

    На текущий момент с настройкой php-fpm закончили. Продолжаем подготовку сервера к установке zabbix.

    Устанавливаем свежую версию MariaDB. Подключаем репозиторий. Для этого создаем файл /etc/yum.repos.d/mariadb.repo следующего содержания.

    # mcedit /etc/yum.repos.d/mariadb.repo # MariaDB 10.3 CentOS repository list - created 2018-10-04 12:10 UTC # http://downloads.mariadb.org/mariadb/repositories/ name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1

    Устанавливаем последнюю версию mariadb на centos.

    # yum install MariaDB-server MariaDB-client

    Запускаем mariadb и добавляем в автозагрузку.

    # systemctl start mariadb # systemctl enable mariadb

    Внесем некоторые изменения в стандартный конфиг mariadb, чтобы потом не заниматься . Для этого открываем конфиг mysql /etc/my.cnf.d/server.cnf и приводим его к следующему виду.

    # mcedit /etc/my.cnf.d/server.cnf port = 3306 socket = /var/lib/mysql/mysql.sock default-character-set=utf8 character_set_server=utf8 collation-server=utf8_bin init_connect="SET NAMES utf8 collate utf8_bin" port = 3306 socket = /var/lib/mysql/mysql.sock innodb_file_per_table=1 innodb_buffer_pool_size = 768M # внимание на параметр! установить примерно в 2 раза меньше объема оперативной памяти сервера innodb_buffer_pool_instances=1 # увеличивать на 1 каждый GB innodb_buffer_pool_size innodb_flush_log_at_trx_commit = 0 innodb_log_file_size = 512M innodb_log_files_in_group = 3

    Я добавил минимум настроек, отличных от дефолта. В статье про оптимизацию mysql их приведено гораздо больше, но со временем я понял, что зря это сделал. Реально у меня нет большого опыта в тонкой настройке mysql. Никаких тестов и проверок я не делал, а данные брал на основе других статей в интернете. Не факт, что там не было ошибок. В итоге сейчас тут только заданы некоторые важные параметры по innodb, в частности указание хранить каждую таблицу в отдельном файле, задан размер и количество бинарных логов и еще пару настроек, которые явно будут к месту (innodb_buffer_pool_size, innodb_buffer_pool_instances и innodb_flush_log_at_trx_commit). При желании, вы можете сами заняться тюнингом mysql. В общем случае, достаточно будет текущих настроек.

    # systemctl restart mariadb # systemctl status mariadb.service

    Сервер баз данных mysql для нашего zabbix сервера готов. На этом предварительные настройки сервера закончены. Приступаем к установке.

    Установка сервера Zabbix 4.0 в CentOS

    Для того, чтобы установить Zabbix Server 4.0 нужно подключить репозиторий актуальной версии.

    # rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm Retrieving https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm warning: /var/tmp/rpm-tmp.fCWryx: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY Preparing... ################################# Updating / installing... 1:zabbix-release-4.0-1.el7 #################################

    Устанавливаем сам сервер заббикса.

    # yum install zabbix-server-mysql zabbix-web-mysql

    В зависимостях пакетов будет httpd, который нам не нужен, так как у нас будет nginx и php7.1, но я не разбирался, как поставить без него. После установки пакетов, создадим базу данных, пользователя zabbix и заполним базу.

    # mysql -uroot -p Enter password: > create database zabbix character set utf8 collate utf8_bin; > grant all privileges on zabbix.* to zabbix@localhost identified by "zabpassword"; exit # zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

    Этих минимальных настроек достаточно, для работы сервера. Я рекомендую увеличивать параметр Timeout , так как он отвечает за время ожидания ответа от агента, snmp устройства или внешней проверки. Иногда стандартного значения в 4 секунды бывает недостаточно. В частности, когда используется какой-то скрипт, который долго выполняется для получения метрики. Поставьте секунд 10.

    Проверяем лог файл на наличие ошибок.

    # cat /var/log/zabbix/zabbix_server.log

    Настройка SELinux с zabbix

    Если у вас включен SELinux, получите ошибку.

    Cannot start preprocessing service: Cannot bind socket to "/var/run/zabbix/zabbix_server_preprocessing.sock": Permission denied.

    Это нормально, сейчас настроим SELinux для нормальной работы Zabbix. Для этого устанавливаем пакет policycoreutils-python, скачиваем готовый модуль для SELinux и применяем его.

    # yum install policycoreutils-python # cd ~ # curl https://support.zabbix.com/secure/attachment/53320/zabbix_server_add.te > zabbix_server_add.te # checkmodule -M -m -o zabbix_server_add.mod zabbix_server_add.te # semodule_package -m zabbix_server_add.mod -o zabbix_server_add.pp # semodule -i zabbix_server_add.pp

    Теперь нам надо перезапустить zabbix-server.

    # systemctl restart zabbix-server

    Если у вас это не получится сделать через systemctl, значит служба зависла. Завершаем ее принудительно и запускаем снова.

    # kill -9 `pidof zabbix_server` # systemctl start zabbix-server

    Снова проверяйте log файл. Теперь ошибок быть не должно. Как я уже сказал, если у вас отключен SELinux, то делать описанные выше манипуляции с модулем не надо.

    С серверной частью закончили. Нам нужно сделать конфиг nginx для работы web интерфейса zabbix. Если у вас nginx работает на том же сервере, где сам zabbix, и других виртуальных хостов нет и не будет, то правьте сразу дефолтный — /etc/nginx/conf.d/default.conf

    # mcedit /etc/nginx/conf.d/default.conf server { listen 80; server_name localhost; root /usr/share/zabbix; location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param PHP_VALUE " max_execution_time = 300 memory_limit = 128M post_max_size = 16M upload_max_filesize = 2M max_input_time = 300 date.timezone = Europe/Moscow always_populate_raw_post_data = -1 "; fastcgi_buffers 8 256k; fastcgi_buffer_size 128k; fastcgi_intercept_errors on; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } }

    Маленький, но важный нюанс. Нам надо изменить права доступа на некоторые папки. Назначить владельца nginx.

    # chown -R nginx:nginx /var/lib/php/session # chown -R nginx:nginx /etc/zabbix/web

    Этот шаг нужно будет проделывать после каждого обновления php или zabbix. Связано с тем, что по-умолчанию zabbix идет в комплекте с apache и рассчитан на работу с ним. Поэтому после установки или обновления, он делает его владельцем директории /etc/zabbix/web .

    Даем разрешения SELinux для работы заббикса с web сервером и базой данных.

    # setsebool -P httpd_can_connect_zabbix on # setsebool -P httpd_can_network_connect_db on

    Я не знаю, насколько последняя настройка актуальна, если подключение к БД локальное. У разработчиков в инструкции сказано, что в случае с postgresql даже если подключаетесь через 127.0.0.1, разрешение выдавать нужно. Насчет mysql нет комментариев.

    С серверной частью закончили. Для продолжения установки zabbix сервера переходим к .

    Установка сервера Zabbix 4.0 в Ubuntu, Debian

    С установкой Zabbix на сервер с Ubuntu или Debian попроще, так как в стандартных репозиториях посвежее версии софта, можно использовать их. Подключаем репозитории zabbix 4.0.

    # wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+bionic_all.deb # dpkg -i zabbix-release_4.0-2+bionic_all.deb

    # wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-2+stretch_all.deb # dpkg -i zabbix-release_4.0-2+stretch_all.deb

    Если у вас другие версии систем, то простой найдите ссылки пакетов под свою версию в официальном репозитории - https://repo.zabbix.com/zabbix/4.0/ Дальнейшая установка не будет отличаться от текущей.

    Обновляем информацию о репозиториях, а заодно и последние обновления поставим:

    # apt update && apt upgrade

    Устанавливаем zabbix сервер:

    # apt install zabbix-server-mysql zabbix-frontend-php

    Он по-умолчанию ставится с apache, который сразу же запускается. Остановим его и отключим:

    # systemctl stop apache2 # systemctl disable apache2

    Ставим отдельно nginx и php-fpm:

    # apt install nginx php-fpm

    Запускаем скрипт начальной конфигурации mysql и задаем пароль для root. Все остальное можно оставить по-умолчанию.

    # /usr/bin/mysql_secure_installation

    Отредактируем некоторые параметры Mariadb в конфиге /etc/mysql/mariadb.conf.d/50-server.cnf . Добавляем туда в секцию :

    # mcedit /etc/mysql/mariadb.conf.d/50-server.cnf innodb_file_per_table=1 innodb_buffer_pool_size = 768M # внимание на параметр! установить примерно в 2 раза меньше объема оперативной памяти сервера innodb_buffer_pool_instances=1 # увеличивать на 1 каждый GB innodb_buffer_pool_size innodb_flush_log_at_trx_commit = 0 innodb_log_file_size = 512M innodb_log_files_in_group = 3

    Перезапустите mariadb и убедитесь, что она запустилась.

    # systemctl restart mariadb # netstat -tulnp | grep mysqld tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 16753/mysqld

    Cоздадим базу данных, пользователя zabbix, и заполним базу.

    # mysql -uroot -p Enter password: > create database zabbix character set utf8 collate utf8_bin; > grant all privileges on zabbix.* to zabbix@localhost identified by "zabpassword"; exit # zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

    Теперь редактируем файл конфигурации сервера заббикс. Прописываем данные для подключения к БД, отключаем ipv6 и увеличиваем стандартный timeout.

    # mcedit /etc/zabbix/zabbix_server.conf

    Изменяем указанные строки, остальные не трогаем:

    DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabpassword ListenIP=0.0.0.0 Timeout=10

    Этих минимальных настроек достаточно, для работы сервера. Я рекомендую увеличивать параметр Timeout, так как он отвечает за время ожидания ответа от агента, snmp устройства или внешней проверки. Иногда стандартного значения в 4 секунды бывает недостаточно. В частности, когда используется какой-то скрипт, который долго выполняется, для получения метрики. Поставьте секунд 10.

    Запускаем zabbix и добавляем в автозагрузку.

    # systemctl start zabbix-server # systemctl enable zabbix-server

    Проверяем запустился ли.

    # netstat -tulnp | grep zabbix_server tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 16847/zabbix_server

    Все в порядке. Запускаем nginx, который у нас будет выступать в качестве web сервера.

    # systemctl start nginx # systemctl enable nginx

    Убедимся, что в качестве web сервера работает nginx.

    # netstat -tulnp | grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 17075/nginx: master tcp6 0 0:::80:::* LISTEN 17075/nginx: master

    Нам нужно сделать конфиг nginx для работы web интерфейса zabbix. Если у вас nginx работает на том же сервере, где сам zabbix, и других виртуальных хостов нет и не будет, то правьте сразу дефолтный - /etc/nginx/sites-available/default . Приводим его к следующему виду:

    # mcedit /etc/nginx/sites-available/default server { listen 80; server_name localhost; root /usr/share/zabbix; location / { index index.php index.html index.htm; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock ; # проверьте этот путь, для разных версий php он будет разный fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param PHP_VALUE " max_execution_time = 300 memory_limit = 128M post_max_size = 16M upload_max_filesize = 2M max_input_time = 300 date.timezone = Europe/Moscow always_populate_raw_post_data = -1 "; fastcgi_buffers 8 256k; fastcgi_buffer_size 128k; fastcgi_intercept_errors on; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } }

    Проверим конфиг на ошибки и если все в порядке, перезапустим nginx.

    # nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # nginx -s reload

    С серверной частью закончили. Для продолжения установки zabbix сервера переходим к настройке Zabbix Frontend.

    Настройка Zabbix Frontend

    Идем в браузер и открываем адрес http://192.168.13.117. Вы должны увидеть установщик Zabbix 4.0.

    Нажимаем Next step и начинаем настройку web интерфейса. На следующей странице будет проверка требований. У вас должны быть выполнены все требования. В зависимости от системы и версии php, информация будет в каждом случае разниться.

    На следующем этапе указываем параметры доступа к базе данных, потом Zabbix server details. Там можно ничего не указывать, а оставить дефолтные параметры. Потом будет страница с проверкой введенных данных. Если все в порядке, то заканчивайте установку. В конце увидите сообщение: Congratulations! You have successfully installed Zabbix frontend.

    После нажатия на Finish увидите окно авторизации Zabbix сервера.

    Стандартная учетная запись для входа в web интерфейс zabbix следующая:

    • Пользователь Admin
    • Пароль zabbix

    После логина увидите стандартный dashboard.

    На этом установка бесплатного сервера мониторинга zabbix окончена. Можно приступать к настройке.

    Настройка Zabbix Server

    Создание учетной записи и смена пароля

    Первое, что нужно сделать — сменить стандартные учетные данные для входа. Можно просто поменять пароль пользователя admin, но лучше создать новую учетную запись с правами суперпользователя, а админа удалить. Для этого идем в раздел Administration -> Users и нажимаем Create User .

    Заполняем все необходимые поля. Можно выбрать русский язык. Обычно я стараюсь работать в английском, но в случае с заббиксом можно сделать исключение. Он очень качественно локализован и проблем не возникает. Не забудьте зайти во вкладку Permissions и выбрать User type — Zabbix Super Admin.

    Теперь можно зайти под новым пользователем, а Admin удалить. Но система не даст его удалить, так как он является владельцем некоторых объектов:

    • карты сети — Local Network
    • комплексного экрана Zabbix server
    • панелей Global view и Zabbix server health

    Они создаются автоматически при установке заббикса. Вам нужно сменить у них владельца на нового пользователя. После этого стандартного админа можно будет удалить.

    Настройка email оповещений

    Дальше нужно настроить очень важную часть системы мониторинга — уведомления на email. Без нее система мониторинга не выглядит целостной и полноценной. Zabbix сервер поддерживает отправку почты через сторонние smtp серверы. Настроим один из них. Для этого идем в раздел Администрирование -> Способы оповещений и нажимаем на Email .

    Покажу на примере настроек ящика в Яндексе.

    Это мы настроили адрес отправки. Теперь нужно пользователю добавить адрес для получения оповещений. Для этого идем в Администрирование -> Пользователи , выбираем своего пользователя. Идем во вкладку Оповещения и жмем Добавить . Добавляйте свой ящик и нажимайте Обновить .

    Зайдите еще раз в учетную запись и убедитесь, что ящик добавили.

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

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

    Мне мой вид кажется более наглядным. Шаблон меняет на следующий:

    {HOST.NAME} - {TRIGGER.STATUS}: {TRIGGER.NAME}

    Он одинаковый и для проблемы, и для восстановления.

    Изменение стандартных шаблонов мониторинга

    На своих серверах мониторинга я изменяю некоторые параметры стандартных шаблонов, чтобы было меньше бесполезных и неинформативных срабатываний. Вот список того, что я делаю.

    1. В шаблоне Template App Zabbix Agent отключаю триггер Version of zabbix_agent(d) was changed on {HOST.NAME} . Если его оставить, то после каждого обновления zabbix агента вы будете получать уведомление. Лично мне эта информация не нужна.
    2. В шаблоне Template OS Linux меняю в триггере Disk I/O is overloaded on {HOST.NAME} значение со стандартных 20% до 50%. Я считаю, что начинать беспокоиться и смотреть на машину надо при этом значении. Но вы можете подобрать под свои нужды.
    3. В этом же шаблоне в правиле обнаружения Mounted filesystem discovery добавляю еще один прототип триггера, скопировав Free disk space is less than 20% on volume {#FSNAME} . Новый шаблон полностью идентичен скопированному, только вместо 20% указываю 5% и ставлю важность с «Предупреждение» на «Высокая». Я добавляю еще одно оповещение, если свободного места на дисках остается меньше 5%. Стандартные 20% очень высокий порог, особенно если большой диск. Оперативное решение проблемы не требуется. Из-за этого часто откладываешь чистку диска на потом и забываешь о ней. Теперь будет еще один страховочный триггер, после которого точно надо идти и прямо сейчас разбираться с местом. В триггере на 20% свободного места ставлю разрешение на закрытие триггера вручную.
    4. В этом же шаблоне в триггере Lack of free swap space on {HOST.NAME} меняю порог срабатывания с 50% до 20%, либо вообще отключаю его. Сейчас много серверов работают без swap. Хотя лично я всегда его создаю и подключаю.
    5. В шаблоне Template OS Windows отключаю Правило обнаружения Windows service discovery . В дефолтном варианте оно генерирует очень много ненужных итемов и оповещений. Если нужен мониторинг какой-то службы windows, я делаю для этого отдельный шаблон.

    Общие настройки

    В общих настройках zabbix server, которые располагаются в разделе Администрирование -> Общие я меняю следующие параметры:

    1. В разделе Рабочее время выставляю актуальные рабочие часы.
    2. В разделе Опции отображения триггеров меняю значения Отображать триггеры в состоянии ОК в течении и Мигание триггеров при изменении состояния на 1 минуту. Это просто мои предпочтения. Мне не нравится, когда триггеры долго мигают, либо висят уже закрытые.
    3. В разделе Прочее меняю Обновление неподдерживаемых элементов данных на 1 минуту. Это актуально во время отладки новых шаблонов.

    Установка Zabbix Agent на Linux

    Если вы хотите установить zabbix-agent на сам сервер мониторинга, то ничего делать не надо, кроме самой установки. Для других систем необходимо подключить репозитории заббикса, которые мы использовали во время установки сервера. Можете посмотреть их в соответствующих разделах для своей системы.

    Установка zabbix agent в Centos:

    # yum install zabbix-agent

    Тоже самое в Ubuntu/Debian:

    # apt install zabbix-agent

    Для работы с сервером, который установлен локально на этой же машине, больше никаких настроек не надо делать. Если же вы будете устанавливать zabbix agent на другую машину, то в файле конфигурации агента /etc/zabbix/zabbix_agentd.conf нужно будет задать следующие параметры:

    # mcedit /etc/zabbix/zabbix_agentd.conf Server=192.168.13.117 ServerActive=192.168.13.117 Hostname=srv10 # имя вашего узла мониторинга, которое будет указано на сервере zabbix, Zabbix server если это сам сервер заббикса

    Запускаем агент и добавляем в автозагрузку:

    # systemctl start zabbix-agent # systemctl enable zabbix-agent

    Проверяем лог файл.

    # cat /var/log/zabbix/zabbix_agentd.log 14154:20181004:201307.800 Starting Zabbix Agent . Zabbix 4.0.0 (revision 85308). 14154:20181004:201307.800 **** Enabled features **** 14154:20181004:201307.800 IPv6 support: YES 14154:20181004:201307.800 TLS support: YES 14154:20181004:201307.800 ************************** 14154:20181004:201307.800 using configuration file: /etc/zabbix/zabbix_agentd.conf 14154:20181004:201307.800 agent #0 started 14157:20181004:201307.801 agent #3 started 14159:20181004:201307.802 agent #5 started 14155:20181004:201307.804 agent #1 started 14158:20181004:201307.806 agent #4 started 14156:20181004:201307.810 agent #2 started

    Все в порядке. Идем в веб интерфейс и проверяем поступление данных. Для этого идем в раздел Мониторинг -> Последние данные . Указываем в разделе Узлы сети Zabbix Server и ждем поступления первых данных. Они должны пойти через 2-3 минуты после запуска агента.

    Теперь попробуем остановить агент и проверить, придет ли уведомление на почту. Идем в консоль и выключаем агента:

    # systemctl stop zabbix-agent

    Ждем минимум 5 минут. Именно такой интервал указан по-умолчанию для срабатывания триггера на недоступность агента. После этого проверяем главную панель, виджет Проблемы .