Решение проблемы Zabbix «icmp pinger processes more than 75% busy»

Сообщение «Zabbix icmp pinger processes more than 75% busy» означает что процесс или процессы выполняющие пинг хостов перегружены.
Для решения этой проблемы необходимо открыть конфигурационный файл zabbix сервера, например через редактор nano:

sudo nano /etc/zabbix/zabbix_server.conf

Далее найти в нем параметр StartPingers, если он равен 1 и закомментирован, то можно увеличить его например на 5 и раскомментировать (убрать перед ним символ #).
Этим мы увеличиваем количество процессов выполняющих ICMP Ping, соответственно нагрузка будет распределена и уменьшена.
Для сохранения изменений в редакторе nano используется комбинация клавиш Ctrl+O, потом Enter. Для выхода Ctrl+X.

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

service zabbix-server restart

Также нагрузку можно снизить увеличив «Интервал обновления» в параметрах шаблона. Для этого необходимо зайти в Web интерфейс Zabbix под администратором и нажать Настройка — Шаблоны, на необходимом шаблоне выбрать «Элементы данных», открыть элемент данных выполняющий пинг и найти «Интервал обновления (в сек)«. Значения 180 (это три минуты) или большего думаю вполне достаточно.

Решение ошибки с Detect operating system в Zabbix

Стандартно скрипт «Detect operating system» не работает в Zabbix, при попытке его выполнить появляется ошибка «sudo: no tty present and no askpass program specified» поэтому для его работы необходимо сделать несколько действий.

Первое — это установить nmap:

apt-get install sudo nmap

Второе — разрешить пользователю Zabbix запускать nmap, для этого откроем файл /etc/sudoers в любом редакторе, например nano:

sudo nano /etc/sudoers

и допишем в него следующую строку:

zabbix  ALL=(root) NOPASSWD: /usr/bin/nmap

либо можно не открывать в редакторе, а выполнить команду:

sudo echo "zabbix  ALL=(root) NOPASSWD: /usr/bin/nmap" >> /etc/sudoers

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

Мониторинг параметров MySQL в Zabbix

Создадим директорию для скриптов:
sudo mkdir /etc/zabbix/scripts/
sudo chown root:zabbix -R /etc/zabbix/scripts/
sudo chmod 750 /etc/zabbix/scripts/

Сам скрипт для мониторинга параметров MySQL:

#!/bin/bash
##### OPTIONS VERIFICATION #####
if [[ -z "$1" || -z "$2" ]]; then
  exit 1
fi
##### PARAMETERS #####
RESERVED="$1"
METRIC="$2"
USER="${3:-user}"
PASS="${4:-pass}"
#
MYSQLADMIN="/usr/bin/mysqladmin"
MYSQL="/usr/bin/mysql"
CACHE_TTL="55"
CACHE_FILE="/tmp/zabbix.mysql-stats.cache"
EXEC_TIMEOUT="1"
NOW_TIME=`date '+%s'`
##### RUN #####
if [ "${METRIC}" = "alive" ]; then
  ${MYSQLADMIN} -u${USER} -p${PASS} ping | grep alive | wc -l | head -n1
  exit 0
fi
if [ "${METRIC}" = "version" ]; then
  ${MYSQL} -V | sed -e 's/^.*\(ver.*\)$/\1/gI' | head -n1
  exit 0
fi
#
if [ -s "${CACHE_FILE}" ]; then
  CACHE_TIME=`stat -c"%Y" "${CACHE_FILE}"`
else
  CACHE_TIME=0
fi
DELTA_TIME=$((${NOW_TIME} - ${CACHE_TIME}))
#
if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then
  sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME}))
elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then
  echo "" >> "${CACHE_FILE}" # !!!
  DATACACHE=`${MYSQLADMIN} -u${USER} -p${PASS} extended-status 2>&1`
  echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
  chmod 640 "${CACHE_FILE}"
fi
#
cat "${CACHE_FILE}" | grep -iw "$METRIC" | cut -d'|' -f3 | head -n1
#
exit 0

Установим скрипту владельца и права:
sudo chown root:zabbix /etc/zabbix/scripts/mysql-stats.sh
sudo chmod 550 /etc/zabbix/scripts/mysql-stats.sh

Проверка работы скрипта:
sudo -u zabbix /etc/zabbix/scripts/mysql-stats.sh none questions ИМЯ ПАРОЛЬ

Просмотр списка возможных параметров по которым можно просматривать статистику:
mysqladmin -uroot -p extended-status

Добавляем указанную ниже строку в конфигурационный файл zabbix-агента /etc/zabbix/zabbix_agentd.conf:

UserParameter=mysql-stats[*],/etc/zabbix/scripts/mysql-stats.sh "none" "$1" [USER] [PASSWORD]

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

/etc/init.d/zabbix-agent restart

Проверка:

sudo zabbix_get -k 'mysql-stats[questions]' -s 127.0.0.1

Установка и настройка Zabbix Server в Linux Ubuntu

Zabbix — система мониторинга, отслеживания серверов и сетевого оборудования.

Ниже приведу пример установки Zabbix Server и Zabbix Agent из официального репозитория Ubuntu, если необходимо установить самую новую версию, то необходимо сначала установить репозитории Zabbix, например смотрите мою статью — Установка Zabbix Server 3.4 в Ubuntu 16.04

Устанавливаем сервер, веб-интерфейс и агента:

sudo apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent traceroute fping

Если при установке не выполнялась настройка mysql параметров, то вручную создаем MySQL пользователя и полные права на базу данных:

mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'PASSWORD';
exit

Импортируем таблицы в базу данных:

cd /usr/share/zabbix-server-mysql
sudo gunzip schema.sql.gz
sudo gunzip images.sql.gz
sudo gunzip data.sql.gz
mysql -uroot -p zabbix < schema.sql
mysql -uroot -p zabbix < images.sql
mysql -uroot -p zabbix < data.sql

Конфиги находятся по адресу /etc/zabbix/

Конфиг веб-интерфейса находится по адресу:
/etc/apache2/conf-available/zabbix
Если его нет, то можно скопировать шаблон и настроить:

sudo cp /etc/zabbix/apache.conf /etc/apache2/sites-enabled/zabbix.conf

Либо сделаем символическую ссылку в директорию веб сервера на файлы zabbix:

sudo ln -s /usr/share/zabbix/ /var/www/html/

Откроем конфигурационный файл PHP например в редакторе nano (CTRL+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/php5/apache2/php.ini

И изменим некоторые минимальные параметры:

date.timezone = Europe/Kiev
max_execution_time 300
memory_limit 128M
post_max_size 16M
upload_max_filesize 2M
max_input_time 300

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

sudo /etc/init.d/apache2 restart

Открываем веб интерфейс по адресу http://SERVER/zabbix/ и следуем подсказкам для дальнейшей установки.
По умолчанию имя пользователя для входа через веб-интерфейс — admin, пароль — zabbix.
При сохранении конфигурационного файла zabbix.conf.php будет сообщение что нет прав на запись, поэтому временно их разрешим:

sudo chmod 777 /etc/zabbix

Когда конфигурационный файл сохранится вернем обратно:

sudo chmod 755 /etc/zabbix

Также укажем во втором конфигурационном файле zabbix_server.conf логин и пароль подключения к MySQL базе данных (такой же как в zabbix.conf.php):

sudo nano /etc/zabbix/zabbix_server.conf

Если в веб интерфейсе отображается сообщение что zabbix сервер не запущен, то необходимо изменить параметр START=no на START=yes в файле /etc/default/zabbix-server и выполнить команду запуска:

sudo service zabbix-server start

После установки рекомендую сменить пароль пользователю admin и отключить гостевого пользователя.