На сервер с Cassandra устанавливаем NRPE:
# cd /tmp # wget http://assets.nagios.com/downloads/nagiosxi/agents/linux-nrpe-agent.tar.gz # tar xzf linux-nrpe-agent.tar.gz # cd linux-nrpe-agent
Устанавливаем:
# ./fullinstall
В запросе Allow from: укажите адрес Nagios-сервера:
... ################################################################################ Allow from: 54.***.***.54 Stopping xinetd: [ OK ] ...
Если потребуется изменить его — отредактируйте файл /etc/xinetd.d/nrpe
, параметр only_from
.
Содержание
Установка плагина
На сервере с Cassandra устанавливаем:
# cd /usr/local/nagios/libexec # wget https://raw.github.com/hashnao/nagios-plugins/master/check_cassandra_cluster.sh # chmod +x check_cassandra_cluster.sh # chown nagios:nagios check_cassandra_cluster.sh
Проверяем:
# /usr/local/nagios/libexec/check_cassandra_cluster.sh -H localhost -P 7199 -w 1 -c 0 | less
Результат:
OK - Live Node:256 - 127.0.0.1:Normal,409.28,KB?,-9194503076511885085 ...
Редактируем файл /usr/local/nagios/etc/nrpe.cfg
, и добавляем команду:
command[check_cassandra_cluster]=/usr/local/nagios/libexec/check_cassandra_cluster.sh $ARG1$
Перезапускаем NRPE:
# service xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ]
На Nagios сервере устанавливаем плагин NRPE:
# yum install nagios-plugins-nrpe
Проверяем:
# /usr/local/nagios/libexec/check_nrpe -H 151.***.***.25 -c check_cassandra_cluster -a '-H 127.0.0.1 -P 7199 -w 1 -c 0' OK - Live Node:256 - 127.0.0.1:Normal,205.32,KB?,-9194503076511885085 127.0.0.1:Normal,205.32,KB?,-9185008771820663321 127.0.0.1:Normal,205.32,KB?,-9159961411252188698...
Настройка Nagios
На сервере с Nagios редактируем файл /usr/local/nagios/etc/objects/commands.cfg
, в который добавляем:
define command{ command_name check_cassandra_cluster command_line $USER1$/check_nrpe -H $HOSTNAME$ -c check_cassandra_cluster -a '-H $ARG1$ -P $ARG2$ -w $ARG3$ -c $ARG4$' }
В настройках хоста, например — /usr/local/nagios/etc/servers/rdss.pp.domain.com.cfg
, добавляем вызов check_cassandra_cluster
:
define service{ use local-service ; Name of service template to use host_name rdss.pp.domain.com service_description Cassandra service check_command check_cassandra_cluster!127.0.0.1!7199!1!2 }
Далее — я немного переделал скрипт.
В каждом кластере Cassandra у нас 3 ноды. Реагировать необходимо при падении любой из них.
Для этого — в самом скрипте check_cassandra_cluster.sh
на сервере Cassandra — сделаны некоторые необязательные изменения.
Во-первых в функции check_status()
я убрал лишний вывод:
check_status() { case $retval in 0 ) echo "OK - Live Nodes: $live_node" exit 0 ;; 1 ) echo "WARNING - Live Node:$live_node" exit 1 ;; 2 ) echo "CRITICAL - Live Node:$live_node" exit 2 ;; 3 ) echo "UNKNOWN - Live Node:$live_node" exit 3 ;; esac }
И немного изменил подсчёт значения переменной $live_node
:
live_node=$(nodetool -h localhost -p 7199 ring | grep 'Up' | cut -f 1 -d " " | sort | uniq | wc -l)
Теперь результат выглядит так:
# nodetool -h localhost -p 7199 ring | grep 'Up' | cut -f 1 -d " " | sort | uniq 10.***.***.115 10.***.***.74 10.***.***.75
И результат самой проверки:
# /usr/local/nagios/libexec/check_nrpe -H 151.***.***.25 -c check_cassandra_cluster -a '-H 127.0.0.1 -P 7199 -w 5 -c 5' CRITICAL - Live Node:3
Ждём, когда пройдёт проверка — готово: