-
My agent installation script (Linux)
[code:1]
#!/bin/bash
#### var declarations
PANDORA_HOME=”/opt/pandora”
FILES_SERVER_URL=”http:// ftp://” # where do I download the installation files from? to be completed !
SERVER_PACK=”pandora_server.tar.gz”
SERVER_SUBDIR=”pandora_server”
SERVER_IP=”your.pandora_server.ip”
SERVER_PORT=”22″
CONSOLE_PACK=”pandora_agent.tar.gz”
CONSOLE_SUBDIR=”pandora_console”
CONSOLE_PATH=”/var/www/html”
AGENT_PACK=”pandora_console.tar.gz”
AGENT_SUBDIR=”pandora_agent”# **************************************************************
# *********** installation de l’agent **************************
# **************************************************************
echo Generating modules …
# urpmi sshd
# urpmi wget
# urpmi rsync
# mkdir $PANDORA_HOME
# cd $PANDORA_HOME
# wget $FILES_SERVER_URL/$AGENT_PACK
# tar -xzf $AGENT_PACK
# mv $PANDORA_HOME/linux $PANDORA_HOME/$AGENT_SUBDIR # we only need linux agent
# rm -rf $(ls /opt/pandora/ -I “pan*”) # cleaning
chown -R root:root $PANDORA_HOME/$AGENT_SUBDIR # root is the owner# Agent is already there but needs custom modules, creating a new pandora_agent.conf:
echo “” > $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf # clearing file
# *** header ***
echo “# Fichero de configuracion base de agentes de Pandora FMS” > $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “# Base config file for Pandora FMS agents” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “# Version 1.2” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “# Licensed under GPL license, 2003-2006 Sancho Lerena” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “# This file was autogenerated by Pandora install script,” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “# GPL Licensed 2006, Denis Chupau Tranquil IT Systems” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “# General Parameters” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “# ==================” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf# *** Agent conf. ***
echo “server_ip $SERVER_IP” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “server_port $SERVER_PORT” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “keep_files 1” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “server_path $PANDORA_HOME/$SERVER_SUBDIR/data_in” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “pandora_path $PANDORA_HOME/$AGENT_SUBDIR” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “temporal $PANDORA_HOME/$AGENT_SUBDIR/data_out” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “interval 300” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “debug 0” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “checksum 0” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “agent_name $(hostname)” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “# Modules Definition” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “# ==================” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf# ****** modules definition and generation *******
# **>> monitoring user cpu time : %age=100x(val2-val1)/30000 so each val(%)=val/300
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name cpu_user” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data_inc” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_interval 1” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec echo $(awk ‘/^cpu / {print $2}’ /proc/stat)/$INTERVAL | bc” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_max 100” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_min 0” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description user CPU Usage %” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf # separator
# **>> monitoring system cpu time (val(%)=val/300) jiffies counters on 64-bits on 2.6 kernels
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name cpu_sys” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data_inc” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_interval 1” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec echo $(awk ‘/^cpu / {print $4}’ /proc/stat)/$INTERVAL | bc” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_max 100” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_min 0” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description system CPU Usage %” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
# **>> monitoring partitions free space
for PART in $(df -l | sed -n ‘/dev/p’ | awk ‘{print $1}’);
do
NAME=$(df -l $PART | tail -1 | awk ‘{print $6}’ | sed ‘s///ROOT/’) # partition name (/ /home /var …)
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name disk_”$NAME”_free” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_interval 2” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec df -Pkh $PART | tail -1 | awk ‘{ print 100-$5 }'” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_max 100” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_min 0” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description Free disk Percentage of $NAME partition” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
done
# **>> monitoring free RAM
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name memfree” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec echo “scale=1; 100*”$(free | grep Mem | awk ‘{print $4″/”$2}’) | bc” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description Reports free available RAM” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
# **>> monitoring free SWAP
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name swapfree” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec echo “scale=1; 100*”$(free | grep Swap | awk ‘{print $4″/”$2}’) | bc” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
# **>> monitoring processus total
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name proctotal” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_proc” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec ps -A | wc -l” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
# **>> monitoring services in the list below
for SERVICE in $(echo httpd snort sshd)
do
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name service_$SERVICE” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_proc” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec ps -Af | grep $SERVICE | grep -v “grep” | wc -l” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
done
# **>> monitoring syslog’s last line
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name last_syslog” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data_string” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec tail -1 /var/log/syslog” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
# **>> monitoring RAID
if [ -x /opt/3ware/tw_cli ]
then
for CARD in $( /opt/3ware/tw_cli info | grep ‘^c’ | awk ‘{print $1}’ 2> /dev/null) # card name list (c0, c1, …)
do
for UNIT in $( /opt/3ware/tw_cli info $CARD | grep ‘^u’ | awk ‘{print $1}’ 2> /dev/null) # card’s CARD units name list (u0, u1, …)
do
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name raid_”$CARD-$UNIT”_state” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data_string” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_interval 2” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec /opt/3ware/tw_cli info $CARD | grep ‘^$UNIT’ | awk ‘{print $1” STATE=”$3″(“$4″%) TYPE=”$2″ SIZE=”$6″GB CACHE=”$7″ AVerify=”$8″ IgnECC=”$9}'” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description State of RAID card $CARD unit $UNIT” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
done
done
else
echo “3ware RAID utility not found in /opt/3ware/ please download and install it.”
fi
# **>> monitoring uptime
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name server_uptime” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data_string” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec uptime | sed ‘s/,/ /g’ | awk ‘{print $3” “$4” “$5}'” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description Grabs the uptime” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
# **>> monitoring most consuming process
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name most_cons_proc” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data_string” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec ps -eo pcpu,pid,fname,user k pcpu | tail -1 | awk ‘{print $1″% PID=”$2″ NAME=”$3″ USER=”$4}'” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description Get the most CPU consumming task %CPU,PID,name,user” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
# **>> load average
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name average_load” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec uptime | sed ‘s/,/ /g’ | awk ‘BEGIN {FS=”load average:”} {print $2}’ | awk ‘{print $2}'” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description Load average for the last 5 minutes” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
# **>> last IP adress (external)
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name internet_IP” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data_string” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec wget -qO – http://whatismyip.com | grep -i “your ip is” | awk ‘BEGIN { FS=”” } { print $2 }’ | cut -d’
/dev/null | grep time= | awk ‘BEGIN {FS=”time=”;} {print $2}’ |cut -d’ ‘ -f1″ >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description Internet connectivity ping on google” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
# **>> monitoring Pandora_network memory
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name PandoraNet_Mem” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description Pandora_Network Memory usage” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec ps aux | grep pandora_network.pl | grep -v grep | awk ‘{ print $6 }'” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
# **>> monitoring Pandora_server memory
echo “module_begin” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_name PandoraSer_Mem” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_description Pandora Server memory usage” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_type generic_data” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_exec ps aux | grep pandora_server.pl | grep -v grep | awk ‘{ print $6 }'” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “module_end” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf
echo “” >> $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf# We then transmit it to the pandora server for autogenerating database entries
cp $PANDORA_HOME/$AGENT_SUBDIR/pandora_agent.conf $PANDORA_HOME/$AGENT_SUBDIR/$(hostname)-pandora_agent.conf
rsync -az –remove-sent-files -e “ssh -p$SERVER_PORT” $PANDORA_HOME/$AGENT_SUBDIR/$(hostname)-pandora_agent.conf pandora@$SERVER_IP:$PANDORA_HOME/$SERVER_SUBDIR/data_in > /dev/nullecho Finished: if no error message above, all went OK!