From e51dcb61f1e58587221accfa4762f9da386f0d47 Mon Sep 17 00:00:00 2001 From: guruevi Date: Tue, 8 Jul 2008 18:52:57 +0000 Subject: [PATCH] 2008-07-07 Evi Vanoost * pandora_agents/tools pandora_agents/linux/plugins pandora_agents/mac_osx/plugins: Moved tools into the plugin sections of compatible agents. The plugins in subdirectories have dependencies that can be found in the README file while plugins directly in the directory can be used directly when Pandora agent prerequisites are met (Perl & Bash) * pandora_agents/mac_osx/pandora_user.conf pandora_agents/mac_osx/plugins/ppc_sensors: Moved pandora_user.conf into the new plugins section * pandora_server/pandora_server_installer: Refined the installer so that it doesn't try installing certain parts on systems (usually non-Linux) that don't support cronjobs or /etc/init.d startup. It will just fail with a message for now. Also updated the error messages that appear so that they are more clear (eg. what Perl modules and how to use cpan). git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@940 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- .../plugins}/XServeRAID/README.txt | 0 .../plugins}/XServeRAID/check_xserve | 0 .../plugins}/XServeRAID/pandora_agent.conf | 0 .../xserve-raid-tools-1.2-1.rhel3.i386.rpm | Bin ...xserve-raid-tools-1.2-1.uwhep.sl4.i386.rpm | Bin .../XServeRAID/xserve-raid-tools-1.2.tar.gz | Bin .../plugins}/ipmi2xml/README.txt | 0 .../plugins}/ipmi2xml/ipmi2xml.txt | 0 pandora_agents/mac_osx/pandora_agent.conf | 189 +++++++------- .../mac_osx/plugins/XServeRAID/README.txt | 9 + .../mac_osx/plugins/XServeRAID/check_xserve | 3 + .../plugins/XServeRAID/pandora_agent.conf | 239 ++++++++++++++++++ .../xserve-raid-tools-1.2-1.rhel3.i386.rpm | Bin 0 -> 13648 bytes ...xserve-raid-tools-1.2-1.uwhep.sl4.i386.rpm | Bin 0 -> 13473 bytes .../XServeRAID/xserve-raid-tools-1.2.tar.gz | Bin 0 -> 67390 bytes .../mac_osx/plugins/ipmi2xml/README.txt | 8 + .../mac_osx/plugins/ipmi2xml/ipmi2xml.txt | 147 +++++++++++ .../ppc_sensors} | 0 pandora_server/pandora_server_installer | 74 ++++-- 19 files changed, 561 insertions(+), 108 deletions(-) rename pandora_agents/{tools => linux/plugins}/XServeRAID/README.txt (100%) rename pandora_agents/{tools => linux/plugins}/XServeRAID/check_xserve (100%) rename pandora_agents/{tools => linux/plugins}/XServeRAID/pandora_agent.conf (100%) rename pandora_agents/{tools => linux/plugins}/XServeRAID/xserve-raid-tools-1.2-1.rhel3.i386.rpm (100%) rename pandora_agents/{tools => linux/plugins}/XServeRAID/xserve-raid-tools-1.2-1.uwhep.sl4.i386.rpm (100%) rename pandora_agents/{tools => linux/plugins}/XServeRAID/xserve-raid-tools-1.2.tar.gz (100%) rename pandora_agents/{tools => linux/plugins}/ipmi2xml/README.txt (100%) rename pandora_agents/{tools => linux/plugins}/ipmi2xml/ipmi2xml.txt (100%) create mode 100644 pandora_agents/mac_osx/plugins/XServeRAID/README.txt create mode 100755 pandora_agents/mac_osx/plugins/XServeRAID/check_xserve create mode 100644 pandora_agents/mac_osx/plugins/XServeRAID/pandora_agent.conf create mode 100644 pandora_agents/mac_osx/plugins/XServeRAID/xserve-raid-tools-1.2-1.rhel3.i386.rpm create mode 100644 pandora_agents/mac_osx/plugins/XServeRAID/xserve-raid-tools-1.2-1.uwhep.sl4.i386.rpm create mode 100644 pandora_agents/mac_osx/plugins/XServeRAID/xserve-raid-tools-1.2.tar.gz create mode 100644 pandora_agents/mac_osx/plugins/ipmi2xml/README.txt create mode 100644 pandora_agents/mac_osx/plugins/ipmi2xml/ipmi2xml.txt rename pandora_agents/mac_osx/{pandora_user.conf => plugins/ppc_sensors} (100%) diff --git a/pandora_agents/tools/XServeRAID/README.txt b/pandora_agents/linux/plugins/XServeRAID/README.txt similarity index 100% rename from pandora_agents/tools/XServeRAID/README.txt rename to pandora_agents/linux/plugins/XServeRAID/README.txt diff --git a/pandora_agents/tools/XServeRAID/check_xserve b/pandora_agents/linux/plugins/XServeRAID/check_xserve similarity index 100% rename from pandora_agents/tools/XServeRAID/check_xserve rename to pandora_agents/linux/plugins/XServeRAID/check_xserve diff --git a/pandora_agents/tools/XServeRAID/pandora_agent.conf b/pandora_agents/linux/plugins/XServeRAID/pandora_agent.conf similarity index 100% rename from pandora_agents/tools/XServeRAID/pandora_agent.conf rename to pandora_agents/linux/plugins/XServeRAID/pandora_agent.conf diff --git a/pandora_agents/tools/XServeRAID/xserve-raid-tools-1.2-1.rhel3.i386.rpm b/pandora_agents/linux/plugins/XServeRAID/xserve-raid-tools-1.2-1.rhel3.i386.rpm similarity index 100% rename from pandora_agents/tools/XServeRAID/xserve-raid-tools-1.2-1.rhel3.i386.rpm rename to pandora_agents/linux/plugins/XServeRAID/xserve-raid-tools-1.2-1.rhel3.i386.rpm diff --git a/pandora_agents/tools/XServeRAID/xserve-raid-tools-1.2-1.uwhep.sl4.i386.rpm b/pandora_agents/linux/plugins/XServeRAID/xserve-raid-tools-1.2-1.uwhep.sl4.i386.rpm similarity index 100% rename from pandora_agents/tools/XServeRAID/xserve-raid-tools-1.2-1.uwhep.sl4.i386.rpm rename to pandora_agents/linux/plugins/XServeRAID/xserve-raid-tools-1.2-1.uwhep.sl4.i386.rpm diff --git a/pandora_agents/tools/XServeRAID/xserve-raid-tools-1.2.tar.gz b/pandora_agents/linux/plugins/XServeRAID/xserve-raid-tools-1.2.tar.gz similarity index 100% rename from pandora_agents/tools/XServeRAID/xserve-raid-tools-1.2.tar.gz rename to pandora_agents/linux/plugins/XServeRAID/xserve-raid-tools-1.2.tar.gz diff --git a/pandora_agents/tools/ipmi2xml/README.txt b/pandora_agents/linux/plugins/ipmi2xml/README.txt similarity index 100% rename from pandora_agents/tools/ipmi2xml/README.txt rename to pandora_agents/linux/plugins/ipmi2xml/README.txt diff --git a/pandora_agents/tools/ipmi2xml/ipmi2xml.txt b/pandora_agents/linux/plugins/ipmi2xml/ipmi2xml.txt similarity index 100% rename from pandora_agents/tools/ipmi2xml/ipmi2xml.txt rename to pandora_agents/linux/plugins/ipmi2xml/ipmi2xml.txt diff --git a/pandora_agents/mac_osx/pandora_agent.conf b/pandora_agents/mac_osx/pandora_agent.conf index f785823c58..78b40b09dd 100755 --- a/pandora_agents/mac_osx/pandora_agent.conf +++ b/pandora_agents/mac_osx/pandora_agent.conf @@ -8,30 +8,30 @@ # General Parameters # ================== -server_ip localhost -server_path /var/spool/pandora/data_in -temporal /var/spool/pandora/data_out -logfile /var/log/pandora/pandora_agent.log +server_ip localhost +server_path /var/spool/pandora/data_in +temporal /var/spool/pandora/data_out +logfile /var/log/pandora/pandora_agent.log # Interval in seconds, 300 by default -interval 300 +interval 300 # Debug mode only generate XML, and stop after first execution, # and does not copy XML to server. -debug 1 +debug 0 # By default, agent takes machine name #agent_name adama # By default agent try to take default encoding defined in host. -# encoding iso-8859-15 +# encoding iso-8859-15 # Listening TCP port for remote server. By default is 41121 (for tentacle) # if you want to use SSH use 22, and FTP uses 21. -server_port 41121 +server_port 41121 # Transfer mode: tentacle, ftp, ssh or local -transfer_mode tentacle +transfer_mode local # Server password (Tentacle or FTP). Leave empty for no password (default). # server_pwd mypassword @@ -57,14 +57,15 @@ transfer_mode tentacle # cron_mode # If set to 1 allows the agent to be configured via the web console. -# remote_config 0 +remote_config 1 + # Module Definition # ================= -# System information for clients +# System information -module_begin +module_begin module_name CPU (User) module_type generic_data module_interval 1 @@ -74,7 +75,7 @@ module_min 0 module_descripcion User CPU Usage (%) module_end -module_begin +module_begin module_name CPU (System) module_type generic_data module_exec iostat -C | tail -1 | awk '{ print $11 }' @@ -83,8 +84,8 @@ module_min 0 module_description System CPU Usage (%) module_end -module_begin -module_name Disk Space on / (Available) +module_begin +module_name Disk Space on / (Available) module_type generic_data module_exec df -kh / | tail -1 | awk '{ print 100-$5 }' module_max 100 @@ -92,17 +93,35 @@ module_min 0 module_description Free disk Percentage of root partition module_end +module_begin +module_name Disk Space on /Volumes/Backup (Available) +module_type generic_data +module_exec df -kh /Volumes/Backup | tail -1 | awk '{ print 100-$5 }' +module_max 100 +module_min 0 +module_description Free disk Percentage of /Volumes/Backup partition +module_end + +module_begin +module_name Disk Space on /Volumes/Backup-MJ (Available) +module_type generic_data +module_exec df -kh /Volumes/Backup-MJ | tail -1 | awk '{ print 100-$5 }' +module_max 100 +module_min 0 +module_description Free disk Percentage of /Volumes/Backup-MJ partition +module_end + module_begin module_name Physical Memory (Total) module_type generic_data -module_exec sysctl -n hw.memsize -module_description Used Physical Memory +module_exec sysctl -n hw.physmem +module_description Total Physical Memory module_end module_begin module_name Physical Memory (Used) module_type generic_data -module_exec top -l 1 | grep PhysMem | awk '{gsub("M","",$8)} {print $8}' +module_exec sysctl -n hw.usermem module_description Used Physical Memory module_end @@ -113,41 +132,7 @@ module_exec ps -A | wc -l module_description Total Number of Processes module_end -# Hardware information - -module_begin -module_name CPUs (Number) -module_type generic_data -module_exec sysctl -n hw.ncpu -module_max 8 -module_min 1 -module_description Number of Processors -module_end - -module_begin -module_name Architecture -module_type generic_data_string -module_exec arch -module_description Architecture -module_end - -# Informational stuff - -module_begin -module_name Syslog (Last string) -module_type generic_data_string -module_exec tail -1 /var/log/system.log -module_description Last line of syslog -module_end - -module_begin -module_name Login (Last) -module_type generic_data_string -module_exec last | head -1 -module_description Last connected to system -module_end - -# Networking +# Networking module_begin module_name Network Packets (Incoming) @@ -170,6 +155,13 @@ module_exec netstat -as | grep "bad reset" | awk '{ print $1 }' module_description Bad Resets module_end +module_begin +module_name Network Adapter bond0 IPv4 Address +module_type generic_data_string +module_exec ifconfig bond0 | grep "inet " | awk '{ print $2 }' +module_description IP Address Interface 1 +module_end + module_begin module_name Network Adapter en0 Status module_type generic_proc @@ -177,21 +169,24 @@ module_exec ifconfig en0 | grep status | awk '{ if($6=="active") { print 1}; if( module_description Ethernet Link 0 module_end -# You should have alerts in case the number of rules change +module_begin +module_name Network Adapter en1 Status +module_type generic_proc +module_exec ifconfig en1 | grep status | awk '{ if($6=="active") { print 1}; if($6!="active") {print 0}}' +module_description Ethernet Link 1 +module_end -#module_begin -#module_name Firewall Status -#module_type generic_data -#module_exec ipfw show | wc -l -#module_description Firewall (number of rules) -#module_end +module_begin +module_name Network Adapter bond0 Status +module_type generic_proc +module_exec ifconfig bond0 | grep status | awk '{ if($6=="active") { print 1}; if($6!="active") {print 0}}' +module_description Ethernet Bond 0 +module_end -####################################################################### -# # -# The following is for use if you have services (or a server) running # -# This works for most services both in Leopard and Tiger # -# # -####################################################################### + +# ======================== +# Services +# ======================= ## Uncomment/Comment as you go @@ -223,12 +218,22 @@ module_end #module_description DHCP & BOOTP server #module_end -#module_begin -#module_name DNS -#module_type generic_proc -#module_exec ps auxw | grep "sbin\/named" | wc -l -#module_description DNS Server -#module_end +module_begin +module_name DNS +module_type generic_proc +module_exec ps aux | grep "sbin\/named" | wc -l +module_description DNS Server +module_end + +# Firewall always has 1 rule (allow) so we substract one. +# You should have alerts in case the number of rules change + +module_begin +module_name Firewall Status +module_type generic_data +module_exec echo `sudo ipfw show | wc -l` - 1 | bc +module_description Firewall (number of rules) +module_end #module_begin #module_name FTP @@ -247,14 +252,14 @@ module_end #module_begin #module_name Mail (SMTP) #module_type generic_proc -#module_exec ps -axu | grep "postfix" | grep -v "grep" | wc -l +#module_exec ps -A | grep "master" | grep -v "grep" | wc -l #module_description Mail - SMTP Server (postfix) #module_end #module_begin #module_name Mail (IMAP) #module_type generic_proc -#module_exec ps -axu | grep "master" | grep "cyrus" | grep -v "grep" | wc -l +#module_exec ps -A | grep "cyrus" | grep -v "grep" | wc -l #module_description Mail - IMAP Server (cyrus) #module_end @@ -279,6 +284,7 @@ module_end #module_description Mail - Mailing Lists (mailman) #module_end + #module_begin #module_name NAT #module_type generic_proc @@ -287,19 +293,26 @@ module_end #module_end #module_begin -#module_name NFS +#module_name NetBoot #module_type generic_proc -#module_exec ps auxw | grep "nfsd-master" | grep -v "grep" | wc -l -#module_description NFS File Server +#module_exec echo 0 +#module_description NetBoot #module_end #module_begin -#module_name Open Directory +#module_name NFS #module_type generic_proc -#module_exec ps auxw | grep "krb5kdc" | grep -v "grep" | wc -l -#module_description Open Directory +#module_exec ps aux | grep "nfsd-master" | grep -v "grep" | wc -l +#module_description NFS File Server #module_end +module_begin +module_name Open Directory +module_type generic_proc +module_exec ps aux | grep "bin\/krb5kdc" | wc -l +module_description Open Directory +module_end + #module_begin #module_name Print #module_type generic_proc @@ -314,12 +327,12 @@ module_end #module_description QT Streaming Service #module_end -#module_begin -#module_name Software Update -#module_type generic_proc -#module_exec if [ `ps -A | grep "etc\/swupd" | wc -l` -gt "1" ]; then echo 1; else echo 0; fi -#module_description Software Update -#module_end +module_begin +module_name Software Update +module_type generic_proc +module_exec if [ `ps -A | grep "etc\/swupd" | wc -l` -gt "1" ]; then echo 1; else echo 0; fi +module_description Software Update +module_end #module_begin #module_name VPN @@ -356,5 +369,5 @@ module_end #module_description XGrid #module_end -# Plugin example (new in Pandora 2.0) -module_plugin grep_log /var/log/syslog Syslog ssh +# Plugin Section # +module_plugin ppc_sensors diff --git a/pandora_agents/mac_osx/plugins/XServeRAID/README.txt b/pandora_agents/mac_osx/plugins/XServeRAID/README.txt new file mode 100644 index 0000000000..c3212d1ad8 --- /dev/null +++ b/pandora_agents/mac_osx/plugins/XServeRAID/README.txt @@ -0,0 +1,9 @@ +Pandora XServe RAID agent configuration + +This only contains the files and tools required to monitor the status of an XServe RAID. It uses a package I found on alienRAID for this purpose. + +The monitoring packages (xserve-raid-tools-1.2.*) also include Nagios plugins. + +The pandora_agent.conf has all the configuration modules for each part of an XServe RAID (every single drive module can be monitored). + +For the agent itself, you'll have to use or clone a Mac, Unix or Linux client and overwrite the configuration with this one. I tested this and it's running on Mac OS X 10.4 and 10.5 in my environment. \ No newline at end of file diff --git a/pandora_agents/mac_osx/plugins/XServeRAID/check_xserve b/pandora_agents/mac_osx/plugins/XServeRAID/check_xserve new file mode 100755 index 0000000000..43d33466f8 --- /dev/null +++ b/pandora_agents/mac_osx/plugins/XServeRAID/check_xserve @@ -0,0 +1,3 @@ +#!/bin/sh +/usr/local/bin/check_xserve_raid --address 0.0.0.0 --debug --debug > /private/var/root/xserve-status +cat /private/var/root/xserve-status | grep "lhs.array1 optimal, rhs.array1 optimal" | wc -l diff --git a/pandora_agents/mac_osx/plugins/XServeRAID/pandora_agent.conf b/pandora_agents/mac_osx/plugins/XServeRAID/pandora_agent.conf new file mode 100644 index 0000000000..885f1b3e4a --- /dev/null +++ b/pandora_agents/mac_osx/plugins/XServeRAID/pandora_agent.conf @@ -0,0 +1,239 @@ +# Base config file for Pandora FMS agents +# Version 1.2 +# Licensed under GPL license v2, +# (c) 2003-2007 Sancho Lerena and others. +# please visit http://pandora.sourceforge.net + +# General Parameters +# ================== + +server_ip skull +server_path /var/spool/pandora/data_in +temporal /var/spool/pandora-xserve/data_out +logfile /var/log/pandora/pandora_agent-xserve.log + +# Interval in seconds, 300 by default +interval 300 + +# Debug mode only generate XML, and stop after first execution, +# and does not copy XML to server. +debug 0 + +# By default is activated +checksum 0 + +# By default, agent takes machine name +agent_name XServe-RAID-1 + +# By default agent try to take default encoding defined in host. +# encoding iso-8859-15 + +# By default is 22 (for ssh) +#server_port 22 + +# ftp, ssh or local +transfer_mode ssh + +# delayed_startup defines number of MINUTES before start execution +# for first time when startup Pandora Agent + +#delayed_startup 90 + +#Pandora nice defines priority of execution. Less priority means more intensive execution +#A recommended value is 10. 0 priority means no Pandora CPU protection enabled +#pandora_nice 0 + + +# Module Definition +# ================= + +# System information + +module_begin +module_name XServe Health +module_type generic_proc +module_exec /rcbiUsers/pandora/check_xserve +module_end + +module_begin +module_name Left Array RAID Status +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "lhs.array1 raid-status is" | awk '{ if ($8=="online"){ print 1 }; if ($8!="online") {print 0};}' +module_descripcion Left hand (Top) Array RAID Status +module_end + +module_begin +module_name Right Array RAID Status +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "rhs.array1 raid-status is" | awk '{ if ($8=="online"){ print 1 }; if ($8!="online") {print 0};}' +module_descripcion Right hand (Bottom) Array RAID Status +module_end + +module_begin +module_name Left Array Sector Capacity +module_type generic_data_inc +module_exec cat /private/var/root/xserve-status | grep "lhs.array1 sector-capacity is" | awk '{ print $8}' +module_descripcion Left hand (Top) Array Sector Capacity +module_end + +module_begin +module_name Right Array Sector Capacity +module_type generic_data_inc +module_exec cat /private/var/root/xserve-status | grep "rhs.array1 sector-capacity is" | awk '{ print $8}' +module_descripcion Right hand (Bottom) Array Sector Capacity +module_end + +module_begin +module_name Left Array UPS Warning +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep -A 1 --max-count=1 "ups-warning" | grep "" | wc -l +module_descripcion Left hand (Top) Array UPS Warning +module_end + +module_begin +module_name Right Array UPS Warning +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep -A 1 "ups-warning" | grep -A 2 "\-\-" | grep "" | wc -l +module_descripcion Right hand (Bottom) Array UPS Warning +module_end + +module_begin +module_name Left Array Battery Status +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep -A 1 --max-count=1 "battery-status" | grep "present" | wc -l +module_descripcion Left hand (Top) Array Battery Status +module_end + +module_begin +module_name Right Array Battery Status +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep -A 1 "battery-status" | grep -A 2 "\-\-" | grep "present" | wc -l +module_descripcion Right hand (Bottom) Array Battery Status +module_end + +module_begin +module_name Left Array Fan Warning +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep -A 1 --max-count=1 "fan-warning" | grep "" | wc -l +module_descripcion Left hand (Top) Array Fan Warning +module_end + +module_begin +module_name Right Array Fan Warning +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep -A 1 "fan-warning" | grep -A 2 "\-\-" | grep "" | wc -l +module_descripcion Right hand (Bottom) Array Fan Warning +module_end + +module_begin +module_name Left Array Power Warning +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep -A 1 --max-count=1 "power-warning" | grep "" | wc -l +module_descripcion Left hand (Top) Array Power Warning +module_end + +module_begin +module_name Right Array Power Warning +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep -A 1 "power-warning" | grep -A 2 "\-\-" | grep "" | wc -l +module_descripcion Right hand (Bottom) Array Power Warning +module_end + +module_begin +module_name Left Array Slot 1 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "lhs.slot1 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Left hand (Top) Array Slot 1 Status +module_end + +module_begin +module_name Left Array Slot 2 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "lhs.slot2 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Left hand (Top) Array Slot 2 Status +module_end + +module_begin +module_name Left Array Slot 3 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "lhs.slot3 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Left hand (Top) Array Slot 3 Status +module_end + +module_begin +module_name Left Array Slot 4 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "lhs.slot4 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Left hand (Top) Array Slot 4 Status +module_end + +module_begin +module_name Left Array Slot 5 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "lhs.slot5 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Left hand (Top) Array Slot 5 Status +module_end + +module_begin +module_name Left Array Slot 6 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "lhs.slot6 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Left hand (Top) Array Slot 6 Status +module_end + +module_begin +module_name Left Array Slot 7 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "lhs.slot7 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Left hand (Top) Array Slot 7 Status +module_end + +module_begin +module_name Right Array Slot 1 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "rhs.slot1 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Right hand (Bottom) Array Slot 1 Status +module_end + +module_begin +module_name Right Array Slot 2 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "rhs.slot2 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Right hand (Bottom) Array Slot 2 Status +module_end + +module_begin +module_name Right Array Slot 3 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "rhs.slot3 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Right hand (Bottom) Array Slot 3 Status +module_end + +module_begin +module_name Right Array Slot 4 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "rhs.slot4 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Right hand (Bottom) Array Slot 4 Status +module_end + +module_begin +module_name Right Array Slot 5 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "rhs.slot5 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Right hand (Bottom) Array Slot 5 Status +module_end + +module_begin +module_name Right Array Slot 6 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "rhs.slot6 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Right hand (Bottom) Array Slot 6 Status +module_end + +module_begin +module_name Right Array Slot 7 +module_type generic_proc +module_exec cat /private/var/root/xserve-status | grep "rhs.slot7 is" | awk '{ if ($7$8=="notrebuilding"){ print 1 }; if ($7$8!="notrebuilding") {print 0};}' +module_descripcion Right hand (Bottom) Array Slot 7 Status +module_end + diff --git a/pandora_agents/mac_osx/plugins/XServeRAID/xserve-raid-tools-1.2-1.rhel3.i386.rpm b/pandora_agents/mac_osx/plugins/XServeRAID/xserve-raid-tools-1.2-1.rhel3.i386.rpm new file mode 100644 index 0000000000000000000000000000000000000000..7741d43917661d86077f114c8f0a0c0380a86637 GIT binary patch literal 13648 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 literal 0 HcmV?d00001 diff --git a/pandora_agents/mac_osx/plugins/XServeRAID/xserve-raid-tools-1.2-1.uwhep.sl4.i386.rpm b/pandora_agents/mac_osx/plugins/XServeRAID/xserve-raid-tools-1.2-1.uwhep.sl4.i386.rpm new file mode 100644 index 0000000000000000000000000000000000000000..81a1eefcca40ecb37f8e47fbf6406f05b7295bad GIT binary patch literal 13473 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 z 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 Cy8Cbd literal 0 HcmV?d00001 diff --git a/pandora_agents/mac_osx/plugins/ipmi2xml/README.txt b/pandora_agents/mac_osx/plugins/ipmi2xml/README.txt new file mode 100644 index 0000000000..c938032e4e --- /dev/null +++ b/pandora_agents/mac_osx/plugins/ipmi2xml/README.txt @@ -0,0 +1,8 @@ +This is a simple script that could be called from within pandora_user.conf +It will call an IPMI-capable host (IP-address) and acquire it's sensors, then parse them into an understandable XML file for Pandora FMS. + +Make sure you set up a the correct name for the agent configuration if the monitoring is done from another host than the one the IPMI chip is located at. + +This script might not work and has only been tested so far against an Intel-based Apple XServe but the script is built up so it should acquire any. + +ipmitool and php (tested 5, 4 should work too) is required on the machine the agent is running on. \ No newline at end of file diff --git a/pandora_agents/mac_osx/plugins/ipmi2xml/ipmi2xml.txt b/pandora_agents/mac_osx/plugins/ipmi2xml/ipmi2xml.txt new file mode 100644 index 0000000000..3d39741a3c --- /dev/null +++ b/pandora_agents/mac_osx/plugins/ipmi2xml/ipmi2xml.txt @@ -0,0 +1,147 @@ +#!/usr/bin/php +28.5DRIVE BAYgeneric_data +*/ +$array = explode("\n",$output['chassis']); +foreach ($array as $value) { + if($value != "") { + $tmp = explode(":",$value); + $status[trim($tmp[0])] = trim($tmp[1]); + } +} +unset($array); +unset($tmp); + +foreach ($status as $name => $data) { + switch($name) { + case "Power Interlock": + case "Last Power Event": + case "System Power": + case "Power Restore Policy": + break; + case "Power Overload": + case "Main Power Fault": + case "Power Control Fault": + case "Drive Fault": + case "Cooling/Fan Fault": + $data_out = ($data="false" ? "1" : "0"); + case "Front Panel Light": + $data_out = ($data="off" ? "1" : "0"); + echo "" . $name . "" . $data_out . "generic_proc"; + } +} +unset($status); +//End of Chassis + +//Begin of Sensor +$array = explode("\n\n",$output['sensor']); +foreach ($array as $value) { + if($value != "") { + $tmp[] = explode("\n",$value); + } +} + +foreach ($tmp as $value_arr) { + foreach ($value_arr as $value) { + if($value != "") { + $tmp2 = explode(":",$value); + $status[trim($tmp2[0])] = trim($tmp2[1]); + } + } + unset($value_arr); + unset($tmp2); + +/* Sample $status array + [Sensor ID] => 'PSU1 Fan Out' (0x3c) + [Entity ID] => 10.1 + [Sensor Type (Analog)] => Fan + [Sensor Reading] => 6784 (+/- 0) RPM + [Status] => ok + [Lower Non-Recoverable] => na + [Lower Critical] => na + [Lower Non-Critical] => 1024.000 + [Upper Non-Critical] => 18048.000 + [Upper Critical] => na + [Upper Non-Recoverable] => na + [Assertion Events] => + [Assertions Enabled] => lnc- lnc+ unc- unc+ + [Deassertions Enabled] => lnc- lnc+ unc- unc+ +*/ + + //Get the name without references + $name_tmp = explode("'",$status["Sensor ID"]); + +/* //Get the Sensor Type + if(array_key_exists("Sensor Type (Analog)",$status)) { + $status["type"] = $status["Sensor Type (Analog)"]; + } elseif(array_key_exists("Sensor Type (Discrete)",$status)) { + $status["type"] = $status["Sensor Type (Discrete)"]; + } else { + echo "Unhandled Sensor Type"; + print_r($status); + die(); + } +*/ + + $data_tmp = explode(" ",$status["Sensor Reading"]); + +if($data_tmp[3]) { + $name = $name_tmp[1] . " (" . $data_tmp[3] . ($data_tmp[4] ? " " . $data_tmp[4] : "" ) . ")"; + echo "\n" . $name . ""; + if($status["Lower Non-Critical"] != "na") { + $min = "" . $status["Lower Non-Critical"] . ""; + } + if($status["Upper Non-Critical"] != "na") { + $max = "" . $status["Upper Non-Critical"] . ""; + } + if($status["Lower Critical"] != "na") { + $min = "" . $status["Lower Critical"] . ""; + } + if($status["Upper Critical"] != "na") { + $max = "" . $status["Upper Critical"] . ""; + } + echo $min . $max . "" . $data_tmp[0] . "generic_data"; +} + + +//$data_out = ($data="false" ? "1" : "0"); +//$data_out = ($data="off" ? "1" : "0"); + + unset($status); +} + +//End of Sensor + +?> diff --git a/pandora_agents/mac_osx/pandora_user.conf b/pandora_agents/mac_osx/plugins/ppc_sensors similarity index 100% rename from pandora_agents/mac_osx/pandora_user.conf rename to pandora_agents/mac_osx/plugins/ppc_sensors diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index c70f85a95b..c27d967d5c 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -28,31 +28,51 @@ then echo " " echo " $ yum perl-XML-SAX* perl-Tie* perl-XML-Simple* perl-DateManip* perl-IO-Socket* perl-Time-modules* perl-NetAddr-IP* perl-GD* perl-DateTime* perl-ExtUtils" echo " " - echo " $ cpan install Digest::MD5 Time::Local DBI threads threads::shared IO::Socket Time::HiRes Time::Format Net::Ping NetAddr::IP " + echo "To get it from source through CPAN do" + echo " " + echo " $ cpan Digest::MD5 Time::Local DBI threads threads::shared IO::Socket Time::HiRes Time::Format Net::Ping NetAddr::IP Mail::Sendmail Net::Traceroute::PurePerl" + echo " " rm output else make make install mkdir /var/spool/pandora mkdir /var/spool/pandora/data_in - useradd pandora - mkdir /home/pandora - mkdir /home/pandora/.ssh - chown -R pandora /home/pandora + id pandora + if [ $? -eq 0 ]; then + echo " " + echo "User pandora does exist, make sure the SSH directories are correct" + else + useradd pandora + mkdir /home/pandora + mkdir /home/pandora/.ssh + chown -R pandora /home/pandora + fi mkdir /var/log/pandora - chown pandora:root /var/spool/pandora/data_in + chown pandora:wheel /var/spool/pandora/data_in chmod 770 /var/spool/pandora/data_in mkdir /etc/pandora + if [ -e /etc/pandora/pandora_server.conf ]; then + echo "Old installation detected, backing up pandora_server.conf" + mv /etc/pandora/pandora_server.conf /etc/pandora/pandora_server.conf.bak + fi cp conf/pandora_server.conf /etc/pandora/ chmod 770 /etc/pandora/pandora_server.conf - cp pandora_* /etc/init.d/ - rm /etc/init.d/pandora_server_installer - ln -s /etc/init.d/pandora_server /etc/rc2.d/S90pandora_server - ln -s /etc/init.d/pandora_recon /etc/rc2.d/S90pandora_recon - ln -s /etc/init.d/pandora_network /etc/rc2.d/S90pandora_network - ln -s /etc/init.d/pandora_snmpconsole /etc/rc2.d/S90pandora_snmpconsole - ln -s /etc/init.d/pandora_plugin /etc/rc2.d/S90pandora_plugin - ln -s /etc/init.d/pandora_prediction /etc/rc2.d/S90pandora_prediction + if [ "`uname -s`" != "Linux" ]; then + echo "This is not a Linux-based distro. The installer will not create files for automatic startup." + echo "Copying the binaries into /usr/local/bin" + cp pandora_* /usr/local/bin + rm /usr/local/bin/pandora_server_installer + else + cp pandora_* /etc/init.d/ + rm /etc/init.d/pandora_server_installer + ln -s /etc/init.d/pandora_server /etc/rc2.d/S90pandora_server + ln -s /etc/init.d/pandora_recon /etc/rc2.d/S90pandora_recon + ln -s /etc/init.d/pandora_network /etc/rc2.d/S90pandora_network + ln -s /etc/init.d/pandora_snmpconsole /etc/rc2.d/S90pandora_snmpconsole + ln -s /etc/init.d/pandora_plugin /etc/rc2.d/S90pandora_plugin + ln -s /etc/init.d/pandora_prediction /etc/rc2.d/S90pandora_prediction + fi if [ -e /usr/local/bin/pandora_server ] then @@ -74,19 +94,33 @@ else mkdir /usr/share/pandora cp -R util /usr/share/pandora cp -R plugin /usr/share/pandora - echo "perl /usr/share/pandora/util/pandora_db /etc/pandora/pandora_server.conf" > /etc/cron.daily/pandora_purge_db - chmod +x /etc/cron.daily/pandora_purge_db + if [ -d /etc/cron.daily ] + then + echo "perl /usr/share/pandora/util/pandora_db /etc/pandora/pandora_server.conf" > /etc/cron.daily/pandora_purge_db + chmod +x /etc/cron.daily/pandora_purge_db + else + echo "You're probably not using cron for automatic scheduling. You should schedule the following command to run frequently (daily) on your master server:" + echo " perl /usr/share/pandora/util/pandora_db /etc/pandora/pandora_server.conf" + fi rm output fi } uninstall () { - echo "Removing Pandora Servers" + if [ "`uname -s`" != "Linux" ]; then + echo "This is not a Linux-based distro. Uninstaller is currently not working for your OS" + fi + echo "Removing Pandora Servers" rm -Rf /var/spool/pandora/data_in/ - rm -Rf /home/pandora/ - userdel pandora - rm -Rf /var/log/pandora/ + + echo "If the user Pandora is not being used for any other operations, please delete using the following commands:" + echo " userdel pandora" + echo " rm -Rf /home/pandora/" + ## Just to clarify here. Some people (like me) are using the pandora user for other purposes and/or using an LDAP-based user management + ## I would hate to have a script clear out this users' information without any notification + + rm -Rf /var/log/pandora/ rm -Rf /etc/pandora/pandora_server.conf rm -Rf /etc/init.d/pandora_server rm -Rf /etc/init.d/pandora_network