Я управляю check_mysql
плагин, использующий NRPE на удаленном DB-сервере, и пока я могу получить удовлетворительные данные о том, действительно ли сервер обработать работает по мере необходимости, я вижу, что плагин выводит гораздо больше информации:
user@server:/etc/nagios# /usr/lib/nagios/plugins/check_mysql -H localhost -P 3306 -u nagios -psnip
Uptime: 112398 Threads: 5 Questions: 10921804 Slow queries: 0 Opens: 4408 Flush tables: 1 Open tables: 416 Queries per second avg: 97.170|Connections=137481c;;; Open_files=0;;; Open_tables=416;;; Qcache_free_memory=1031832;;; Qcache_hits=0c;;; Qcache_inserts=0c;;; Qcache_lowmem_prunes=0c;;; Qcache_not_cached=9427651c;;; Qcache_queries_in_cache=0;;; Queries=10921805c;;; Questions=10917613c;;; Table_locks_waited=0c;;; Threads_connected=5;;; Threads_running=1;;; Uptime=112398c;;;
Это заставляет меня думать, что я могу утверждать такие вещи, как количество потоков или медленные запросы для генерации состояний предупреждений.
Вопрос в том, как мне это сделать? Плагин -w
и -c
параметры имеют дело только с дрейфом часов ведущий-ведомый, но никакие другие параметры.
Нужно ли мне создавать какой-нибудь настраиваемый сценарий оболочки, чтобы проанализировать вывод, а затем вернуть собственный вывод? Или в Nagios Core есть встроенное средство для подобного рода возни?
В конце концов, я решил, что лучше всего будет создать собственный скрипт в соответствии со спецификациями плагина и немного изменить строку с помощью awk
. Для дальнейшего использования (предостережение разработчика):
#! /bin/bash
parse_mysql_output(){
METRIC=`/usr/lib/nagios/plugins/check_mysql -H localhost -P 3306 -u nagios -p[REDACTED] | grep -shoP "${METRIC_NAME}: ([\d.]+)" | awk -F ': ' '{print $2}'`
if (($(echo "$METRIC <= $WARNING_THRESHOLD" | bc -l))); then
echo "OK - $METRIC_NAME: $METRIC"
exit 0
fi
if (($(echo "$METRIC > $WARNING_THRESHOLD" | bc -l))); then
if (($(echo "$METRIC <= $CRITICAL_THRESHOLD" | bc -l))); then
echo "WARNING - $METRIC_NAME: $METRIC"
exit 1
fi
fi
if (($(echo "$METRIC >= $CRITICAL_THRESHOLD" | bc -l))); then
echo "CRITICAL - $METRIC_NAME: $METRIC"
exit 2
fi
echo "INDETERMINATE STATE - $METRIC_NAME: $METRIC"
exit 3
}
if [[ -z "$1" || -z "$2" || -z "$3" ]]
then
echo "Missing parameters! Syntax: ./`basename $0` metric warning_threshold critical_threshold"
exit 3
else
METRIC_NAME=$1
WARNING_THRESHOLD=$2
CRITICAL_THRESHOLD=$3
fi
parse_mysql_output
В предполагаемом варианте использования вы должны вызвать это с помощью специальной команды в конфигурации NRPE и передать метрики и пороги. Перед звонком вам нужно будет изменить соединение, как требуется для вашей установки.
Отзывы и комментарии приветствуются.