|
Меню
Статьи
Статистика
|
Хостов сегодня: 10 Хитов сегодня: 37 Статей: 29 |
Хочу найти свадебные платья продам здесь. |
Проверка каналаНачальство захотело знать качество внешнего канала с более-менее подробной статистикой. Сколько потерь до первого шлюза, ya.ru за определенный промежуток времени. Решил поднять для начала на домашнем компутере, посмотреть как оно будет работать и будет ли вообще :)
Скрипт будет пинговать заданный адрес 30ю пакетами каждую минуту, а результаты складировать в базу mysql. Рисовать решил на perl, всё таки он побыстрее простого sh должен быть. Выполняться будет по крону каждую минуту. Структуру базы пока не особо продумал, в частности типы полей, но пока работает. Оптимизацией попозже займусь.
А имея заполненную БД, можно уже нарисовать веб-морду например. Или графики к кактусу. Графики мне больше нравятся, ибо визуально сразу видно когда падало, а с веб-мордой еще задавать входящие параметры, ждать результат обработки запросов...муторно вощем. Разве что показать статистику насяльнику, не залазяя в сам mysql :)
Вообщем вот мой скриптик
#!/usr/bin/perl #ping statistics for our inet-canals #ver 0.01 by maf
#date vars $year=`date '+%Y'`; $year=substr($year,0,4); $month=`date '+%m'`; $month=substr($month,0,2); $day=`date '+%d'`; $day=substr($day,0,2); $hour=`date '+%H'`; $hour=substr($hour,0,2); $minute=`date '+%M'`; $minute=substr($minute,0,2); $sec=`date '+%S'`; $sec=substr($sec,0,2); #vars $lockfile="/tmp/lockfile.gw_".$year."_".$month."_".$day."_".$hour."_".$minute; $tmp="/tmp/tmp.gw_".$year."_".$month."_".$day."_".$hour."_".$minute."_".$sec; $dt=$year . "-" . $month . "-" . $day . " " . $hour . ":" . $minute . ":" . $sec; #---db settings--- $host='localhost'; $user='pingpong'; $pass='pass4ping'; $db='ping'; $table='ping_ya'; #---ping properities--- $quan='30'; #quantity $inet_host='ya.ru'; if(-e "$lockfile") { print "$lockfile is already exist, check it. I'm quit."; exit(); } `touch $lockfile`; use Mysql; use Time::localtime; $year=localtime->year() + 1900; $dbc = Mysql->Connect($host,$db,$user,$pass); if($dbc) { $sql="CREATE TABLE IF NOT EXISTS `ping_ya_" . $year . "_" .$month . "` \ (`id` INT(16) NOT NULL auto_increment, `transm_pck` smallint(2) NOT NULL, `recieve_pck` smallint(2) NOT NULL, `avg` char(5) NOT NULL, `loss` char(4) NOT NULL, `date` DATETIME NOT NULL, PRIMARY KEY(`id`)) ENGINE=MyISAM"; } else { print "Could not connect to databse!"; } $dbc->Query("$sql"); `ping -t $quan -q $inet_host > $tmp`; open(png, "cat $tmp | grep -e loss|") or die || "cannot get $tmp"; while() { ($p1, $p2, $p3, $p4, $p5, $p6, $p7, $p8, $p9) = split(' '); $p7 =~ s/%//g; } open(pckts, "cat $tmp | grep -e round-trip|"); while() { ($s1, $s2, $s3, $s4, $s5, $s6, $s7) = split ('/'); } $query="INSERT INTO `ping_ya_" . $year . "_" . $month . "` (`transm_pck`, `recieve_pck`, `avg`, `loss`, `date`) VALUES('" . $p1 . "', '" . $p4 . "','" . $s5 . "','" . $p7 . "','" . $dt . "')"; $dbc->Query("$query") or die $Mysql::db_errstr; `rm $lockfile`; `rm $tmp`; |
Первый запуск скрипт создает табличкуи начинает собирать стату. В базе будет время отклика, % потерь.
Выглядит конечно сыровато, но работает. Дорабатывать буду потом.
Добавлено: 2009-07-21 Просмотров: 489 Источник: www.unixnotes.ru
 |
|
Новое:
microdc2 консольный клиент DC++ Потребовалось раздавать юзерам сети контент с фтп сервака не только с помощью самого ftp сервера, но и через DC++ протокол. Added: 2009-08-25
FreeBSD net-snmpd Очень много возможностей Cacti работают только при работающем демоне SNMP. Загрузка сетевых карт, мониторинг дискового пространства, загруженность процессора/памяти и много Added: 2009-08-13
Копирование файла с фтп Начались проблемы с нехваткой места на биллинг сервере. Раньше все бекапы хранились на нём же, просто на другом диске. Основное Added: 2009-08-08
|