Введение
Кратко о системе мониторинга Zabbix я уже писал в предыдущих своих статьях по установке zabbix 2.4, 3.0, 3.2, поэтому не буду повторяться. О наиболее важных изменениях версии 3.4 я тоже уже рассказывал в материале по обновлению zabbix 3.2 до 3.4, можно ознакомиться.
По большому счету, в версии 3.4 принципиальных изменений в установке и настройке zabbix не произошло, можно пользоваться предыдущими инструкциями. Но для упрощения себе и остальным жизни, я все же напишу подробную инструкцию, где все ссылки будут актуальны, чтобы все можно было повторить в минимально короткий срок простым копипастом. Сам я часто устанавливаю систему мониторинга zabbix, так как считаю ее наиболее функциональной и удобной в использовании.
Приступим к установке и настройке последней версии zabbix 3.4.
Введение
В своей инструкции по установке и настройке zabbix я вообще не затрагиваю вопрос базы данных mysql или производительности сервера в целом. Я просто беру дефолтные настройки mariadb, которые идут с установкой и использую их. Когда у вас не очень большая инфраструктура на мониторинге этого вполне достаточно, чтобы нормально пользоваться системой.
Если вы активно используете zabbix и внедряете его повсеместно во все используемые системы (а я рекомендую так делать), то вы рано или поздно столкнетесь с вопросом производительности системы мониторинга и размера базы данных zabbix.
Тема производительности zabbix очень индивидуальная. Она напрямую зависит от того, как вы его используете, а схемы мониторинга могут быть очень разные. Одно дело мониторить несколько серверов, а другое дело нагруженные свичи на 48 портов со съемом метрик с каждого порта раз в 30 секунд.
Чтобы помочь вам разобраться в этой теме и прикинуть, к чему готовиться, я поделюсь с вами своим опытом эксплуатации заббикса, его нагрузки, производительности и обслуживания базы данных mysql. Расскажу, как можно уменьшить размер базы.
Сжатие и оптимизация таблиц InnoDB
Файлы ibdata1 и ib_log
Большинство проектов с таблицами InnoDB имеют проблемы с большими файлами ibdata1 и ib_log. В большинстве случаев это связано с неправильной конфигурацией MySQL/MariaDB или архитектурой БД. Вся информация из таблиц InnoDB хранится в файле ibdata1, пространство которого само не используется. Я предпочитаю хранить данные таблицы в отдельных файлах ibd*. Для этого добавьте в my.cnf следующую строку:
innodb_file_per_table
или
innodb_file_per_table = 1
Если ваш сервер настроен и у вас есть продуктивные базы данных с таблицами InnoDB, сделайте следующее:
- Сделайте резервную копию всех баз данных на вашем сервере (кроме mysql и performance_schema). Вы можете получить дамп базы данных с помощью этой команды:
- После создания резервной копии базы данных остановите сервер mysql/mariadb;
- Измените настройки в my.cfg;
- Удалите файлы ibdata1 и ib_log;
- Запустите демон mysql/mariadb;
- Восстановить все базы из резервной копии:
После этого все таблицы InnoDB будут храниться в отдельных файлах, и ibdata1 перестанет экспоненциально расти.
Сжатие таблиц InnoDB
Вы можете сжимать таблицы с текстовыми данными / данными BLOB и экономить довольно много места на диске.
У меня есть база данных innodb_test, содержащая таблицы, которые потенциально могут быть сжаты, и поэтому я могу освободить место на диске. Прежде чем что-либо делать, я рекомендую сделать резервную копию всех баз данных. Подключитесь к серверу mysql:
# mysql -u root -p
Выберите нужную базу данных в консоли mysql:
# use innodb_test;
Чтобы отобразить список таблиц и их размеры, используйте следующий запрос:
SELECT table_name AS "Table", ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size in (MB)" FROM information_schema.TABLES WHERE table_schema = "innodb_test" ORDER BY (data_length + index_length) DESC;
Где innodb_test — имя вашей базы данных.
Некоторые таблицы могут быть сжаты. Возьмем для примера таблицу b_crm_event_relations. Запустите этот запрос:
mysql> ALTER TABLE b_crm_event_relations ROW_FORMAT=COMPRESSED;
После его запуска вы можете увидеть, что размер таблицы уменьшился с 26 МБ до 11 МБ из-за сжатия.
Сжимая таблицы, вы можете сэкономить много дискового пространства на вашем хосте. Однако при работе со сжатыми таблицами нагрузка на процессор возрастает. Используйте сжатие для таблиц db, если у вас нет проблем с ресурсами процессора, но есть проблема с дисковым пространством.
Подготовка сервера к установке
Начинаем традиционно с подготовки рабочего окружения. Первым делом вам необходимо установить и настроить сервер CentOS 7. Дальше нам нужно настроить web сервер для работы интерфейса управления. У меня есть подробный материал на тему настройки web сервера на centos 7, можете ознакомиться с ним и настроить внимательно и осмысленно. Далее я буду просто приводить команды установки, без пояснений. В этой статье я буду делать стандартную установку Zabbix на традиционный веб сервер apache + php. Если вы хотите, чтобы ваш заббикс работал на веб сервере nginx + php-fpm, читайте отдельный материал по установке zabbix на nginx и php-fpm.
# yum update
Работа будет проходить на следующей версии CentOS:
Отключаем SElinux. Любителям с ним повозиться, дальше можно не читать. Не люблю споров на тему SElinux. Каждый сам решает для себя в конкретной ситуации, нужен он ему на сервере или нет. Я не вижу смысла с ним заморачиваться на сервере мониторинга в локальной сети.
# mcedit /etc/sysconfig/selinux
Редактируем строку:
SELINUX=disabled
и выполняем команду:
# setenforce 0
Теперь установим mariadb. Ее необходимо ставить отдельно, почему-то она не устанавливается как необходимая зависимость при установке самого сервере zabbix.
На всякий случай упомяну для тех, кто не знает, что такое mariadb и почему мы ставим ее, а не mysql. Mariadb — ответвление mysql. Они полностью совместимы, возможен в любой момент переход с одной субд на другую и обратно. Есть информация, что mariadb пошустрее работает mysql и люди потихоньку перебираются на нее. Разработчики CentOS начиная с версии 7 и Debian, начиная с 9-й предлагают ее как сервер баз данных по-умолчанию.
# yum install mariadb mariadb-server
Запускаем mariadb и добавляем ее в автозагрузку:
# systemctl start mariadb # systemctl enable mariadb.service
Отрабатываем скрипт первоначальной настройки mysql:
# /usr/bin/mysql_secure_installation
Все подготовительные работы выполнены, двигаемся дальше.
Установка и запуск службы zabbix
9. После того, как сохранили конфигурационный файл, открываем командную строку с административными правами. Для установки и запуска службы Zabbix agent в командной строке набираем:
«C:\Program Files\Zabbix_agent\bin\zabbix_agentd.exe» — config «C:\Program Files\Zabbix_agent\conf\zabbix_agentd.win.conf» — install
где:
C:\Program Files\Zabbix_agent\bin\zabbix_agentd.exe — путь до программы;
C:\Program Files\Zabbix_agent\conf\zabbix_agentd.win.conf — путь до конфигурационного файла.
После успешного применения команды появится вывод:
zabbix_agent.exe : service installed successfully
zabbix_agent.exe : event source installed successfully
Если командную строку запустить не с правами администратора, то получим ошибку:
zabbix_agentd.exe : ERROR: cannot connect to Service Manager: ….
Для запуска службы «Zabbix Agent» выполняем следующую команду:
net start «Zabbix agent»
После успешного выполнения команды в командной строке появится:
Служба «Zabbix Agent» успешно запущена.
Прописываем правила соединения в брандмауэре Защитника Windows
10. Для того, чтобы обеспечить передачу данных с клиента на сервер, необходимо разрешить zabbix агенту связываться с сервером. Пропишем необходимые правила для сетевого соединения в брандмауэре Windows. Открываем «Панель управления» далее «Брандмауэр Защитника Windows».
11. Далее выбираем «Дополнительные параметры».
12. В следующем окне выбираем «Правила для входящих подключений» — «Создать правило».
13. В открывшемся окне делаем выбор «Для программы», нажимаем «Далее».
14. Указываем с помощью кнопки «Обзор…» путь до программы, например %ProgramFiles%\Zabbix_agent\bin\zabbix_agentd.exe, нажимаем «Далее».
15. Выбираем «Разрешить подключение» — «Далее».
16. В новом окне задаем «Имя», например: «Zabbix_agent_in» — «Готово».
17. Затем открываем вновь созданное соединение Zabbix_agent_in, затем выбираем вкладку «Протоколы и порты»
Тип протокола: TCP
Специальные порты:
10050
Затем нажимаем «ОК».
Добавление узла сети на сервере Zabbix
18. Для добавления узла сети на сервере Zabbix заходим в веб-панель сервера с помощью логина и пароля, далее выбираем: «Настройка» — «Узлы сети» — «Создать узел сети».
19. В новом окне указываем:
Имя узла сети: например, Int
Группы: выбираем из списка с помощью кнопки «Выбрать» или пишем новое имя группы
Интерфейсы агента: задаем IP адреса клиента (в командной строке клиента надо набрать ipconfig /all)
20. Переходим на вкладку «Шаблоны», нажимаем «Выбрать» и из списка шаблонов, выбираем нужный, в данном случае «Template OS Windows», нажимаем «Выбрать».
21. Далее выбираем «Добавить» для присоединения выбранного шаблона, затем ниже нажимаем «Добавить» для добавления нового узла сети.
22. В списке появится новый узел сети, и через некоторое время узел сети станет зеленым. Это значит, что все настроено правильно и связь с клиентом установлена.
23. Если узел сети остается красным, то необходимо разбираться, в чем дело. Для этого наводим на значок в графе «Доступность» и читаем диагностическое объявление.
24. Далее переходим к клиенту и открываем лог файл zabbix агента (C:\Program Files\Zabbix_agent\conf\zabbix_agentd.win.conf).
Смотрим проблему, в данном случае:
failed to accept an incoming connection: connection from «192.168.11.49» rejected, allowed hosts: «192.168.20.158»
25. Для решения проблемы прописываем IP адрес клиента в конфигурационный файл zabbix агента:
Option: Server
Server=192.168.11.69, 192.168.20.158
26. Для применения измененных настроек перезапускаем службу Zabbix agent:
net stop «Zabbix agent»
net start «Zabbix agent»
27. Проверяем лог файл.
28. Если нет проблем, на сервере появится зеленый значок клиента.
Удаление zabbix агента
29. Для удаления zabbix агента, удаляем узел сети на сервере.
30. Останавливаем службу «Zabbix agent» на клиенте.
net stop «Zabbix Agent»
31. Удаляем папку с компонентами zabbix агента.
32. Удаляем правило для входящих подключений для zabbix агента.
Посмотреть видео как произвести установку, настройку и удаление zabbix агента можно здесь:
https://youtube.com/watch?v=uC14OHZSXUQ
Получение состояния репликации
Состояние репликации можно получить sql-командой:
> show slave status\G;
В ответ мы получим ряд параметров, из которых нам нужны 2:
- Slave_IO_Running — состояние работы получения бинарного лога с сервера Master. Если состояние будет NO, то репликация не работает.
- Slave_SQL_Running — статус выполнения команд из лога на сервере Slave. Если состояние будет NO, то репликация не работает.
На данном этапе мы напишем скрипт, с помощью которого мы будем подключаться к базе и вытаскивать данные параметры состояния репликации.
Для начала, подключаемся к командной оболочке SQL:
mysql -uroot -p
Создаем пользователя, от которого мы будем подключаться к базе и смотреть состояние репликации:
> GRANT REPLICATION CLIENT ON *.* TO ‘replmon’@’localhost’ IDENTIFIED BY ‘repl_password3’;
* данной командой мы создаем пользователя replmon с паролем repl_password3. У него будут права на получение статуса репликации для СУБД.
Выходим из командной оболочки mysql:
> \q
На сервере Slave создаем скрипт для получения статуса репликации:
vi /etc/zabbix/zabbix_agentd.d/repl_mon.sh
* путь до скрипта repl_mon.sh может быть любой. В данном примере мы разместили его в каталог агента заббикс — во-первых, для порядка, во-вторых, не будет проблем с SELinux (если он используется).
Содержимое скрипта:
#!/bin/bash
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
myuser=’replmon’
mypass=’repl_password3′
Slave_IO=`mysql -u${myuser} -p${mypass} —vertical -e «SHOW SLAVE STATUS» | grep «Slave_IO_Running» | cut -d»:» -f2 | tr -d » » 2>&1`
Slave_SQL=`mysql -u${myuser} -p${mypass} —vertical -e «SHOW SLAVE STATUS» | grep «Slave_SQL_Running» | cut -d»:» -f2 | tr -d » » 2>&1`
if
then
echo «0»
exit 0
fi
if
then
echo «0»
exit 0
fi
echo «1»
exit 0
* в данном скрипте мы подключаемся к базе и получаем статус репликации, после — мы парсим значения двух параметров (Slave_IO_Running и Slave_SQL_Running). Если значение этих параметров не равно Yes, скрипт вернет , иначе — 1. В Zabbix мы будем проверять значение и реагировать на значение .
Устанавливаем права на скрипт — разрешаем запуск на выполнение и задаем владельца zabbix:
chmod 770 /etc/zabbix/zabbix_agentd.d/repl_mon.sh
chown zabbix:zabbix /etc/zabbix/zabbix_agentd.d/repl_mon.sh
Можно проверить работу скрипта, запустив его:
/etc/zabbix/zabbix_agentd.d/repl_mon.sh
Установка сервера Zabbix 3.4
Подключаем официальный репозиторий 3.4:
# rpm -Uvh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
Устанавливаем Zabbix сервер с веб-интерфейсом и с базой данных MySQL:
# yum install 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 |
Выходим из консоли mysql, набирая exit.
Теперь импортируем схему БД и начальные данные.
# zcat /usr/share/doc/zabbix-server-mysql-3.4.*/create.sql.gz | mysql -uroot -ptopsecret zabbix
Обращаю внимание на выделенный путь. Если не сработает со звездочкой, то укажите правильный путь в соответствии с устанавливаемой в данный момент времени версией
Более подробную информацию о настройке сервера баз данных mysql для работы заббикс сервера, а так же информацию по оптимизации нагруженной базы данных смотрите в отдельной статье — очистка, оптимизация, настройка mysql базы Zabbix
Теперь редактируем файл конфигурации сервера заббикс. Прописываем данные для подключения к БД.
# mcedit /etc/zabbix/zabbix_server.conf
Изменяем строки:
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabpassword
Этих минимальных настроек достаточно, для работы сервера. Но я рекомендую еще увеличить параметр Timeout. Он отвечает за время ожидания ответа от агента, snmp устройства или внешней проверки. Иногда этого бывает недостаточно. В частности, когда используется какой-то скрипт, который долго выполняется, для получения метрики. Поставьте секунд 10.
Запускаем zabbix и добавляем в автозагрузку.
# systemctl start zabbix-server # systemctl enable 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.4 закончена.
Нажимаете Finish и попадаете на страницу логина в систему. Данные по умолчанию следующие:
Пользователь | Admin |
Пароль | zabbix |
Нас встречает голая панель управления, так как никаких параметров мы не наблюдаем и не имеем ни одного объекта сбора данных.
Сбор данных мы настроим чуть позже, установив zabbix агент на этот же сервер. А пока сделаем некоторые минимальные и необходимые настройки на сервере.
Дополнительные сведения
Мониторинг репликации master — master
При использовании двухсторонней репликации, мы должны мониторить slave на обоих серверах. Для этого настраиваем по шагам мониторинг для каждого из серверов.
innotop
Мониторинг MySQL/MariaDB также можно выполнить с помощью утилиты innotop. Она может показать состояние репликации, общее время работы сервера баз данных, количество подключений и так далее.
Пользоваться утилитой просто. Для начала ее нужно установить.
а) Если используем систему Red Hat / CentOS / Fedora:
yum install innotop
б) Если используем систему Debian / Ubuntu:
apt-get install mysql-client
Пример подключения к базе:
innotop -uroot -ppassword -h 192.168.0.15
* в данном примере мы подключимся к серверу 192.168.0.15.
Как спланировать нагрузку на Zabbix
Под небольшой структурой, упомянутой в начале, я подразумеваю 50-100 узлов (не сетевое оборудование с десятками портов) сети на мониторинге и примерно 2000-4000 активных элементов данных, которые записывают 20-40 новых значений в секунду. Под такую сеть вам будет достаточно небольшой виртуальной машины с 2 ядрами и 4 гб памяти. База данных на преимущественно стандартных шаблонах будет расти примерно на 2-4 Гб в год. Дальше еще меньше, так как будет автоматически очищаться.
Для мониторинга такой сети можно вообще не выполнять никаких дополнительных настроек. Мониторинг будет вполне нормально работать. Если же нагрузка начнет расти, то первое, с чем вы столкнетесь — это с размером и производительностью базы данных. База zabbix будет расти пропорционально подключению к ней хостов. И с этим придется что-то делать.
Для решения вопроса производительности нужно будет двигаться в двух направлениях:
- Очистка базы от ненужных данных.
- Увеличение производительности сервера mysql.
Каждый из указанных вопросов многогранен. Далее мы частично их рассмотрим и выполним наиболее простые, очевидные и результативные изменения.
Установка и настройка сервера Zabbix
Переходим к установке самого Zabbix сервера.
Установка
Сначала установим репозиторий последней версии Zabbix. Для этого переходим на страницу https://repo.zabbix.com/zabbix/ и переходим в раздел с самой последней версией пакета — затем переходим в ubuntu/pool/main/z/zabbix-release/ — копируем ссылку на последнюю версию релиза:
* в моем случае это ссылка на https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1+bionic_all.deb. Чтобы понять, какое кодовое название нашей системы, вводим команду cat /etc/lsb-release | grep DISTRIB_CODENAME.
Скачиваем файл репозитория командой:
wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.2-1%2Bbionic_all.deb
Устанавливаем его:
dpkg -i zabbix-release_4.2-1+bionic_all.deb
Обновляем списки пакетов:
apt-get update
Устанавливаем сервер, вводя команду:
apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-get
Настройка базы данных
Входим в оболочку ввода sql-команд:
mysql -uroot -p
Создаем базу данных:
> CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin;
* мы создали базу zabbix.
Создаем пользователя для подключения и работы с созданной базой:
> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY ‘zabbixpassword’;
* в данном примете мы создали пользователя zabbix с доступом к базе zabbix и паролем zabbixpassword.
Выходим из sql-оболочки:
> \q
В составе zabbix идет готовая схема для СУБД MySQL/MariaDB или postgreSQL. В нашем случае, нам нужен MySQL.
Для применения схемы переходим в каталог:
cd /usr/share/doc/zabbix-server-mysql/
Распаковываем архив с дампом базы:
gunzip create.sql.gz
Восстанавливаем базу их дампа:
mysql -v -u root -p zabbix < create.sql
* после ввода команды система запросит пароль. Необходимо ввести пароль, который мы задали после установки mariadb.
Настройка zabbix
Открываем конфигурационный файл zabbix:
vi /etc/zabbix/zabbix_server.conf
Добавляем строку:
DBPassword=zabbixpassword
* мы настраиваем портал на подключение к базе с паролем zabbixpassword, который задали при создании базы для zabbix.
И проверяем следующие строки:
…
DBName=zabbix
…
DBUser=zabbix
…
* имя базы и пользователя должны быть zabbix (как мы и создали в mariadb).
Создаем каталог для инклудов конфигурационных файлов (по какой-то причине, он может быть не создан при установке):
mkdir /etc/zabbix/zabbix_server.conf.d
Также создаем каталог для логов и задаем владельца:
mkdir /var/log/zabbix-server
chown zabbix:zabbix /var/log/zabbix-server
Запуск zabbix-server
Разрешаем автозапуск сервера мониторинга:
systemctl enable zabbix-server
После запускаем сам сервер zabbix:
systemctl start zabbix-server
Настройка nginx
При установке zabbix-web файлы портала копируются в каталог /usr/share/zabbix. Наш веб-сервер работает с каталогом /var/www/html.
Меняем это — открываем конфигурационный файл nginx:
vi /etc/nginx/sites-enabled/default
Редактируем параметры root и set $root_path:
…
root /usr/share/zabbix;
…
set $root_path /usr/share/zabbix;
…
Перезапускаем nginx:
systemctl restart nginx
Установка портала для управления Zabbix
В следующем окне внимательно смотрим на результаты проверки нашего веб-сервера — справа мы должны увидеть все OK. Если это не так, проверяем настройки и исправляем предупреждения и ошибки, после перезапускаем страницу F5 для повторной проверки настроек.
Когда все результаты будут OK, кликаем по Next Step:
В следующем окне мы оставляем настройки подключения к базе как есть — дополнительно прописываем пароль, который задали при создании пользователя zabbix. После нажимаем Next Step:
* в нашем случае, пароль был zabbixpassword;
В следующем окне оставляем все как есть:
… и нажимаем Next Step.
В последнем окне мы проверяем настройки и кликаем Next Step.
Установка завершена — нажимаем Finish:
В открывшемся окне вводим логин Admin и пароль zabbix (по умолчанию) — откроется окно со сводной информацией по мониторингу:
Триггеры шаблона
Для полноты картины, поясню остальные триггеры шаблона, чтобы у вас было понимание, за чем они следят и как правильно реагировать на них. Ниже список триггеров шаблона для мониторинга mysql сервера.
- Buffer pool utilization is too low (less {$MYSQL.BUFF_UTIL.MIN.WARN}% for 5m) — под innodb пул выделено слишком много памяти и она не используется вся. Триггер чисто информационный, делать ничего не надо, если у вас нет дефицита памяти на сервере. Если нехватка оперативной памяти есть, то имеет смысл забрать немного памяти у mysql и передать другому приложению. Настраивается потребление памяти пулом параметром innodb_buffer_pool_size.
- Failed to get items (no data for 30m) — от mysql сервера не поступают новые данные мониторинга в течении 30 минут. Имеет смысл уменьшить этот интервал до 5-10 минут.
- Refused connections (max_connections limit reached) — срабатывает ограничение на максимальное количество подключений к mysql. Увеличить его можно параметром mysql сервера — max_connections. Его необходимо увеличить, если позволяют возможности сервера. Напомню, что увеличенное количество подключений требует увеличения потребления оперативной памяти. Если у вас ее уже не хватает, нет смысла увеличивать число подключений. Нужно решать вопрос с потреблением памяти.
- Server has aborted connections (over {$MYSQL.ABORTED_CONN.MAX.WARN} for 5m) — сервер отклонил подключений выше заданного порога в макросе. Надо идти в лог mysql сервера и разбираться в причинах этого события. Скорее всего там будут подсказки.
- Server has slow queries (over {$MYSQL.SLOW_QUERIES.MAX.WARN} for 5m) — количество медленных запросов выше установленного макросом предела. Надо идти и разбираться с медленными запросами. Тема не самая простая. Надо заниматься профилированием запросов и решать проблемы по факту — добавлением индексов, редактированием запросов, увеличения ресурсов mysql сервера и т.д.
- Service has been restarted (uptime < 10m) — информационный триггер, срабатывающий на перезапуск mysql сервера (не ребут самого сервера).
- Service is down — служба mysql не запущена.
- Version has changed (new version value received: {ITEM.VALUE}) — версия mysql сервера изменилась. Тоже информационный триггер, сработает, к примеру, после обновления mysql сервера.
Подготовка
Я не буду по ходу статьи описывать все команды, например, как установить PostgreSQL. Думаю, в этой статье оно ни к чему, да и каждый сам может с этим справиться.
Установим нужное ПО:
- PostgreSQL, в моем случае версию 12.
- PgLoader 3.6.2. На версии 3.6.1 я мигрировать не смог из-за возникающих проблем.
Необходимо настроить PostgreSQL сервер и операционную систему, на которой он установлен.
Я также не буду подробно останавливаться на этой теме, так как пост не о тюнинге производительности, скажу лишь:
- Очень рекомендую доклад Ильи Космодемьянского для общего понимания, в какую сторону тюнить PostgreSQL и ОС: https://habr.com/ru/post/505108/
- Посмотрите, что рекомендует этот сервис: https://pgtune.leopard.in.ua/
- Посмотрите описание параметров в документации: https://postgrespro.ru/docs/postgrespro/12/index.html
Также нужно до начала миграции настроить мониторинг PostgreSQL.
Так как я еще не переехал с версии Zabbix 4.0, то новеньким официальным шаблоном воспользоваться не могу, но мне отлично подошел вот этот:https://github.com/lesovsky/zabbix-extensions/tree/master/files/postgresql
Кроме этого, непосредственно перед началом миграции лучше отключить все способы оповещения в Zabbix, чтобы не потревожить людей сработавшими триггерами nodata, т.к. при первом после миграции запуске исторических данных в базе у нас не будет.
Ну и обязательно делайте резервные копии и проверяйте весь процесс на тестовом окружении. Собственно, все приключения я получил именно на нем.
Последний момент подготовки перед миграцией — останавливаем Zabbix server:
Заключение
Несмотря на то, что новые версии zabbix выходят достаточно часто, материалы по настройке мониторинга различных систем и сервисов не устаревают и остаются актуальным для самых новых релизов. Вот пример мониторинга служб и сервисов, приведенных на моем сайте:
- Настройка мониторинга Asterisk
- Cрок действия ssl сертификата
- Почтовый сервер Postfix
- Звонок-оповещение Zabbix через Asterisk на мобильный телефон
- Лог файлы
- Установка и настройка zabbix прокси на CentOS 7
- Размер бэкапа
- Значения из текстового файла
- Время делегирования домена
- Synology
- Актуальность бэкапов
- Транки (trunk) в asterisk
- Программный рейд mdadm
- Доступность службы linux
- MySQL репликация
- Web сайт
- Web сервер nginx и php-fpm
- Настройка мониторинга температуры
Команда заббикс внимательно следит за обратной совместимостью своих продуктов. Благодаря этому переход на новые версии проходит безболезненно. Нет необходимости перенастраивать или исправлять старые наработки. В новых версиях только добавляется функционал, старый чаще всего не претерпевает изменений, им можно дальше пользоваться.
Онлайн курс Основы сетевых технологий
Теоретический курс с самыми базовыми знаниями по сетям. Курс подходит и начинающим, и людям с опытом. Практикующим системным администраторам курс поможет упорядочить знания и восполнить пробелы. А те, кто только входит в профессию, получат на курсе базовые знания и навыки, без воды и избыточной теории. После обучения вы сможете ответить на вопросы:
- На каком уровне модели OSI могут работать коммутаторы;
- Как лучше организовать работу сети организации с множеством отделов;
- Для чего и как использовать технологию VLAN;
- Для чего сервера стоит выносить в DMZ;
- Как организовать объединение филиалов и удаленный доступ сотрудников по vpn;
- и многое другое.
Уже знаете ответы на вопросы выше? Или сомневаетесь? Попробуйте пройти тест по основам сетевых технологий. Всего 53 вопроса, в один цикл теста входит 10 вопросов в случайном порядке. Поэтому тест можно проходить несколько раз без потери интереса. Бесплатно и без регистрации. Все подробности на странице .