Pandora FMS Agent

We use the Pandora FMS as a monitoring system. It is pretty easy to get going and provides a low-cost network monitoring system comparable to Nagios.

The central server can poll clients and/or the clients can send data from agents to the central server. There are agents for Window and Unix. Out of the box the agent has a few settings like CPU and free memory but more machine specific values you need to roll your own scripts. This is actually really easy with a typical shell-script interface plus using the likes of awk to trim command line results to what you can graph.

Here are some examples that I have created and use,

FreeSWITCH

# Count of registrations
module_begin
module_name FSRegnsCount
module_type generic_data
module_exec  /usr/local/freeswitch/bin/fs_cli -x "show registrations count" | awk '{if (match($0,"total")) { printf("%d",$1);}}'
module_description FreeSWITCH registrations
module_end

# Count of calls
module_begin
module_name FSCallsCount
module_type generic_data
module_exec  /usr/local/freeswitch/bin/fs_cli -x "show calls count" | awk '{if (match($0,"total")) { printf("%d",$1);}}'
module_description FreeSWITCH calls
module_end

# Count of Channels
module_begin
module_name FSChansCount
module_type generic_data
module_exec  /usr/local/freeswitch/bin/fs_cli -x "show channels count" | awk '{if (match($0,"total")) { printf("%d",$1);}}'
module_description FreeSWITCH channels
module_end

# Count of gateways:
module_begin
module_name FSGatesCount
module_type generic_data
module_exec  /usr/local/freeswitch/bin/fs_cli -x "sofia status gateways" | awk '{if (match($0,"gateways:")) { printf("%d",$1);}}'
module_description FreeSWITCH gateways
module_end

Hard Disk Temperature

You need to install the hddtemp program. Adjust which drive/device you are after and if you want it in Celsius or Fahrenheit.

module_begin
 module_name hddtemp
 module_type generic_data
 module_exec /usr/sbin/hddtemp -n --unit=C /dev/sda
 module_description Hard Disk temperature (Deg C)
 module_end

CPU Temperature

This needs you to add the sensors program. The actual output from this is different for each CPU and chipset sensor so you need to tweak the awk command

module_begin
 module_name CPUTemp
 module_type generic_data
 module_exec sensors | awk '{if (match($0, "CPU Temperature")){printf("%d",$3);} }'
 module_description CPU temperature (Deg C)
 module_end