Наблюдать за Asterisk будем через Zabbix агент, для этого установим его на той же машине что и Asterisk.
Читать далее «Мониторинг Asterisk в Zabbix»Архивы рубрик:Zabbix
Настройка SSH проверок в Zabbix
Понадобилось как-то для некоторых Linux серверов настроить SSH проверки, чтобы не устанавливать на них Zabbix-agent.
Сам Zabbix-server у меня установлен на Ubuntu Server.
Ниже по порядку опишу как настроить SSH проверки в Zabbix.
Авторизацию по SSH настроим по ключу вместо пароля, для этого остановим zabbix-agent и zabbix-server:
sudo service zabbix-agent stop sudo service zabbix-server stop
Создадим домашнюю директорию пользователя Zabbix (для хранения ssh ключей):
sudo usermod -m -d /home/zabbix zabbix sudo chown zabbix:zabbix /home/zabbix sudo chmod 700 /home/zabbix
Запустим обратно zabbix-agent и zabbix-server:
sudo service zabbix-agent start sudo service zabbix-server start
Откроем конфигурационный файл /etc/zabbix/zabbix_server.conf (в редакторе nano комбинация клавиш Ctrl+O и Enter означает сохранение, Ctrl+X выход):
sudo nano /etc/zabbix/zabbix_server.conf
Раскомментируем строку SSHKeyLocation и укажем путь к директории с ключами:
SSHKeyLocation=/home/zabbix/.ssh
Перезапустим zabbix-server:
sudo service zabbix-server restart
Генерируем ssh ключ:
sudo -u zabbix ssh-keygen -t rsa Нажмем Enter если предлагается путь /home/zabbix/.ssh/id_rsa На предложение зашифровать файл ключа нажмем Enter чтобы не шифровать его или введем два раза любой пароль (им будет зашифрован файл ключа и при подключении его придется указывать)
Скопируем сгенерированый ключ на сервер за которым будем наблюдать:
sudo -u zabbix ssh-copy-id -i /home/zabbix/.ssh/id_rsa.pub -p 22 [email protected]
Если возникает ошибка при копировании ключа, то можно вручную скопировать строку из id_rsa.pub на удаленный сервер в файл authorized_keys.
И попробуем подключиться к удаленному серверу без ввода пароля командой:
sudo -u zabbix ssh -p 22 [email protected]
Теперь в Zabbix добавим элемент данных к шаблону или хосту:
Имя: любое
Тип: SSH агент
Ключ: ssh.run[описание,ip,порт,кодировка] (например ssh.run[cpu,192.168.0.55,22,utf8]
Метод аутентификации: Публичный ключ
Имя пользователя (на удаленном хосте): root
Файл публичного ключа: id_rsa.pub
Файл приватного ключа: id_rsa
Фраза-пароль ключа: оставим пустым если не шифровали ключ паролем
Выполняемый скрипт: команда выполняемая на удаленном сервер, примеры ниже
Приведу ниже пример команд для Linux которые можно выполнить и получить различную информацию.
Загрузка процессора за 1мин/5мин/15мин:
cat /proc/loadavg |cut -d " " -f1 cat /proc/loadavg |cut -d " " -f2 cat /proc/loadavg |cut -d " " -f3
Количество текущих запущенных процессов указанной программы:
pgrep apache2|wc -l pgrep -c sshd
Свободное пространство в точке монтирования «/» (в мегабайтах):
df -m|grep "/$"|awk '{print $4}'
Занятое пространство в точке монтирования «/» (в процентах):
df|grep "/$"|awk '{print $5}'|tr -d "%"
Получено байт на сетевой интерфейс eth0:
cat /proc/net/dev|grep eth0|awk '{print $2}'
Отправлено байт на сетевой интерфейс eth0:
cat /proc/net/dev|grep eth0|awk '{print $10}'
Количество свободной оперативной памяти:
free |grep "Память:"|awk '{print $4}'
free |grep "Mem:"|awk '{print $4}'
Смотрите также:
Подключение к SSH с использованием ключей
Настройка email оповещений в Zabbix через iRedMail
На тесте буду использовать Zabbix 3.0.3 и iRedMail 0.9.4 установленные в Ubuntu Server 14.04.4 LTS.
Сначала в панели Zabbix активируем действие открыв вкладку «Настройка» — «Действия» и активируем «Report problems to Zabbix administrators«. В нем я также, чтобы видеть имена хостов, изменил обе темы письма с:
{TRIGGER.STATUS}: {TRIGGER.NAME}
на
{TRIGGER.STATUS}: {HOST.NAME1} {TRIGGER.NAME}
В Zabbix изначально добавлен способ оповещения через Email, но в зависимости от настроек почтового сервера он может работать либо не работать. Найти его можно зайдя в Zabbix под администратором и открыв вкладку «Администрирование» — «Способы оповещений» — «Email«.
При настройке с iRedMail я указывал следующие параметры:
Имя: Email
Тип: Email
SMTP сервер: mail.example.com
Порт SMTP сервера: 25
SMTP helo: example.com
SMTP email: [email protected]
Безопасность подключения: STARTTLS
Галочки на «Проверка SSL узла» и «Проверка SSL хоста» не ставил
Аутентификация: Обычный пароль
Имя пользователя: [email protected]
Пароль: ПАРОЛЬ_К_ПОЧТЕ
галочка на «Активировано»
Если почтовый сервер находится в одной системе с Zabbix сервером, то можно попробовать настроить как выше, но где «Безопасность подключения» и «Аутентификация» выбрать «Нет».
Также в профиле пользователя, во вкладке «Оповещения» нужно добавить:
Тип: Email
Отправлять на: почта на которую должны приходить оповещения
Когда активен: время когда разрешено приходить оповещениям
Использовать, если важность: какой важности оповещения присылать
Состояние: Активировано
Вот и все.
Установка Zabbix в Ubuntu из пакетов дистрибутивов
На тесте установил Zabbix 3.4 в Ubuntu 14.04 LTS, Ubuntu 16.04 LTS, Ubuntu 18.04 LTS.
Ссылки на другие версии Zabbix можно найти на официальном сайте www.zabbix.com или тут http://repo.zabbix.com/zabbix/.
Например Zabbix 3.4 для Ubuntu находится тут http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/.
После установки Zabbix, перенес в него данные со старого сервера Zabbix 2.2, просто экспортировав сначала шаблоны, потом узлы сети, карты сеты и комплексные экраны.
Приступим к установке, добавим в систему официальный источник пакетов (пример для Ubuntu 14.04 LTS (trusty)):
wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+trusty_all.deb sudo dpkg -i zabbix-release_3.4-1+trusty_all.deb sudo apt update
Для Ubuntu 16.04 LTS (xenial):
wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb sudo dpkg -i zabbix-release_3.4-1+xenial_all.deb sudo apt update
Для Ubuntu 18.04 (Bionic Beaver):
wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+bionic_all.deb sudo dpkg -i zabbix-release_3.4-1+bionic_all.deb sudo apt-get update
Выполним установку Zabbix:
sudo apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent
Подключимся к MySQL серверу и создадим базу данных:
mysql -uroot -p create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@localhost identified by 'ПАРОЛЬ'; quit;
Импортируем в созданную базу стандартные данные:
cd /usr/share/doc/zabbix-server-mysql zcat create.sql.gz | mysql -uroot -p zabbix
Откроем например в текстовом редакторе nano файл конфигурации Zabbix сервера (в nano клавиши Ctrl+X для выхода, y/n для сохранения или отмены изменений):
sudo nano /etc/zabbix/zabbix_server.conf
Укажем имя MySQL базы, имя пользователя и пароль:
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=ПАРОЛЬ
Запустим процесс Zabbix сервера:
sudo service zabbix-server start
Нужно поправить конфигурацию PHP для Zabbix. Файл конфигурации Apache для веб-интерфейса Zabbix размещается в /etc/apache2/conf.d/zabbix или /etc/apache2/conf-enabled/zabbix.conf. Некоторые минимальные параметры конфигурации PHP там уже заданы:
php_value max_execution_time 300 php_value memory_limit 128M php_value post_max_size 16M php_value upload_max_filesize 2M php_value max_input_time 300 php_value always_populate_raw_post_data -1 php_value date.timezone Europe/Kiev
Перезапустим веб-сервер чтобы применить изменения:
sudo service apache2 restart sudo service zabbix-server restart
Убедимся что Zabbix агент и Zabbix сервер запускаются при старте системы, и при необходимости включим:
sudo systemctl is-enabled zabbix-agent.service sudo systemctl is-enabled zabbix-server.service sudo systemctl enable zabbix-agent.service sudo systemctl enable zabbix-server.service
Веб-интерфейс Zabbix доступен через браузер по адресу http://ХОСТ/zabbix.
По умолчанию имя пользователя для входа через веб-интерфейс — admin или Admin, пароль — zabbix
Смотрите также:
Установка и настройка Zabbix агента в Ubuntu
Решение ошибки Unknown Object Identifier (Index out of range: XXX (ifIndex))
Однажды делал шаблон Zabbix для рисования графиков трафика с портов GPON плат на Huawei SmartAX MA5683T.
Из Linux посмотрел индексы интерфейсов командой:
snmpwalk -v2c -c public 192.168.0.101 ifDesc
Получил ответ что-то в виде (где 4194336768 индекс нулевого порта GPON платы):
IF-MIB::ifDescr.4194336768 = STRING: Huawei-MA5600-V800R008-GPON_UNI
…
Соответственно по этому индексу должен считываться и трафик, поэтому выполнил команду:
snmpwalk -v2c -c public 192.168.0.101 ifInOctets.4194336768
Но в итоге получил ответ:
.1.3.6.1.2.1.2.2.1.13.4194336768: Unknown Object Identifier (Index out of range: 4194336768 (ifIndex))
Решить проблему помогло добавления ключа -Ir в команду:
snmpwalk -v2c -Ir -c public 192.168.0.101 ifInOctets.4194336768
В ответ получил то что нужно:
IF-MIB::ifInOctets.4194336768 = Counter32: 2686914701
Ошибку можно решить добавив в файл конфигурации /etc/snmp/snmp.conf:
noRangeCheck yes
Либо можно написать скрипт:
snmpwalk -v2c -Ir -c public 192.168.0.101 ifInOctets.4194336768 | sed -e 's/.*Counter32: //g'
В конце команды редактором SED я отрезал лишний текст чтобы в результате была только цифра.
В Zabbix потом изменим элемент данных, где:
Тип: Внешняя проверка
Ключ: ИмяСкрипта.sh
Тип информации: Числовой (с плавающей точкой)
Хранение значения: Дельта (скорость в секунду)
Смотрите также мою статью:
Список SNMP OID и MIB для интерфейсов
Решение предупреждения «Lack of Free Swap Space on Zabbix Server»
Поставил как-то на новый Linux сервер Zabbix и сразу начало отображаться следующее предупреждение:
Lack of Free Swap Space on Zabbix Server
Предупреждение сообщает что нет места в разделе Swap, посмотрев увидел что Swap раздела то нет вообще, странно что при установке Ubuntu 14.04 LTS с указанием опции использовать весь диск он не создался автоматически, оперативной памяти на сервере было 6 Гб всего-то.
По этому решением проблемы в моём случае было создание Swap раздела, после чего предупреждение исчезло.
Смотрите другую мою статью по этому поводу — Как создать SWAP в Linux
Ну а если оперативной памяти очень много, и она свободна в основном, то Swap может и смысла нету создавать, по этому можно просто отключить для этого сервера триггер создающий уведомление. Для этого откроем панель Zabbix, перейдем во вкладку «Настройка» — «Узлы сети», напротив данного сервера нажмём «Триггеры» и деактивируем триггер создающий это предупреждение.
Все.
Мониторинг DNS из Zabbix
Для мониторинга самой службы DNS на порту можно использовать следующий ключ в элементах данных (где СЕРВЕР, это IP-адрес или домен DNS сервера):
net.tcp.dns[СЕРВЕР]
Чтобы не создавать с нуля шаблон, можно клонировать например стандартный «Template App SSH Service» изменив в нём название и указав новый ключ, триггер изменится автоматически. А также в «Тип» выберем «Zabbix агент» вместо простой проверки.
Следующей командой можно выполнить проверку из командной строки Linux:
zabbix_get -s127.0.0.1 -k'net.tcp.dns[СЕРВЕР]'
Естественно если ответом будет 1, то служба DNS запущена, 0 — нет.
Если на узле установлен Zabbix-agent, то в поле ключ лучше указать:
proc.num[nemed]
Смотрите также мою статью:
Мониторинг Bind9 в Zabbix
Изменение порта при проверках SSH, HTTP и т.д. в Zabbix
Допустим SSH работает на нестандартном порту, в Zabbix же, шаблон «Template App SSH Service» проверяет его по стандартному порту и по этому будет выдавать сообщение «SSH service is down on …».
Для указания по какому порту проверять SSH, сделаем полное клонирования шаблона «Template App SSH Service», чтобы не изменять его и в новом клонированном шаблоне уже изменим в элементе данных ключ:
net.tcp.service[ssh]
на (где 500 — номер порта SSH):
net.tcp.service[ssh,,500]
И укажем этот новый шаблон вместо стандартного нужному узлу, после чего SSH будет проверяться по указанному порту.
Настройка шаблонов выполняется в меню «Настройка» -> «Шаблоны» -> Группа «Templates».
Аналогичным образом изменяется порт для других сервисов.
Из командной строки это можно проверить следующими командами:
zabbix_get -s127.0.0.1 -k'net.tcp.service[ssh]' zabbix_get -s127.0.0.1 -k'net.tcp.service[ssh,,500]'
Если на узле установлен Zabbix-agent, то в поле ключ лучше указать:
proc.num[sshd]
Мониторинг параметров Apache2 в Zabbix
Установим необходимые компоненты:
sudo apt-get install curl
Активируем модуль информации об apache2 (обычно он активирован изначально):
sudo a2enmod info
Откроем файл конфигурации модуля и укажем IP-адрес zabbix сервера чтобы разрешить ему просмотр информации об apache2 (если apache2 на локальной машине, то доступ обычно разрешен, указанием local или 127.0.0.1):
sudo nano /etc/apache2/mods-enabled/status.conf
В редакторе nano CTRL+X используются для выхода и y/n для сохранения или отмены изменений. Пример указания IP:
<Location /server-status>
SetHandler server-status
Require local
Require ip 192.168.1.5
</Location>
Перезапустим web-сервер чтобы применить изменения:
sudo service apache2 restart
Теперь информация об apache2 доступна через браузер по ссылке http://HOST/server-status
Перейдем к Zabbix. Создадим папку для скриптов если ее нету:
mkdir /etc/zabbix/scripts/ chown root:zabbix -R /etc/zabbix/scripts/ chmod 750 /etc/zabbix/scripts/
В файле конфигурации zabbix сервера укажем путь к этой папке:
sudo nano /etc/zabbix/zabbix_server.conf
ExternalScripts=ПУТЬ
Теперь приведу содержимое самого скрипта:
#!/bin/bash
if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
exit 1
fi
##### PARAMETERS #####
RESERVED="$1"
METRIC="$2"
URL="$3"
STATSURL="${URL}?auto"
#
CACHE_TTL="55"
CACHE_FILE="/tmp/zabbix.apache2.`echo ${URL} | md5sum | cut -d" " -f1`.cache"
EXEC_TIMEOUT="2"
NOW_TIME=`date '+%s'`
##### RUN #####
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=`curl -sS --insecure --max-time ${EXEC_TIMEOUT} "${STATSURL}" 2>&1`
echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
echo "URL=${URL}" >> "${CACHE_FILE}" # !!!
chmod 640 "${CACHE_FILE}"
fi
#
if [ "${METRIC}" = "accesses" ]; then
cat "${CACHE_FILE}" | grep -i "accesses" | cut -d':' -f2 | head -n1
fi
if [ "${METRIC}" = "kbytes" ]; then
cat "${CACHE_FILE}" | grep -i "kbytes" | cut -d':' -f2 | head -n1
fi
if [ "${METRIC}" = "cpuload" ]; then
cat "${CACHE_FILE}" | grep -i "cpuload" | cut -d':' -f2 | head -n1
fi
if [ "${METRIC}" = "uptime" ]; then
cat "${CACHE_FILE}" | grep -i "uptime" | cut -d':' -f2 | head -n1
fi
if [ "${METRIC}" = "avgreq" ]; then
cat "${CACHE_FILE}" | grep -i "ReqPerSec" | cut -d':' -f2 | head -n1
fi
if [ "${METRIC}" = "avgreqbytes" ]; then
cat "${CACHE_FILE}" | grep -i "BytesPerReq" | cut -d':' -f2 | head -n1
fi
if [ "${METRIC}" = "avgbytes" ]; then
cat "${CACHE_FILE}" | grep -i "BytesPerSec" | cut -d':' -f2 | head -n1
fi
if [ "${METRIC}" = "busyworkers" ]; then
cat "${CACHE_FILE}" | grep -i "BusyWorkers" | cut -d':' -f2 | head -n1
fi
if [ "${METRIC}" = "idleworkers" ]; then
cat "${CACHE_FILE}" | grep -i "idleworkers" | cut -d':' -f2 | head -n1
fi
if [ "${METRIC}" = "totalslots" ]; then
cat "${CACHE_FILE}" | grep -i "Scoreboard" | cut -d':' -f2 | sed -e 's/ //g' | wc -c | awk '{print $1-1}'
fi
#
exit 0
Сделаем файл скрипта исполняемым:
chown root:zabbix /etc/zabbix/scripts/apache2-status.sh chmod 550 /etc/zabbix/scripts/apache2-status.sh
Пример проверки скрипта:
sudo -u zabbix /etc/zabbix/scripts/apache2-status.sh none accesses http://HOST/server-status
Откроем файл конфигурации zabbix агента в редакторе:
sudo nano /etc/zabbix/zabbix_agentd.conf
И укажем следующие параметры:
UserParameter=apache2[*],/etc/zabbix/scripts/apache2-status.sh "none" "$1" "$2"
Некоторыми командами можно посмотреть количество процессов apache2 и соединений на 80 порт, для этого не нужен скрипт, например можно еще указать:
UserParameter=apache2.count_processes,ps aux | grep apache | wc -l UserParameter=connections_on_80_port,netstat -na | grep :80 | wc -l
Перезапустим zabbix агент чтобы применить изменения:
sudo /etc/init.d/zabbix-agent restart
Проверим:
zabbix_get -s 127.0.0.1 -k "apache2[accesses,http://HOST/server-status]"
Теперь создадим шаблон и добавим элементы данных, пример создаваемых элементов данных:
apache2[КЛЮЧ,http://HOST/server-status]
Экспортировал готовый шаблон — apache2-status
К наблюдаемому хосту также обязательно добавим макрос:
Макрос: {$APACHE_STATS_URL}
Значение: http://HOST/server-status
Готово.
Количество процессов apache2 можно получать от Zabbix-агента создав на Zabbix-сервере элемент данных с ключом:
proc.num[apache2]
Настройка jabber оповещений в Zabbix
Для настройки jabber оповещений в Zabbix необходимо в веб-интерфейсе открыть «Администрирование» — «Способы оповещений«, создать способ оповещения jabber (либо выбрать существующий).
В способе оповещения указать следующие параметры:
Описание: любое
Тип: Jabber
Идентификатор Jabber: идентификатор (логин)
Пароль: пароль Jabber
Поставить галочку «Активно» и нажать «Сохранить«.
Теперь когда способ оповещения создан, откроем «Администрирование» — «Пользователи«, выберем пользователя, перейдем на вкладку «Оповещения» и добавим:
Тип: Jabber
Отправлять на: логин Jabber
Когда активно: Здесь можно ограничить время приема сообщений, например в рабочие дни 1-5,09:00-18:00
Использовать если важность: Важность триггеров для которых получать сообщения
Состояние: Активировано
Жмем «Добавить» и «Сохранить«.
Сервер Jabber обязательно должен быть настроен на этой же машине что и Zabbix сервер, иначе чтобы настроить отправку через внешний Jabber сервер необходимо писать скрипт и добавить его в «Способы оповещений».
Смотрите также:
Установка и настройка EJabberd в Ubuntu