Graphing kernel ip conntrack table
Client-side plugin for monitoring and graphing the number of ip conntrack connections.
Client-side installation:
Download and copy fw-conntrack.sh to xymon ext directory.
Create new file /etc/xymon/clientlaunch.d/fw-conntrack.cfg:
[fw-conntrack] #DISABLED ENVFILE $XYMONCLIENTHOME/etc/xymonclient.cfg CMD $XYMONCLIENTHOME/ext/fw-conntrack.sh LOGFILE $XYMONCLIENTLOGS/xymonclient.log INTERVAL 5m
Normally xymon user can not read the files in /proc/net/ and /proc/sys/net/ipv4/netfilter/
On my machines this files are read and written for xymon to ${XYMONTMP} by root from cron job "xymon-helper"
*/5 * * * * root /usr/bin/xymoncmd /usr/lib/xymon/ext-helper/xymon-fw-conntrack-helper
#!/bin/sh
# xymon-helper script for fw-conntrack.sh
# Avoid race condition when xymon-worker run:
while [ -e ${XYMONTMP}/fw-conntrack-worker.lock ]
do sleep 1
done
touch ${XYMONTMP}/fw-conntrack-helper.lock
trap "${RM} ${XYMONTMP}/fw-conntrack-helper.lock" 0 1 2 3 15
if [ -e /proc/sys/net/ipv4/netfilter/ip_conntrack_max ]
then
${CAT} /proc/sys/net/ipv4/netfilter/ip_conntrack_max > ${XYMONTMP}/ip_conntrack_max
else
${RM} -f ${XYMONTMP}/ip_conntrack_max
fi
if [ -e /proc/sys/net/ipv4/netfilter/ip_conntrack_count ]
then
${CAT} /proc/sys/net/ipv4/netfilter/ip_conntrack_count > ${XYMONTMP}/ip_conntrack_count
else
${RM} -f ${XYMONTMP}/ip_conntrack_count
fi
if [ -e /proc/net/ip_conntrack ]
then
${CAT} /proc/net/ip_conntrack > ${XYMONTMP}/ip_conntrack
else
${RM} -f ${XYMONTMP}/ip_conntrack
fi
Server-side installation:
Add "fw-conntrack=ncv" to TEST2RRD variable and "fw-conntrack" to GRAPHS variable in xymonserver.cfg.
Add new line "NCV_fw-conntrack="*:GAUGE" to xymonserver.cfg.
Create new file /etc/xymon/graphs.d/fw-conntrack.cfg:
[fw-conntrack]
TITLE Kernel conntrack table % used
YAXIS %
DEF:ctinuse=fw-conntrack.rrd:Conntrackinuse:AVERAGE
LINE2:ctinuse#003483:% in use\:
GPRINT:ctinuse:LAST:%6.3lf (cur)
GPRINT:ctinuse:MAX:\:%6.3lf (max)
GPRINT:ctinuse:MIN:\:%6.3lf (min)
GPRINT:ctinuse:AVERAGE:\:%6.3lf (avg)\n
-l 0
COMMENT:\n
[fw-conntrack1]
TITLE Kernel conntrack connects
YAXIS #
DEF:conns=fw-conntrack.rrd:connections:AVERAGE
DEF:tcp=fw-conntrack.rrd:tcp:AVERAGE
DEF:udp=fw-conntrack.rrd:udp:AVERAGE
DEF:icmp=fw-conntrack.rrd:icmp:AVERAGE
DEF:nated=fw-conntrack.rrd:nated:AVERAGE
DEF:assured=fw-conntrack.rrd:assured:AVERAGE
AREA:udp#00AA00:udp \:
GPRINT:udp:LAST:%6.0lf (cur)
GPRINT:udp:MAX: \: %6.0lf (max)
GPRINT:udp:MIN: \: %6.0lf (min)
GPRINT:udp:AVERAGE: \: %6.0lf (avg)\n
AREA:tcp#D80000:tcp \::STACK
GPRINT:tcp:LAST:%6.0lf (cur)
GPRINT:tcp:MAX: \: %6.0lf (max)
GPRINT:tcp:MIN: \: %6.0lf (min)
GPRINT:tcp:AVERAGE: \: %6.0lf (avg)\n
AREA:icmp#E0E000:icmp \::STACK
GPRINT:icmp:LAST:%6.0lf (cur)
GPRINT:icmp:MAX: \: %6.0lf (max)
GPRINT:icmp:MIN: \: %6.0lf (min)
GPRINT:icmp:AVERAGE: \: %6.0lf (avg)\n
LINE:assured#000000:assured\:
GPRINT:assured:LAST:%6.0lf (cur)
GPRINT:assured:MAX: \: %6.0lf (max)
GPRINT:assured:MIN: \: %6.0lf (min)
GPRINT:assured:AVERAGE: \: %6.0lf (avg)\n
LINE:nated#1F1F9B:nated \:
GPRINT:nated:LAST:%6.0lf (cur)
GPRINT:nated:MAX: \: %6.0lf (max)
GPRINT:nated:MIN: \: %6.0lf (min)
GPRINT:nated:AVERAGE: \: %6.0lf (avg)\n
-l 0
[fw-conntrack2]
TITLE Connections trough firewall
YAXIS #
DEF:established=fw-conntrack.rrd:established:AVERAGE
DEF:timewait=fw-conntrack.rrd:timewait:AVERAGE
DEF:finwait=fw-conntrack.rrd:finwait:AVERAGE
DEF:closewait=fw-conntrack.rrd:closewait:AVERAGE
DEF:close=fw-conntrack.rrd:close:AVERAGE
DEF:synsent=fw-conntrack.rrd:synsent:AVERAGE
DEF:synrecv=fw-conntrack.rrd:synrecv:AVERAGE
DEF:lastack=fw-conntrack.rrd:lastack:AVERAGE
DEF:udp=fw-conntrack.rrd:udp:AVERAGE
AREA:established#009B00:established \:
GPRINT:established:LAST:%5.0lf (cur)
GPRINT:established:MAX: \: %5.0lf (max)
GPRINT:established:MIN: \: %5.0lf (min)
GPRINT:established:AVERAGE: \: %5.0lf (avg)\n
AREA:finwait#0000FF:FIN_WAIT \::STACK
GPRINT:finwait:LAST:%5.0lf (cur)
GPRINT:finwait:MAX: \: %5.0lf (max)
GPRINT:finwait:MIN: \: %5.0lf (min)
GPRINT:finwait:AVERAGE: \: %5.0lf (avg)\n
AREA:timewait#A00000:TIME_WAIT \::STACK
GPRINT:timewait:LAST:%5.0lf (cur)
GPRINT:timewait:MAX: \: %5.0lf (max)
GPRINT:timewait:MIN: \: %5.0lf (min)
GPRINT:timewait:AVERAGE: \: %5.0lf (avg)\n
AREA:synsent#00AAAA:SYN_SENT \::STACK
GPRINT:synsent:LAST:%5.0lf (cur)
GPRINT:synsent:MAX: \: %5.0lf (max)
GPRINT:synsent:MIN: \: %5.0lf (min)
GPRINT:synsent:AVERAGE: \: %5.0lf (avg)\n
AREA:synrecv#FF8000:SYN_RECV \::STACK
GPRINT:synrecv:LAST:%5.0lf (cur)
GPRINT:synrecv:MAX: \: %5.0lf (max)
GPRINT:synrecv:MIN: \: %5.0lf (min)
GPRINT:synrecv:AVERAGE: \: %5.0lf (avg)\n
AREA:closewait#000000:CLOSE_WAIT \::STACK
GPRINT:closewait:LAST:%5.0lf (cur)
GPRINT:closewait:MAX: \: %5.0lf (max)
GPRINT:closewait:MIN: \: %5.0lf (min)
GPRINT:closewait:AVERAGE: \: %5.0lf (avg)\n
AREA:close#9F9F9F:CLOSE \::STACK
GPRINT:close:LAST:%5.0lf (cur)
GPRINT:close:MAX: \: %5.0lf (max)
GPRINT:close:MIN: \: %5.0lf (min)
GPRINT:close:AVERAGE: \: %5.0lf (avg)\n
AREA:lastack#000099:LAST_ACK \::STACK
GPRINT:lastack:LAST:%5.0lf (cur)
GPRINT:lastack:MAX: \: %5.0lf (max)
GPRINT:lastack:MIN: \: %5.0lf (min)
GPRINT:lastack:AVERAGE: \: %5.0lf (avg)\n
AREA:udp#FF00FF:UDP connections\::STACK
GPRINT:udp:LAST:%5.0lf (cur)
GPRINT:udp:MAX: \: %5.0lf (max)
GPRINT:udp:MIN: \: %5.0lf (min)
GPRINT:udp:AVERAGE: \: %5.0lf (avg)\n
[fw-conntrack-runtime]
TITLE FW-Conntrack own runtime
YAXIS Seconds
-l 0
DEF:runtime=fw-conntrack.rrd:runtime:AVERAGE
AREA:runtime#00CECD:runtime\:
GPRINT:runtime:LAST: \: %3.4lf (cur)
GPRINT:runtime:MAX: \: %3.4lf (max)
GPRINT:runtime:MIN: \: %3.4lf (min)
GPRINT:runtime:AVERAGE: \: %3.4lf (avg)\n
Restart xymon-server.
Define the subgraphs to include in the "trends" column in the host line or .default. line in hosts.cfg.
Example: include all defined subgraphs to trends:
TRENDS:*,fw-conntrack:fw-conntrack|fw-conntrack1|fw-conntrack2|fw-conntrack-runtime


