Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / plugins / network / ipfwcnt_ @ dd4afac8

Historique | Voir | Annoter | Télécharger (2,32 ko)

1 2f76334c Alexey Illarionov
#!/bin/sh
2
#
3
# Copyright (C) 2009 Alexey Illarionov <littlesavage@rambler.ru>
4
#
5
# Wildcard plugin to monitor ipfw rules counters 
6
# Usage:
7
#
8
# Method 1:
9
# 
10
# Link ipfwcnt_<rule number> to this file. E.g.
11
#
12
#  ln -s ipfwcnt_ ipfwcnt_100
13
#
14
# ... will monitror ipfw rule 100
15
#
16
# Method 2:
17
#
18
# 1. Add count rules to ipfw E.g.
19
#
20
#   ipfw add 100 count ip from any to table(1,0) in via rl0
21
#   ipfw add 200 count ip from any to table(1,1) in via rl0
22
#   ipfw add 300 count ip from any to table(1,2) in via rl0
23
#   ipfw add 400 count ip from any to not table(1) in via rl0
24
#
25
# 2. Link ipfwcnt_<name> to this file. E.g.
26
#   ln -s ipfwcnt_ ipfwcnt_rl0-in
27
#
28
# 3. Add rules configuration to plugins.conf:
29
# [ipfwcnt_rl0-in]
30
# user root
31
# env rules		  group0 group1 group2 nogroup
32
# env rule_group0	  100
33
# env rule_group0_label   group0
34
# env rule_group0_info    Incoming traffic of group 0
35
# env rule_group1	  200
36
# env rule_group1_label   group1
37
# env rule_group1_info    Incoming traffic of group 1
38
# env rule_group2	  300
39
# env rule_group2_label   group2
40
# env rule_group2_info    Incoming traffic of group 2
41
# env rule_nogroup	  400
42
# env rule_nogroup_label  nogroup
43
# env rule_nogroup_info   Incoming traffic of no group
44
#
45
# ...  will monitor ipfw rules 100,200,300,400
46
#
47
# This plugin needs to be run as root.
48
#
49
# Magic markers (optional - used by munin-config and some installation
50
# scripts):
51
#
52
#%# family=manual
53
54
NAME=`basename $0 | sed 's/^ipfwcnt_//g'`
55
56
if [ -z "$rules" ]; then
57
	if [ -z "$NAME" ]; then exit 1; fi
58
	rules="r$NAME"
59
	eval "rule_r$NAME=$NAME"
60
fi
61
62
if [ "$1" = "config" ]; then
63
	echo "graph_title Ipfw rules counters $NAME"
64
	echo 'graph_args --base 1000 -l 0'
65
	echo 'graph_vlabel bits / ${graph_period}'
66
	echo 'graph_category network'
67
	draw="AREA"
68
	for rule in $rules; do
69
		eval "label0=\$rule_${rule}_label"
70
		eval "info0=\$rule_${rule}_info"
71
		label=${label0:-$rule}
72
		info=${info0:-$rule}
73
74
		echo "$rule.label $label"
75
		echo "$rule.draw $draw"
76
		echo "$rule.type DERIVE"
77
		echo "$rule.min 0"
78
		echo "$rule.cdef $rule,8,*"
79
		echo "$rule.info $info"
80
81
		draw="STACK"
82
	done
83
84
	echo "graph_info Ipfw rules counters $NAME"
85
	exit 0
86
fi
87
88
for rule in $rules; do
89
	eval "num=\$rule_$rule"
90
	if [ -z $(echo "$num" | sed 's/[0-9]//g') ]; then
91
		val0=$(/sbin/ipfw show $num 2>/dev/null | awk '{res+=$3;} END{print res;}')
92
	fi
93
	val=${val0:-"U"}
94
	echo "$rule.value $val"
95
done