#!/bin/sh # set -x # Program name: nmonparser.sh # Purpose - Frontal script to nmonparser, will launch Python or Perl script depending on interpreter availability # See nmonparser | nmonparser.pl # Author - Guilhem Marchand # Version 2.0.1 # For AIX / Linux / Solaris ################################################# ## Your Customizations Go Here ## ################################################# # format date output to strftime dd/mm/YYYY HH:MM:SS log_date () { date "+%d-%m-%Y %H:%M:%S" } # Set host HOST=`hostname` if [ -z "${SPLUNK_HOME}" ]; then echo "`log_date`, ERROR, SPLUNK_HOME variable is not defined" exit 1 fi # Set tmp directory APP_VAR=${SPLUNK_HOME}/var/log/metricator # Verify it exists if [ ! -d ${APP_VAR} ]; then mkdir -p ${APP_VAR} exit 1 fi # silently remove tmp file (testing exists before rm seems to cause trouble on some old OS) rm -f ${APP_VAR}/nmonparser.temp.* # Set nmon_temp nmon_temp=${APP_VAR}/nmonparser.temp.$$ # APP path discovery if [ -d "$SPLUNK_HOME/etc/apps/TA-metricator-for-nmon" ]; then APP=$SPLUNK_HOME/etc/apps/TA-metricator-for-nmon elif [ -d "$SPLUNK_HOME/etc/slave-apps/TA-metricator-for-nmon" ];then APP=$SPLUNK_HOME/etc/slave-apps/TA-metricator-for-nmon else echo "`log_date`, ${HOST} ERROR, the APP directory could not be defined, is the TA-metricator-for-nmon installed ?" exit 1 fi # source default nmon.conf if [ -f $APP/default/nmon.conf ]; then # During initial deployment, the nmon.conf needs to be managed properly by the metricator_consumer.sh # wait for this to be done grep '\[nmon\]' $APP/default/nmon.conf >/dev/null if [ $? -eq 0 ]; then echo "`log_date`, ${HOST} INFO, initial deployment condition detected, safe exiting." exit 0 else . $APP/default/nmon.conf fi fi # source local nmon.conf, if any # Search for a local nmon.conf file located in $SPLUNK_HOME/etc/apps/TA-metricator-for-nmon/local if [ -f $APP/local/nmon.conf ]; then . $APP/local/nmon.conf fi # On a per server basis, you can also set in /etc/nmon.conf if [ -f /etc/nmon.conf ]; then . /etc/nmon.conf fi # Manage FQDN option echo $nmonparser_options | grep '\-\-use_fqdn' >/dev/null if [ $? -eq 0 ]; then # Only relevant for Linux OS case $UNAME in Linux) HOST=`hostname -f` ;; AIX) HOST=`hostname` ;; SunOS) HOST=`hostname` ;; esac else HOST=`hostname` fi # Manage host override option based on Splunk hostname defined case $override_sys_hostname in "1") # Retrieve the Splunk host value HOST=`cat $SPLUNK_HOME/etc/system/local/inputs.conf | grep '^host =' | awk -F\= '{print $2}' | sed 's/ //g'` ;; esac # # Interpreter choice # PYTHON=0 PYTHON2=0 PYTHON3=0 PERL=0 # Set the default interpreter INTERPRETER="python" # Get the version for both worlds PYTHON2=`which python 2>&1` PYTHON3=`which python3 2>&1` PERL=`which perl 2>&1` # Handle Python PYTHON_available="false" case $PYTHON3 in *python*) PYTHON_available="true" INTERPRETER="python3" ;; *) case $PYTHON2 in *python*) PYTHON_available="true" INTERPRETER="python" ;; esac ;; esac # Handle Perl case $PERL in *perl*) PERL_available="true" ;; *) PERL_available="false" ;; esac case `uname` in # AIX priority is Perl "AIX") case $PERL_available in "true") INTERPRETER="perl" ;; "false") INTERPRETER="$INTERPRETER" ;; esac ;; # Other OS, priority is Python *) case $PYTHON_available in "true") INTERPRETER="$INTERPRETER" ;; "false") INTERPRETER="perl" ;; esac ;; esac #################################################################### ############# Main Program ############ #################################################################### # Store arguments sent to script userargs=$@ # Store stdin while read line ; do echo "$line" >> ${nmon_temp} done # Start the parser case ${INTERPRETER} in "python"|"python3") cat ${nmon_temp} | ${SPLUNK_HOME}/bin/splunk cmd $INTERPRETER ${APP}/bin/nmonparser.py ${userargs} ;; "perl") cat ${nmon_temp} | ${SPLUNK_HOME}/bin/splunk cmd ${APP}/bin/nmonparser.pl ${userargs} ;; esac # Remove temp rm -f ${nmon_temp} exit 0