Nagios: мониторинг Apache Cassandra

Автор: | 16/07/2015

nagios_logoНа сервер с 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

Ждём, когда пройдёт проверка – готово:

nagios_install_centos_7_16