Open IT Experts for Enterprise

Zylk empresa de desarrollo de ecommerce

Monitoring Ambari with Nagios

Cesar Capillas
Cesar Capillas

Custom nagios shell script with curl command to monitor Ambari

Last day, we
tried some curl commands to check Ambari metrics
of our Big Data
cluster. The next step for using these metrics collected in Ambari
Server is to include them in a Nagios / Icinga server for getting
email alerts and the usual monitoring stuff.

A simple example may be something like to obtain Ambari alerts
summary (Note: this can be improved a lot, it is just a probe of concept).

check_ambari_alerts_summary.sh

#!/bin/bash
SERVER=$1
PORT=$2
USERNAME=$3
PASSWORD=$4
CLUSTERNAME=$5 

ENDPOINT="http://${SERVER}:${PORT}/api/v1/clusters/${CLUSTERNAME}"

CURL=`curl --silent -u ${USERNAME}:${PASSWORD} -X GET ${ENDPOINT}?fields=alerts_summary`
CHCK=`echo $CURL | grep alerts_summary`

if [[ "$CHCK" == "" ]]; then
   CHECK="Failed"
else
   CHECK="OK"
   CRITICAL=`echo $CURL | jshon -e alerts_summary -e CRITICAL`
   MAINTENANCE=`echo $CURL | jshon -e alerts_summary -e MAINTENANCE`
   OK=`echo $CURL | jshon -e alerts_summary -e OK`
   UNKNOWN=`echo $CURL | jshon -e alerts_summary -e UNKNOWN`
   WARNING=`echo $CURL | jshon -e alerts_summary -e WARNING`
   if [[ "$CRITICAL" > 0 ]];then
     CHECK="Critical"
   elif [[ "$WARNING" > 0 ]];then
     CHECK="Warning"
   fi 
fi
 
if [[ "$CHECK" == "OK" ]]; then
   echo "INFO: Ambari Services - CRITICAL=$CRITICAL, WARNING=$WARNING, OK=$OK, UNKNOWN=$UNKNOWN, MAINTENANCE=$MAINTENANCE"
   exit 0
elif [[ "$CHECK" == "Warning" ]]; then
   echo "WARNING: Ambari Services - CRITICAL=$CRITICAL, WARNING=$WARNING, OK=$OK, UNKNOWN=$UNKNOWN, MAINTENANCE=$MAINTENANCE"
   exit 1
elif [[ "$CHECK" == "Critical" ]]; then
   echo "CRITICAL: Ambari Services - CRITICAL=$CRITICAL, WARNING=$WARNING, OK=$OK, UNKNOWN=$UNKNOWN, MAINTENANCE=$MAINTENANCE"
   exit 2
elif [[ "$CHECK" == "Failed" ]]; then
   echo "CRITICAL: ${SERVER}"
   exit 2
else
   echo "Check failed"
   exit 3
fi

We copy this shell script to the usual directory of Nagios/Icinga
plugins in my case (/usr/lib/nagios/plugins)
After this, you
have to create the corresponding commands for your Nagios/Icinga server:

/etc/icinga/objects/ambari-commands.cfg
 

define command {
        command_name    check_ambari_alerts_summary
        command_line    /usr/lib/nagios/plugins/check_ambari_alerts_summary.sh '$ARG1$' '$ARG2$' '$ARG3$' '$ARG4$' '$ARG5$'
}

And define the host and service in:

In /etc/icinga/objects/hosts.cfg

define host{
        host_name                       ambari
        alias                           ambari
        address                         ambari.planetexpress.net
        use                             generic-host
}


In /etc/icinga/objects/services_icinga.cfg

define service { use generic-service host_name ambari  service_description Ambari Alerts max_check_attempts 3 normal_check_interval 10 retry_check_interval 3  check_command check_ambari_alerts_summary!$HOSTADDRESS$!8080!admin!robot1729!bender }

And finally, restarting Nagios/Icinga service

$ sudo service icinga restart

And voilá….

Monitoring Ambari with Nagios

Then you can make similar shell scripts commands with Ambari REST API
as shown in the figure for Ambari Health or Host Alerts. You may also
improve script, validating hostname, curl requests etc etc….  

HINT: You need jshon installed in your icinga server

$ sudo apt-get install jshon

Si te ha parecido interesante comparte este post en RRS

Facebook
LinkedIn
Telegram
Email

Leer más sobre temas relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *