Perl для системного администрирования

       

Данные с состоянием и без


Помимо формата, в котором хранятся данные из журналов, также важно подумать о содержимом этих файлов, поскольку на наши действия повлияет и то, что из себя представляют эти данные и как они представлены. Когда речь идет о содержимом файлов журналов, часто можно разделить данные, имеющие состояние, и данные, состояния не имеющие. Рассмотрим пару примеров, которые помогут разобраться в этих различиях.

Вот отрывок журнала веб-сервера Apache. В каждой строке представлен запрос к веб-серверу:

esnet-118.dynamic.rpi.edu - - [13/Dec/1998:00:04:20 -0500] "GET home/u1/tux/ tuxedoOS.gif

HTTP/1.0" 200 18666 ppp-206-170-3-49.okld03.pacbeli.net - - [13/Dec/ 1998:00:04:21 -0500] "GET home/u2/news.ntm

HTTP/1.0" 200 6748 ts007d39.ftl-fl.concentric.net - - [13/Dec/1998:00.04.22 -0500] "GET home/u1/bgc.jpg HTTP/1.1"

А вот несколько строк из журнала демона принтера:

Аид 14 12:58:46 warhol printer' cover/door open Аид 14 12:58:58 warhol printer: error cleared

Аид 14 17:16:26 warhol printer: offline or intervention needed

Аид 14 17:16:43 warhol printer: error cleared

Аид 15 20:40:45 warhol printer: paper out

Аид 15 20:40:48 warhol printer: error cleared

В обоих случаях каждая строка из журнала не зависит от других строк журнала. Можно найти шаблоны или сгруппировать вместе строки, собирая статистику, но в этих данных нет ничего, что связывало бы между собой записи из журнала.

Теперь давайте рассмотрим несколько подправленных записей из журнала sendmail:



Dec 13 05:28:27 mailhub sendmail[26690]: FAA26690:

from=<user@>has.a.godcomplex.com>, size=643, class=0, pri=30643, nrcpts=1. msgid=<199812131032.CAA22824(3has.a.godconplex.com>,

proto=ESMTP, relay=user(5>has. a. godcomplex. com [216. 32. 32.176]

Dec 13 05:29:13 mailhub sendmail[26695]: FAA26695:

from=<root@host.ccs.neu.edu>, size=9600, class=0, pn=39600, nrcpts=1. msgid=<199812131029.FAA15005@host.ccs.neu.edu>,

proto=ESMTP, relay=root@host.ccs.neu.edu [129.10.116. 69]




Dec 13 05:29:15 mailhub sendmail[26691]: FAA26690: to=<user@ccs.neu.edu>, delay=00:00:02, xdelay=00:00:01, mailer=local, stat=Sent

Dec 13 05:29:19 mailhub sendmail[26696]: FAA26695: to=")IFS=' '&&exec /usr/ bin/procmail -f-||exit 75

«user", ctladdr=user (6603/104), delay=00:00:06. xdelay=00:00:06, mailer=prog, stat=Sent

Каждая строка имеет как минимум одну парную запись, в которой указаны источник и получатель каждого сообщения. Когда сообщение попадает в систему, ему присваивается уникальный идентификатор, выделенный на рисунке жирным шрифтом, нужный для «опознания» этого сообщения. Идентификатор сообщения позволяет нам связать соответствующие строки из журнала, определяя существование или «состояние» сообщения между записями в журнале.

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

В более сложных журналах могут существовать и другие особенности. Вот выдержки из журнала почтового сервера, находящегося в режиме отладки. Имена и IP-адреса изменены во избежание недоразумений:

Jan 14 15:53:45 mailhub popper[20243]: Debugging turned on

Jan 14 15:53:45 irailhub popper[20243]: (v2.53) Servicing request from

"client" at 129.X.X.X

Jan 14 15:53:45 mailhub popper[20243]: +OK QPOP (version 2.53) at mailftub

starting.

Jan 14 15:53:45 mailhub popper[20243]: Received: "USER username"

Jan 14 15:53:45 mailtiub popperf20243]: +OK Password required for username

Jan 14 15:53:45 mailhub'popper[20243]: Received: "pass xxxxxxxxx"

Jan 14 15:53:45 mailhub popper[20243]: +OK username has 1 message (26627

octets).

Jan 14 15:53:46 mailhub popper[20243]: Received' "LIST"

Jan 14 15:53:46 mailhub popper[20243]: +OK 1 messages (26627 octets)



Jan 14 15:53:46 mailhub popper[20243]: Received: "RETR 1"

Jan 14 15:53:46 mailhub popper[20243]: +OK 2662? octets

<message text appears here>

Jan 14 15:53:56 mailhub popper[20243]: Received: "DELE 1"

Jan 14 15:53:56 mailhuo popoer[2Q243]: Deleting message 1 at offset 0 of

length 26627

Jan 14 15:53:56 mailhub popoer[20243]: +OK Message 1 has been deleted,

Jan 14 15:53:56 mailhub popper[20243]: Received: "QUIT"

Jan 14 15:53:56 mailrub popper[20243]: + OK Pop server at mailhub signing э<=-

Jan 14 15:53:56 railhub poppsr[20243]: (v2.53) Ending request from "user' at

(client) 129.X.X.X

Можно увидеть не только установление соединения («Servicing request from...») и рассоединения («Ending request from...»), но и подробную информацию о том, что происходило в промежутке.

Каждое из этих промежуточных состояний сопровождается также и потенциально полезной информацией о «продолжительности». Если на POP-сервере возникнут какие-либо неполадки, можно будет узнать, сколько времени занимал каждый из приведенных выше шагов.

В случае с FTP-сервером из этих данных можно будет сделать некоторые выводы относительно того, как люди взаимодействуют с вашим сервером. Сколько времени, в среднем, люди проводят на сайте, прежде чем загрузить файлы? Много ли времени они проводят между выполнениями команд? Всегда ли они переходят из одной части сервера в другую, перед тем как загрузить одни и те же файлы? Промежуточные данные могут быть ценным источником информации.






Содержание раздела