Журнал LinuxFormat - перейти на главную

LXF133:DrBrown3

Материал из Linuxformat
Версия от 10:08, 22 июля 2011; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Дым и зер­ка­ла

Вы­во­ди­те гра­фи­ки про­из­во­ди­тель­но­сти се­ти и сер­ви­сов и по­лу­чай­те пре­ду­пре­ж­де­ния SmokePing об ано­маль­ном по­ве­де­нии.

SmokePing – ути­ли­та по­строения гра­фи­ков се­те­вой ак­тив­ности, немно­го по­хо­жая на Mumin. Как и у Mumin, ар­хи­тек­ту­ра у нее мо­дуль­ная, что по­зво­ля­ет рас­ши­рить ее на­бор из­мерений до ог­ром­но­го. Как и Mumin, она пре­достав­ля­ет ре­зуль­та­ты в ви­де web-кон­тен­та, и что­бы доста­вить его в брау­зер, ну­жен web-сер­вер. И, как и Mumin, для генера­ции гра­фи­ков она ис­поль­зу­ет RRDTool, ути­ли­ту То­би Эти­ке­ра [Tobi Oetiker]. Но ес­ли Mumin из­меря­ет за­груз­ку и про­из­во­ди­тель­ность ком­пь­ю­те­ра, то SmokePing – се­те­вую ак­тив­ность.

SmokePing со­сто­ит из де­мо­на, вы­пол­няю­ще­го из­ме­рения, и CGI-скрип­та, ко­то­рый вы­да­ет гра­фи­ки. В от­ли­чие от Mumin, на ком­пь­ю­те­ры не нуж­но уста­нав­ли­вать ника­ких до­полнитель­ных про­грамм-аген­тов.

В мо­ем Ubuntu SmokePing за­ра­бо­та­ла сра­зу, хо­тя по умол­чанию она из­ме­ря­ет толь­ко за­держ­ки пин­га к localhost, а это не ув­ле­кательнее, чем на­блю­дение за подъ­е­мом опа­ры теста. На­строй­ка SmokePing за­клю­ча­ет­ся в оп­ре­де­лении Тестов [Probes] – ути­лит, из­ме­ряю­щих за­держ­ки, Це­лей [Targets] – про­ве­ряе­мых ком­пь­юте­ров, и Пре­ду­пре­ж­дений [Alerts] – усло­вий, при ко­то­рых вы буде­те пре­ду­пре­ж­де­ны об ано­маль­ном по­ве­дении. По хо­ду, мы увидим, что струк­ту­ра фай­ла config оп­ре­де­ля­ет ме­ню, по­яв­ляю­щее­ся на сай­те SmokePing.

Рас­смот­рим при­мер. Файл на­строй­ки верхнего уров­ня – /etc/smokeping/config. В Ubuntu он со­дер­жит лишь несколь­ко ди­рек­тив @include, под­клю­чаю­щих фай­лы из /etc/smokeping/config.d – тогда оп­ре­де­ления тестов, це­лей и пре­ду­пре­ж­дений оста­ют­ся неза­ви­си­мы­ми друг от дру­га. В Fedora все со­еди­ня­ется вме­сте в од­ном фай­ле верхнего уров­ня. Най­ди­те файл /etc/smokeping/config.d/Probes, где за­да­ны тесты. Он есть в ка­та­ло­ге /Magazine/SysAdmin_Code на­ше­го DVD.

Тести­ру­ем

Здесь мы оп­ре­де­лим три теста. Пер­вый – про­стой пинг, а два других из­ме­рят вре­мя про­хо­да ту­да и об­рат­но для за­про­сов DNS и HTTP. Стро­ки, на­чи­наю­щие­ся со зна­ка +, за­да­ют име­на тестов – мы уви­дим их сно­ва, когда бу­дем оп­ре­де­лять це­ли. Взгляните на оп­ре­де­ление теста DNS. Па­ра­метр pings за­да­ет чис­ло из­ме­рений, вы­пол­няе­мых ка­ж­дый раз, а steps – вре­мя ме­ж­ду изме­рения­ми (в се­кун­дах). Так, в этом при­ме­ре тест бу­дет вы­полнять по пять из­ме­рений ка­ж­дые три ми­ну­ты. Эти на­строй­ки пе­регру­жа­ют уста­нов­лен­ные по умол­чанию:

step=300
pings=20

Они оп­ре­де­ле­ны в /etc/smokeping/config.d/Database. Кстати, http://www.bbc.net.uk – это не DNS-сер­вер, ко­то­рый мы тести­ру­ем, а DNS-запись, ко­то­рая бу­дет из­вле­че­на из тести­руе­мо­го сер­ве­ра.

Дру­гой файл, ко­то­рый нуж­но под­пра­вить – /etc/smokeping/config.d/Targets. В нем оп­ре­де­ля­ют­ся це­ле­вые ком­пь­ю­теры. Я ре­шил про­ве­рить два ком­пь­ю­те­ра: один в локаль­ной се­ти и http://www.tuxradar.com. Мой файл Targets есть в ка­та­ло­ге /magazine/sysadmin на­ше­го DVD.

Эти запи­си фор­ми­ру­ют ие­рар­хи­че­ское ме­ню, ко­то­рое появит­ся на странице SmokePing. Гля­нув на стро­ки, на­чи­наю­щиеся со зна­ка +, вы уви­ди­те (на­при­мер) пункт ме­ню верхнего уровня services; в его под­пунк­те HTTP — два ком­пь­ю­те­ра: m1530‑904 и linuxformat. Как вы за­ме­ти­те, на нижних уров­нях этой струк­туры (по­следние че­ты­ре стро­ки) оп­ре­де­ля­ют­ся ком­пь­ю­те­ры, ко­торые бу­дут тести­ро­вать­ся. Ни один из этих ком­пь­ю­те­ров не бу­дет про­ве­рять­ся тестом DNS, ко­то­рый мы оп­ре­де­ли­ли ранее.

За­вер­шив на­строй­ку, пе­ре­за­пусти­те SmokePing и сту­пай­те почи­тать Linux Format несколь­ко ча­сов, по­ка ко­пит­ся необ­хо­ди­мый объ­ем дан­ных:

$ sudo service smokeping restart

За­тем я пере­шел на сайт http://servera/cgi-bin/smokeping.cgi (servera – ком­пь­ю­тер, на ко­то­ром за­пу­щен SmokePing) и был воз­награ­ж­ден гра­фи­ка­ми, ко­то­рые есть на на­шем DVD. За­держ­ка HTTP- за­про­са к http://tuxradar.com обыч­но со­став­ля­ет око­ло 200 мс, хо­тя, как по­ка­за­но на нижнем гра­фи­ке, с 7 до 10 ча­сов ве­че­ра она воз­раста­ет до 260 мс. Так как я про­во­дил из­ме­рения толь­ко с од­но­го ком­пь­юте­ра, то не мо­гу ска­зать, был ли вы­зван этот рост уве­ли­чением нагруз­ки на сер­вер или уве­ли­чением на­груз­ки на мое­го про­вай­де­ра.

Ар­хи­тек­ту­ра мо­ду­лей рас­ши­рения SmokePing по­зво­ля­ет пи­сать тесты как объ­ект­но-ори­ен­ти­ро­ван­ные мо­ду­ли Perl и за­гру­жать по тре­бо­ванию. Они хра­нят­ся в ка­та­ло­ге /usr/share/smokeping/lib/Smokeping/probes. Неко­то­рые тесты осно­ва­ны на echoping, раз­но­сто­ронней ути­лит­ке для из­ме­рения вре­мени про­хо­ж­дения за­про­са ту­да и об­рат­но для раз­лич­ных про­то­ко­лов.

Уз­нать мнение дру­гих

Мож­но за­пустить несколь­ко эк­зем­п­ля­ров SmokePing в ре­жиме «ве­ду­щий–ве­до­мый» – в ча­ст­но­сти, для из­ме­рения за­дер­жек web-сер­ве­ра с раз­лич­ных уз­лов се­ти. На­при­мер, из­ме­рение за­держек web-сер­ве­ра TuxRadar с дру­го­го ком­пь­ю­те­ра мог­ло бы ска­зать нам, вы­зва­но ли за­мед­ление пе­ре­да­чи со­стоянием сер­ве­ра или локаль­ной се­ти. «Ве­до­мые» – обыч­ные эк­зем­п­ля­ры SmokePing, но они по­лу­ча­ют свои па­ра­мет­ры от «ве­ду­ще­го», а не из локально­го фай­ла на­строй­ки. «Ве­до­мые» об­ща­ют­ся с «ве­ду­щим» че­рез обыч­ный web-ин­тер­фейс SmokePing, но подпи­сы­ва­ют со­об­щения, пре­достав­ляя код ау­тен­ти­фи­ка­ции со­об­щения на осно­ве MD5, фор­ми­руе­мый по со­об­щению и из­вест­но­му им сек­рет­но­му клю­чу.

«Ве­до­мые» пе­ре­да­ют «ве­ду­ще­му» свои ре­зуль­та­ты по­сле ка­ж­до­го теста. Для на­строй­ки та­кой кон­фи­гу­ра­ции уста­но­ви­те SmokePing на «ве­до­мые» ком­пь­ю­те­ры с до­ба­воч­ны­ми ар­гу­мен­та­ми командной стро­ки, за­даю­щи­ми URL «ве­ду­ще­го» и рас­по­ло­жение сек­ретно­го клю­ча. Сво­его фай­ла на­строй­ки у «ве­до­мых» нет.

Ес­ли подходящего теста, ко­то­рый де­ла­ет то, что вам нужно, нет, мож­но напи­сать соб­ствен­ный. Как это де­ла­ет­ся, опи­сано на странице man smokeping_extend; там есть ба­зо­вый класс Smokeping::probes::basefork, ко­то­рый мож­но при­нять за осно­ву, и струк­тур­ный файл (skel.pm), с ко­то­ро­го мож­но на­чать.

SmokePing уме­ет от­прав­лять пре­ду­пре­ж­дения (по поч­те или че­рез дру­гую про­грам­му на ваш вы­бор), что­бы из­вестить вас о воз­мож­ных про­бле­мах. Для на­строй­ки пре­ду­пре­ж­дений созда­ют­ся «де­тек­то­ры шаб­ло­на» – они сле­дят за из­менения­ми времени про­хо­ж­дения па­ке­та или за­про­са ту­да и об­рат­но или за поте­рей па­ке­тов для за­дан­но­го теста. Де­тек­то­ры шаб­ло­на не про­сто сра­ба­ты­ва­ют при пер­вом же на­ру­шении – они по­зво­ля­ют вам рассмот­реть несколь­ко слу­ча­ев и ква­ли­фи­ци­ро­ван­но ре­шить, ка­кие пре­ду­пре­ж­дения от­пра­вить и сто­ит ли во­об­ще это де­лать. Вот оп­ре­де­ление пре­ду­пре­ж­дений из Ubuntu. Но­ме­ра строк ука­за­ны толь­ко для ссылок, в фай­ле их нет.

1 *** Alerts ***
2 to = chris@example.com
3 from = smokealert@example.com
4
5 +bigloss
6 type = loss
7 # in percent
8 pattern = ==0%,==0%,==0%,==0%,>0%,>0%,>0%
9 comment = suddenly there is packet loss
10
11 +someloss
12 type = loss
13 # in percent
14 pattern = >0%,*12*,>0%,*12*,>0%
15 comment = loss 3 times in a row
16
17 +startloss
18 type = loss
19 # in percent
20 pattern = ==S,>0%,>0%,>0%
21 comment = loss at startup
22
23 +rttdetect
24 type = rtt
25 # in milli seconds
26 pattern = <10, <10, <10, <10, <10,<100,>100, >100, >100
27 comment = routing messed up again?

Стро­ка 2 оп­ре­де­ля­ет, как достав­лять пре­ду­пре­ж­дения. Здесь мож­но ука­зать ад­рес элек­трон­ной поч­ты или имя про­грам­мы, за­пускае­мой при возник­но­вении пре­ду­пре­ж­дения. Стро­ки 5–8 за­дают шаб­лон пре­ду­пре­ж­дения под именем bigloss. Шаб­лон в строке 8 ука­зы­ва­ет до­лю по­те­ри па­ке­тов в про­цен­тах, ко­то­рая долж­на иметь ме­сто (в дан­ном слу­чае) при се­ми по­сле­до­ва­тель­ных из­мерениях. (Уста­нов­ка па­ра­мет­ра step в 300 с оз­на­ча­ет, конеч­но, что пре­ду­пре­ж­дение не поя­вит­ся, по­ка па­ке­ты не бу­дут вы­гля­деть по­те­рян­ны­ми 15 ми­нут и бо­лее.)

Когда пре­ду­пре­ж­дать

Стро­ки 11–15 оп­ре­де­ля­ют пре­ду­пре­ж­дение someloss. В стро­ке 14 обо­зна­чение *12* в де­тек­то­ре шаб­ло­на оз­на­ча­ет «иг­но­ри­ро­вать до 12 зна­чений и все еще при­зна­вать со­от­вет­ствие шаб­ло­ну». Таким об­ра­зом (опять же, пред­по­ла­гая, что step уста­нов­лен в 300 с), пре­ду­пре­ж­дение возникнет, ес­ли по­те­ря па­ке­тов на­блю­да­ет­ся три раза, но ме­ж­ду ними мо­жет быть до двух ин­тер­ва­лов дли­тельно­стью до ча­са (12 × 300 c), в те­чение ко­то­рых по­те­ри не про­ис­хо­дит. В худ­шем слу­чае на сра­ба­ты­вание это­го де­тек­то­ра уй­дет 2 ча­са 15 ми­нут.

Так как де­тек­то­ры обыч­но реа­ги­ру­ют на из­менения со­стояний, они не смо­гут об­на­ру­жить их, ес­ли уже су­ще­ство­ва­ли на мо­мент за­пуска SmokePing. Что­бы из­бе­жать та­ких оши­бок, ис­поль­зу­ет­ся ==S (см. стро­ку 20), что оз­на­ча­ет «с мо­мен­та за­пуска»; здесь преду­пре­ж­дение за­пустит­ся, ес­ли по­те­ря па­ке­тов на­блю­да­лась три раза под­ряд сра­зу по­сле за­пуска SmokePing.

Для ак­ти­ва­ции пре­ду­пре­ж­дения на него нуж­но со­слать­ся из раз­де­ла на­строй­ки Targets. Вернитесь к при­ме­ру оп­ре­де­ления це­лей и об­ра­ти­те внимание на стро­ку alerts. Она ве­лит SmokePing вы­дать пре­ду­пре­ж­дение, ес­ли по­те­ря па­ке­тов про­ис­хо­дит три­жды под­ряд во вре­мя теста за­дер­жек HTTP.

Нам оста­лось упо­мя­нуть о по­следнем эле­мен­те на­строй­ки SmokePing: в раз­де­ле ***Presentation*** мож­но вы­брать ото­бражае­мые гра­фи­ки и их внеш­ний вид.

Что уме­ет SmokePing

Тест Что он де­ла­ет
Curl По­лу­ча­ет HTTP- или HTTPS-ад­рес с по­мо­щью curl
DNS Тест сер­ви­са до­мен­ных имен на ос­но­ве dig
EchoPingChargen Из­ме­ря­ет вре­мя про­хо­ж­де­ния за­про­са TCP chargen (порт 19)
EchoPingDiscard Из­ме­ря­ет вре­мя про­хо­ж­де­ния за­про­са TCP или UDP discard (порт 9)
EchoPingDNS Тест DNS на ос­но­ве echoping
EchoPingHttp Тест HTTP на ос­но­ве echoping
EchoPingHttps Тест HTTPS на ос­но­ве echoping
EchoPingIcp Из­ме­ря­ет вре­мя про­хо­ж­де­ния за­про­са для про­то­ко­ла ICP (Internet Cache Protocol)
EchoPingLDAP Из­ме­ря­ет вре­мя про­хо­ж­де­ния за­про­са для LDAP-сер­ве­ров
EchoPingSmtp Из­ме­ря­ет вре­мя про­хо­ж­де­ния за­про­са для SMTP-сер­ве­ров
EchoPingWhois Из­ме­ря­ет вре­мя про­хо­ж­де­ния за­про­са whois
FPing Из­ме­ря­ет вре­мя про­хо­ж­де­ния клас­си­че­ско­го за­про­са IMCP Echo Request
FTPTransfer Из­ме­ря­ет дос­туп­ную по­ло­су про­пус­ка­ния для FTP-сер­ве­ров
IOSPing Тест сис­те­мы вво­да-вы­во­да Cisco
LDAP Еще один тест LDAP
Radius Тест сер­ве­ра ау­тен­ти­фи­ка­ции Radius
RemoteFPing Ини­ции­ру­ет из­ме­ре­ния ping уда­лен­но че­рез SSH
SSH Тест сер­ви­са SSH с по­мо­щью ssh-keyscan
TacacsPlus Tacacs+ – про­прие­тар­ный про­то­кол управ­ле­ния дос­ту­пом Cisco
TelnetOSPing Тест сис­те­мы вво­да-вы­во­да Cisco
Персональные инструменты
купить
подписаться
Яндекс.Метрика