Введение
В своей инструкции по установке и настройке zabbix я вообще не затрагиваю вопрос базы данных mysql или производительности сервера в целом. Я просто беру дефолтные настройки mariadb, которые идут с установкой и использую их. Когда у вас не очень большая инфраструктура на мониторинге этого вполне достаточно, чтобы нормально пользоваться системой.
Если вы активно используете zabbix и внедряете его повсеместно во все используемые системы (а я рекомендую так делать), то вы рано или поздно столкнетесь с вопросом производительности системы мониторинга и размера базы данных zabbix.
Тема производительности zabbix очень индивидуальная. Она напрямую зависит от того, как вы его используете, а схемы мониторинга могут быть очень разные. Одно дело мониторить несколько серверов, а другое дело нагруженные свичи на 48 портов со съемом метрик с каждого порта раз в 30 секунд.
Чтобы помочь вам разобраться в этой теме и прикинуть, к чему готовиться, я поделюсь с вами своим опытом эксплуатации заббикса, его нагрузки, производительности и обслуживания базы данных mysql. Расскажу, как можно уменьшить размер базы.
Введение
Кратко о системе мониторинга Zabbix я уже писал в предыдущей своей статье по установке zabbix 2.4, поэтому не буду повторяться. О наиболее важны изменениях я тоже уже рассказывал в материале по обновлению zabbix 2.4 до 3.0, можно ознакомиться. Добавлю новую информацию. Я уже обновил несколько серверов мониторинга до последней версии. В плане функциональности у меня нет претензий, все работает как минимум не хуже чем раньше, но новые возможности я пока не использовал.
А вот внешний вид двух предложенных тем лично мне не нравится. Старая кажется более гармоничной и наглядной. Это сдерживает меня от обновления всех систем на новую версию. Ну не нравятся мне новые темы, не хочу на них смотреть. Я дольше и труднее воспринимаю информацию в них. Скорее всего это мое субъективное мнение, всегда трудно привыкать к новым вещам. Так что предлагаю не ориентироваться на мои впечатления, а ставить новую версию и смотреть.
Было бы любопытно услышать вашу версию того, насколько стали удобнее и приятнее новые темы оформления, по сравнению со старой. Есть еще такие же ретрограды и консерваторы, как я?
Введение
Я уже много раз рассказывал и описывал современную, бесплатную, популярную систему мониторинга zabbix. Повторяться в очередной раз не хочется. Для тех, кто впервые попал на мой сайт и не знаком с предыдущими материалами, поделюсь некоторыми ссылками на статьи.
Небольшое описание самой системы можно увидеть в материалах, касающихся установки предыдущих версий — 2.4 и 3.0. Информацию об изменениях в разных версиях можно посмотреть в материалах по обновлению — 2.4 -> 3.0, 3.0 -> 3.2.
Несмотря на то, что новые версии zabbix выходят достаточно часто, материалы по настройке мониторинга различных систем и сервисов не устаревают и остаются актуальным для самых новых релизов:
- Установка и настройка zabbix прокси на CentOS 7
- Мониторинг размера бэкапа
- Мониторинг значений из текстового файла
- Мониторинг времени делегирования домена
- Мониторинг Synology
- Мониторинг бэкапов
- Мониторинг транков (trunk) в asterisk
- Мониторинг программного рейда mdadm
- Мониторинг доступности службы linux
- Мониторинг MySQL репликации
- Мониторинг web сайта
- Мониторинг web сервера nginx и php-fpm
- Настройка мониторинга температуры
Команда заббикс внимательно следит за обратной совместимостью своих продуктов. Благодаря этому переход на новые версии происходит безболезненно. Нет необходимости перенастраивать или исправлять старые наработки. В новых версиях только добавляется функционал, старый чаще всего не претерпевает изменений, им можно дальше пользоваться. Приступим к установке последней версии zabbix 3.2.
Linux
Zabbix SIA поставляет официальные RPM и DEB пакеты для Red Hat Enterprise Linux, Debian и Ubuntu LTS. Файлы пакетов доступны по адресу http://repo.zabbix.com. Репозитории yum и apt также доступны на сервере.
Для CentOS 6.7:rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
yum install zabbix-agent
cd /etc/zabbix/
cp zabbix_agentd.conf zabbix_agentd.conf.orig
Редактируем zabbix_agentd.conf:
- Server=zabbix.example.net # IP addresses (or hostnames) of Zabbix servers
-
!!! Hostname=cz394 # Должно совпадать с Host name указанном на Zabbix servers. Используйте Visible name (на Zabbix server) для написания удобочитаемых названий ваших серверов.
- ServerActive=zabbix.example.net # IP:port (or hostname:port) pairs of Zabbix servers for active checks
Стартуем агента/etc/init.d/zabbix-agent start
Zabbix 3.0 for Debian 8:wget http://repo.zabbix.com/zabbix/3.0/debian/pool/main/z/zabbix-release/
zabbix-release_3.0-1+jessie_all.deb
dpkg -i zabbix-release_3.0-1+jessie_all.deb
aptitude update
aptitude install zabbix-agent
FreeBSD
zabbix-agent-1.6.5
> cd /usr/ports/net-mgmt/zabbix-agent > make install clean > echo 'zabbix_agentd_enable="YES"' >> /etc/rc.conf > cd /usr/local/etc/zabbix > cp zabbix_agentd.conf.sample zabbix_agentd.conf > touch /var/log/zabbix_agentd.log > chown zabbix:zabbix /var/log/zabbix_agentd.log > ee zabbix_agentd.conf #Изменяем параметры ... Server=127.0.0.1 Hostname=localhost DisableActive=1 StartAgents=5 LogFile=/var/log/zabbix_agentd.log ... > /usr/local/etc/rc.d/zabbix_agentd start Starting zabbix_agentd. > tail -F /var/log/zabbix_agentd.log 11361:20090821:145209 zabbix_agentd started. ZABBIX 1.6.5 (revision 7442).
Zabbix на FreeBSD Установка и базовая настройка
Zabbix на FreeBSD Установка и базовая настройкаПодразумеваться что у нас есть готовый веб-сервер , если нет тогда сюда начнем-с # pkg install zabbix22-server
Теперь создадим БД
CREATE DATABASE zabbix CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY’zabbix’;
exit;
Теперь импортируем базы Zabbix
# cat /usr/local/share/zabbix22/server/database/mysql/schema.sql | mysql -u root -p zabbix
# cat /usr/local/share/zabbix22/server/database/mysql/images.sql | mysql -u root -p zabbix
# cat /usr/local/share/zabbix22/server/database/mysql/data.sql | mysql -u root -p zabbix
Каждый раз надо будет вводить пароль от рута MySQL.
Второй вариант
cd /usr/local/share/zabbix22/server/database/mysql/
и импортировать все три
cat data.sql images.sql schema.sql | mysql -u root -p zabbix
Но вот лично у меня часто так вылетают ошибки.
И третий вариант – PhpMyAdmin
ну как по мне, то проще выполнить 3 команды чем ломиться в браузер, там логинится, искать что-то бррр =)
правим в конфиг сервера Zabbix
Для начала копируем
# cp /usr/local/etc/zabbix22/zabbix_server.conf.sample /usr/local/etc/zabbix22/zabbix_server.conf
Теперь правим (если накосячим и не поймем как и где – повторим операцию копирования)
# nano /usr/local/etc/zabbix22/zabbix_server.conf
ListenPort=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
# echo ‘zabbix_server_enable=”YES”’ >> /etc/rc.conf
# service zabbix_server start
Теперь установим веб-морду: (веб-интерфейс)
# pkg install zabbix22-frontend-2.2.8
Конфигурируем Апач
Добавляем Альяс
# nano /usr/local/etc/apache24/httpd.conf
Alias /zabbix “/usr/local/www/zabbix22/”
Options None
AllowOverride None
Require all granted
Редактируем PHP
date.timezone = Europe/Moscow
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
# service apache24 restart
Все заходим на
http://192.168.8.152/zabbix/
Видим
Исталлим – там все понятно.
Если будет ошибка при создании файла конфига
Configuration file“/usr/local/www/zabbix22/conf/zabbix.conf.php”created: Fail
то
# chmod -R 666 /usr/local/www/zabbix22/conf/
И нажмаем “RETRY”
Логинимся Admin zabbix
на напоследок поставим агента на наш сервер
# pkg install zabbix22-agent
и скопируем конфиг
# cp /usr/local/etc/zabbix22/zabbix_agentd.conf.sample /usr/local/etc/zabbix22/zabbix_agentd.conf
# echo ‘zabbix_agentd_enable=”YES”’>> /etc/rc.conf
# service zabbix_agentd start
Агенты на других сервера настраиваются похоже. На windowse конфиг аналогичный
Подробнее вы всегда сможите почитать на сайте Zabbix. Если будут вопросы я допишу настройку установку агента и минимальную настройка на Windows. Лично у особых вопрос не было
Далее через веб интерфейс заходим в узлы сети и там разберетесь
В целом – Zabbix это очень мощный комбайн для мониторинга почти всего. Интерфейс понятен. Я в большинстве случаев даже справку не читал. Да и информации на официальном сайте предостаточно.
На закуску могу дать пару советов
1 если у вас в комании SMPT сервер требует авторизацию то есть 2 ваиранта
– есть второй и очень простой метод – на FreeBSD – SMTP стоит по умолчанию – sendmail. если вы его не удаляли
2 СМС через модем настраивать в первый месяц работы и во время развертывания не рекомендую – разоритесь.
(Поймите вашей компании, если у нее не ИТ профиль, системы мониторинга нафиг не нужны им нужно что бы инфраструктура работала, это ВАШ инструмент) Вот когда поймете где и как идет срадотки, научитесь граммотно настраивать тригера тогда вперед.
Да,если честно, при наличае смартфона даже в Украине с ее EDGE СМС не нужны. Не говоря уже о России или Белоруссии где 3G уже устаревший считаеться и инет есть в туннеле метро.
3 За Zabbix не надо следить, надо 1 раз все настроить и он сам будет вас оповещать как звуковым сигналом так и по почте
Подготовка сервера к установке
Начинаем традиционно с подготовки рабочего окружения. Первым делом вам необходимо установить и настроить сервер CentOS 7. Дальше нам нужно настроить web сервер для работы интерфейса управления. У меня есть подробный материал на тему настройки web сервера на centos 7, можете ознакомиться с ним и настроить внимательно и осмысленно. Далее я буду просто приводить команды установки, без пояснений. В этой статье я буду делать стандартную установку Zabbix на традиционный веб сервер apache + php. Если вы хотите, чтобы ваш заббикс работал на веб сервере nginx + php-fpm, читайте отдельный материал по установке zabbix на nginx и php-fpm.
# yum -y update
Отключаем SElinux. Любителям с ним повозиться, дальше можно не читать. Не люблю споров на тему SElinux. Каждый сам решает для себя в конкретной ситуации, нужен он ему на сервере или нет. Я не вижу смысла с ним заморачиваться на сервере мониторинга в локальной сети.
# mcedit /etc/sysconfig/selinux
Редактируем строку:
SELINUX=disabled
и перезагружаемся.
Теперь установим mariadb. Ее необходимо ставить отдельно, почему-то она не устанавливается как необходимая зависимость при установке самого сервере zabbix.
На всякий случай упомяну для тех, кто не знает, что такое mariadb и почему мы ставим ее, а не mysql. Mariadb — ответвление mysql. Они полностью совместимы, возможен в любой момент переход с одной субд на другую и обратно. Есть информация, что mariadb пошустрее работает mysql и люди потихоньку перебираются на нее. Разработчики CentOS начиная с версии 7 предлагают ее как сервер баз данных по-умолчанию.
# yum install -y mariadb mariadb-server
Запускаем mariadb и добавляем ее в автозагрузку:
# systemctl start mariadb # systemctl enable mariadb.service
Отрабатываем скрипт первоначальной настройки mysql:
# /usr/bin/mysql_secure_installation
Все подготовительные работы выполнены, двигаемся дальше.
Установка обновления zabbix 5.0 до 5.2
Centos 7, 8
Для начала проверим список установленных пакетов zabbix в системе. Их название может быть разным в зависимости от используемых репозиториев. К примеру, в centos 7 у пакетов может быть дополнение в виде scl к названию пакета.
Centos 7:
# rpm -qa | grep zabbix zabbix-web-5.0.5-1.el7.noarch zabbix-web-mysql-scl-5.0.5-1.el7.noarch zabbix-agent-5.0.5-1.el7.x86_64 zabbix-web-deps-scl-5.0.5-1.el7.noarch zabbix-apache-conf-scl-5.0.5-1.el7.noarch zabbix-release-5.2-1.el7.noarch zabbix-server-mysql-5.0.5-1.el7.x86_64
Centos 8:
# rpm -qa | grep zabbix zabbix-server-mysql-5.0.5-1.el8.x86_64 zabbix-web-5.0.5-1.el8.noarch zabbix-web-mysql-5.0.5-1.el8.noarch zabbix-web-deps-5.0.5-1.el8.x86_64 zabbix-release-5.0-1.el8.noarch zabbix-agent-5.0.5-1.el8.x86_64
Устанавливаем обновление zabbix на сервер Centos 8, выбирая установленные у вас пакеты:
# yum upgrade zabbix-web zabbix-web-mysql zabbix-server-mysql zabbix-agent
Для centos 7 будет такой список:
# yum upgrade zabbix-web zabbix-web-mysql-scl zabbix-agent zabbix-server-mysql
Обращаю внимание, что на момент написания данной статья, пакетов 5.2 для Centos 7 в репозиториях нет. В официальных инструкциях их тоже нет и не понятно, будут ли
Как только появятся, я дополню статью.
После завершения обновления, запускаем zabbix-server.
# systemctl start zabbix-server
Проверяем лог сервера. Необходимо дождаться обновления базы данных
Важно не трогать в этот момент сервер, не прерывать обновление, не пытаться его перезапустить. Если база большая, обновление может длиться очень долго
Рекомендую сначала где-то протестировать этот процесс, прежде чем обновлять прод.
# tail -f /var/log/zabbix/zabbix_server.log
В конце должны получить сообщение:
2860543:20201029:173036.441 completed 100% of database upgrade 2860543:20201029:173036.441 database upgrade fully completed
Есть ненулевой шанс, что будет какая-то ошибка с базой. Чаще всего возникают проблемы с какой-то нестандартной записью в таблице. Туда может попасть какой-то необычный символ, или с кодировкой проблемы. В этих случаях удаляйте проблемные записи, меняйте кодировку базы zabbix.
После обновления переходите в web интерфейс и проверяйте версию Zabbix. Должна быть 5.2.
На этом обновления Zabbix до 5.2 на Centos завершено.
Debian / Ubuntu
Устанавливаем само обновление zabbix на сервер с Debian или Ubuntu следующей командой:
# apt upgrade zabbix-agent zabbix-frontend-php zabbix-nginx-conf zabbix-server-mysql
После завершения обновления, запускаем сервер:
# systemctl start zabbix-server
В момент запуска произойдет обновление базы данных. Для маленькой базы (1-2 гб) это не займет много времени. Вы можете даже не заметить процесса. Если база больше, то надо подождать, пока не закончится обновление. Следить за ним можно с помощью просмотра лог файла zabbix сервера.
# tail -f /var/log/zabbix/zabbix_server.log
После завершения обновления базы, сервер запустится. После этого можно запустить и агент.
# systemctl start zabbix-agent
В логах агента и сервера можно посмотреть версию запущенных сервисов.
Starting Zabbix Agent . Zabbix 5.2.0 (revision bcf99fb248). Starting Zabbix Server. Zabbix 5.2.0 (revision bcf99fb248).
Теперь можно идти в веб интерфейс и смотреть на обновленную версию zabbix server. Перед этим почистите кэш браузера и удалите куки от страницы заббикса. Если этого не сделать, то могут быть проблемы и ошибки, с чем я не раз сталкивался. Если у вас в качестве веб сервера используется nginx, не забудьте поменять владельца директории /etc/zabbix/web на nginx, в том случае, если веб сервер работает от него. После обновления он будет принадлежать apache, а web интерфейс не заработает.
# chown -R nginx:nginx /etc/zabbix/web
Теперь можете лицезреть обновленную версию web интерфейса в браузере.
Что нового в Zabbix 5.2?
Все нововведения свежей версии Zabbix 5.2 вы можете прочитать в официальном релизе — https://www.zabbix.com/ru/release_notes. Я среди них выделил следующие:
- Появился новый тип элемента данных — script. С его помощью можно существенно расширить возможности мониторинга. Например, при наблюдении за микросервисами и приложениями. Отрадно видеть такие изменения. Явно видно, что Zabbix старается идти в ногу со временем.
- Комплексные экраны полностью заменяются дашбордами. Их теперь можно будет создавать в шаблонах (наконец-то). Существующие экраны будут трансформированы в дашборды автоматически.
- Появились новые функции триггеров для работы с историческими данными. В документации еще не вижу подробностей. На одном из скринов видел функцию trendavg. Надо ждать обновление доков с подробностями использования.
- Улучшили ролевую модель прав пользователей для гранулярного управления правами. Не понял, о чем речь, не разбирался еще. Думаю, просто более гибко можно настраивать права на объекты и элементы мониторинга.
- Появились готовые шаблоны для мониторинга Asterisk, DB Oracle, Ceph, Squid, Php-fpm. Многие костыли, которые я городил много лет для мониторинга всех этих программ, становятся не актуальными. Напоминаю, что чуть раньше появился шаблон для мониторинга mssql server.
- Появилась встроенная поддержка протокола modbus. Я как раз недавно настраивал подобное. Для этого требовалась компиляция и установка внешнего модуля. Теперь все работает из коробки.
- В качестве стандартного формата для шаблонов становится YAML вместо XML.
- Настройки языка и часового пояса вынесли наконец-то в веб интерфейс. Их можно глобально указать во время установки сервера или отдельно в настройках пользователя.
- Теперь хосты можно создавать вообще без указания интерфейса и адреса на нем. Раньше приходилось указывать какой-то несуществующий адрес, если у вас был чисто технический хост, например, с http агентом, который сам по себе может собирать данные.
Ну и много других более мелких изменений. Я пробежался глазами по release_notes и перевел то, что показалось наиболее интересным. Еще наконец-то починили баг в Latest Data с отображением списков.
В общем, Zabbix не стоит на месте, развивается. Свою нишу в мониторинге удерживает твердо. Если кто-то не читал мою статью про сравнение Zabbix vs Prometheus, можете ознакомиться. Описал своими словами отличия.
Так же рекомендую мою статью по установке и настройке Zabbix 5. Там я разбираю различные варианты установки, выполняю первоначальную настройку и делюсь своим опытом эксплуатации данной системы мониторинга.
Как спланировать нагрузку на Zabbix
Под небольшой структурой, упомянутой в начале, я подразумеваю 50-100 узлов (не сетевое оборудование с десятками портов) сети на мониторинге и примерно 2000-4000 активных элементов данных, которые записывают 20-40 новых значений в секунду. Под такую сеть вам будет достаточно небольшой виртуальной машины с 2 ядрами и 4 гб памяти. База данных на преимущественно стандартных шаблонах будет расти примерно на 2-4 Гб в год. Дальше еще меньше, так как будет автоматически очищаться.
Для мониторинга такой сети можно вообще не выполнять никаких дополнительных настроек. Мониторинг будет вполне нормально работать. Если же нагрузка начнет расти, то первое, с чем вы столкнетесь — это с размером и производительностью базы данных. База zabbix будет расти пропорционально подключению к ней хостов. И с этим придется что-то делать.
Для решения вопроса производительности нужно будет двигаться в двух направлениях:
- Очистка базы от ненужных данных.
- Увеличение производительности сервера mysql.
Каждый из указанных вопросов многогранен. Далее мы частично их рассмотрим и выполним наиболее простые, очевидные и результативные изменения.
Установка сервера Zabbix 3.2
Подключаем официальный репозиторий 3.2:
# yum install http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
Устанавливаем Zabbix сервер с веб-интерфейсом и с базой данных MySQL:
# yum install -y zabbix-server-mysql zabbix-web-mysql
Дожидаемся окончания загрузки всех зависимостей. После этого нужно создать пользователя и базу данных для мониторинга. Если вы ранее настраивали отдельно web сервер по моей статье, то можете сделать это через phpmyadmin. Если у вас его нет, то делаем все через консоль.
# mysql -uroot -ptopsecret > create database zabbix character set utf8 collate utf8_bin; > grant all privileges on zabbix.* to zabbix@localhost identified by 'zabpassword';
topsecret | пароль пользователя root mysql, это не системный root |
zabpassword | пароль пользователя zabbix, у которого полный доступ к базе mysql zabbix |
Теперь импортируем схему БД и начальные данные.
# zcat /usr/share/doc/zabbix-server-mysql-3.2.0/create.sql.gz | mysql -uroot -ptopsecret zabbix
Обращаю внимание на выделенный путь. Возможно, путь будет другой, когда вы будете устанавливать, так как выйдет новая версия
Имейте это ввиду.
Теперь редактируем файл конфигурации сервера заббикс. Прописываем данные для подключения к БД.
# mcedit /etc/zabbix/zabbix_server.conf
Изменяем строки:
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabpassword
Этих минимальных настроек достаточно, для работы сервера. Запускаем его и добавляем в автозагрузку.
# systemctl enable zabbix-server # systemctl start zabbix-server
Проверяем лог файл на наличие ошибок.
# cat /var/log/zabbix/zabbix_server.log
Если у вас так же, значит все в порядке. Сервер штатно запустился и готов к работе.
Для продолжения настройки сервера, нам нужно зайти в web интерфейс. Перед этим отредактируем файл конфигурации web сервера. Открываем конфиг и раскомментируем одну строку, изменив ее под свой часовой пояс.
# mcedit /etc/httpd/conf.d/zabbix.conf php_value date.timezone Europe/Moscow
Сохраняем файл. Теперь запускаем httpd и добавляем его в автозагрузку.
# systemctl start httpd # systemctl enable httpd
Можно заходить на веб интерфейс по адресу http://192.168.1.25/zabbix, где 192.168.1.25 ip адрес сервера, где устанавливаем и настраиваем мониторинг.
На этом этапе важно проверить настройки firewalld. Если вы его не настраивали и не отключали, то скорее всего по указанному адресу у вас ничего не откроется
В данной статье я не буду отвлекаться на настройку фаервола, это тема отдельного разговора. Подробно вопрос настройки iptables я рассмотрел отдельно. Либо настройте firewalld, либо просто отключите. В приведенной ссылке рассказано, как это сделать.
Открываем в браузере web интерфейс zabbix. Нас встречает страница приветствия. Если у вас то же самое, вы на верном пути.
Жмем Next step и попадаем на страницу проверок. Если все делали точно по инструкции, то все проверки у вас будут пройдены.
Двигаемся дальше и указываем параметры для подключения к mysql. Данные те же, что мы указывали ранее при создании БД и пользователя.
На следующем этапе надо указать адрес сервера и порт, на котором он будет работать. Оставляем значения по-умолчанию.
Еше раз проверяем все настройки. Если все в порядке, двигаемся дальше на заключительный этап установки.
Если получили это сообщение, то поздравляю, установка сервера мониторинга Zabbix 3.2 закончена.
Нажимаете Finishи попадаете на страницу логина в систему. Данные по умолчанию следующие:
Пользователь | Admin |
Пароль | zabbix |
Нас встречает голая панель управления, так как никаких параметров мы не наблюдаем и не имеем ни одного объекта сбора данных.
Сервер готов к работе. Сбор данных мы настроим чуть позже, установив zabbix агент на этот же сервер. А пока сделаем некоторые минимальные и необходимые настройки на сервере.