* [Comm] mrtg iptables script (was: хочу знать что творится с каналами связи)
2005-12-03 9:02 [Comm] хочу знать что творится с каналами связи PEGAS TOUR - DMITRIY
@ 2005-12-04 15:47 ` Michael Shigorin
2005-12-05 11:48 ` Nick S. Grechukh
0 siblings, 1 reply; 4+ messages in thread
From: Michael Shigorin @ 2005-12-04 15:47 UTC (permalink / raw)
To: ALT Linux Community; +Cc: abulava
[-- Attachment #1.1: Type: text/plain, Size: 1003 bytes --]
On Sat, Dec 03, 2005 at 02:02:27PM +0500, PEGAS TOUR - DMITRIY wrote:
> пользуюсь ifconfig, mailq, route =) хотелось бы видеть загрузку
> каналов - можно не в реальном времени. (люблю всякие графики =)
> статистику по тому кто куда и что. К каким программным
> продуктам обратиться?
mrtg -- графики, iftop, ifstat, ntop, dstat -- в реальном времени.
Для mrtg потребуется нарисовать и подцепить (например, через
iptables) сенсор, ну или поднимать локальный snmpd и снимать
по интерфейсам (как по мне -- оверкилл).
Цепляю работающий вариант сенсора для iptables, только смотреть
в него глазами при создании счётных цепочек в iptables (или
подгонке под существующие) практически гарантированно придётся;
впрочем, это не страшно. Зато гибко выходит.
2 abulava: я всё раскачивался этого потомка одной из двух
снималок с iptables из mrtg contrib/ в пакет добавить...
сделаешь? :)
--
---- WBR, Michael Shigorin <mike@altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
[-- Attachment #1.2: mrtg-traffic-internal.pl --]
[-- Type: text/plain, Size: 2776 bytes --]
#!/usr/bin/perl
# iptables-accounting .9
#
# Author: Vern Gill <vgill@technologist.com>
# Date: March 9, 2001
#
# Adapted from code used in ipchainacc
#
# ipchainacc 1.1.0
#
# Author: John Lange john@darkcore.net
# Date : September 12, 2000
#
#
# The command takes one argument:
# Argument: what filter do you want to view
# I.E. iptables-accounting filter
# iptables-accounting nat
#
# Also, you can check bytes or packets. Check the $bytec below
# and the text above it for details
#
# This command must return 4 lines of output:
# Line 1 : current state of the 'incoming bytes counter'
# Line 2 : current state of the 'outgoing bytes counter'
# Line 3 : string, telling the uptime of the target.
# Line 4 : string, telling the name of the target.
#
# To add more counters, just edit the commented out if lines
# below. For instance, to count the filter table and the
# INPUT chain, just change the elsif to filter, and the
# $inrule to INPUT
# Share and enjoy
# edit for your system
$iptables='/sbin/iptables'; # path to iptables
#$host=`/bin/hostname --fqdn`; # local hostname (for information only)
$table = $ARGV[0];
if ( $table =~ /^filter/i ) {
$inrule='FORWARD';
$outrule='OUTPUT';
} elsif ( $table =~ /^nat/i ) {
$inrule='PREROUTING';
$outrule='POSTROUTING';
} elsif ( $table =~ /^mangle/i ) {
$inrule='PREROUTING';
$outrule='OUTPUT';
#} elsif ( $table =~ /^table-name-here/i ) {
# $inrule='CHAIN-NAME-HERE';
# $outrule='OTHER-CHAIN-NAME';
#} elsif ( $table =~ /^table-name-here/i ) {
# $inrule='CHAIN-NAME-HERE';
# $outrule='OTHER-CHAIN-NAME';
}
# --- now override them
$table = 'filter';
$inrule = 'internal-in';
$outrule = 'internal-out';
# What should we graph? packet counters = 4, bytes = 6
# If you used the ipchainacc script before and you want to keep counting
# packets, then set this to 4. If you would rather do the
# sensible thing and count bytes, then set this to 6. If you change
# from one to the other, then you should delete all the previous
# history since it will be meaningless.
# 0 / 1
$bytec=1;
## -- don't edit below here ----
# fetch the status from iptables
$_=`$iptables -t $table -L $inrule -v -n -x | grep RETURN`;
@in_bytes = split;
$_=`$iptables -t $table -L $outrule -v -n -x | grep RETURN`;
@out_bytes = split;
# uptime of the machine
open(UPTIME,"uptime |");
$upTime=<UPTIME>;
close(UPTIME);
chop $upTime;
# example showing users number -- off, of course
#$upTime =~ s/^.*up ([0-9 a-z]+),( )+([0-9]+ user(s)?), .*$/\1 (\3)/;
$upTime =~ s/^.*up ([0-9:, a-z]+),( )+([0-9]+ user(s)?), .*$/\1/;
$host = 'ftp.linux.kiev.ua';
# 4 lines of output only.
printf "$in_bytes[$bytec]\n$out_bytes[$bytec]\n$upTime\n$host";
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread