#!/bin/bash
COLLECTD_HOSTNAME=gs.managed.blueberry.cz

HOSTNAME="${COLLECTD_HOSTNAME:-`hostname -f`}"
INTERVAL="${COLLECTD_INTERVAL:-`sed -n 's/^ *Interval *\(.*\)$/\1/p' /etc/collectd.conf`}"

while sleep "$INTERVAL"; do
  for PROCESS in apache2 mysqld; do
    VALUE=`lsof -nPF0 -S 3 -c $PROCESS | awk -F\0 '/^f/ {f+=1} /TCP/ {t+=1} /UDP/ {u+=1} END {print f" "t" "u}'`
    COUNT=0
    for SUBVAL in $VALUE; do
      case $COUNT in
        0) TYPE="file"
           ;;
        1) TYPE="TCP"
           ;;
        2) TYPE="UDP"
           ;;
      esac
      echo "PUTVAL \"$HOSTNAME/lsof-$PROCESS/gauge-$TYPE\" interval=$INTERVAL N:$SUBVAL"
      COUNT=$((($COUNT+1)%3))
    done
  done
done | nc -U /var/run/collectd/collectd-unixsock > /dev/null