эффективное управление системными журналами

Файлы системного журнала являются наиболее важными и часто исследуемыми инструментами мониторинга системы. В UNIX каждая программа, которая создает журнальные файлы, либо пишет информацию непосредственно в свой журнальный файл, либо собирает информацию посредством службы syslogd. Хотя регулярный просмотр и анализ этих файлов должен быть базовой методикой, используемой системными администраторами, реальность часто отличается от желаемого. Из-за значительных объемов данных, которыми надо управлять, многие системные администраторы не имеют ни времени, ни желания анализировать системные журналы. Однако на современном рынке работа с системными журналами является наиболее важной задачей, игнорировать которую нельзя.

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

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

Одним из лучших инструментов UNIX для простых задач, связанных с извлечением и форматированием текста, является awk. Awk предоставляет сложный набор возможностей обработки текста. Awk – это сжатый, простой язык, который производит простой и «чистый» код. Этот инструмент содействует быстрой разработке, уменьшая возможность возникновения мелких ошибок, отодвигающих срок окончания работы.
Awk предоставляет совершенные средства для преобразования журнальных файлов в другую форму. Но вот какой должна быть эта новая форма представления данных? Наиболее эффективным и менее затратным способом распространения информации является интранет или Интернет. Очевидно, что логичным выбором будет представление данных на веб-сайте.

конвертирование данных в XML

Для отображения данных из журнальных файлов на веб-сайте требуется преобразовать данные. Для конвертации данных в формат XML можно использовать awk, а затем, для вставки данных в HTML-страницы можно использовать блоки данных XML (XML data islands). Таким образом, информация будет представлена в понятном для пользователя, дружелюбном формате.

Преимущество совместного использования HTML и XML состоит в том, что форматирование будет определено отдельно от данных. HTML обеспечивает форматирование и отображает детали, в то время как XML управляет структурами данных. Это разделение гарантирует что изменение лежащих в основе данных не повлечет изменения в HTML-коде. После создания HTML-страницы можно автоматически вставить в нее данные; можно вставить новый XML-файл поверх старого, с легкостью изменив веб-страницу так, чтобы та отображала данные, содержащиеся в новом XML.

Объединение мощных возможностей awk и XML для поддержки мониторинга журнальных файлов является оптимальным решением для управления системными журналами. Далее в этой статье используется простой журнальный файл, содержащий временную метку и описание. Ниже в статье будет показана работа с awk для создания XML-данных, которые будут использоваться совместно с HTML.

разработка XML-данных при помощи awk

Каждый XML-файл должен начинаться с оператора объявления, который указывает, что данный файл содержит XML. Оператор объявления XML определяет версию и тип кодировки символов, используемой в данном документе. В данном примере для создания описательной информации XML, тегов XML, и записи данных из обычного файла в XML-файл используется awk. Утилита awk для каждой входной строки за раз выполняет только один отдельный блок кода. Awk имеет блоки начала, конца и середины. Прежде, чем awk-код (см. листинг 1) будет готов к обработке текста из входного файла, его надо чуть- чуть доработать. Для выполнения действий перед началом обработки текста в awk можно определить начальный блок кода BEGIN. ПосколькуBEGIN обрабатывается до того, как awk начнет обработку входного файла, необходимо создать:
- переменную разделителя полей (FS);
- оператор объявления XML
- корневой тег <root>.

В программном коде ниже будет определен журнальный файл FS, затем будет использоваться оператор print для помещения первых XML-выражений в файл данных.
Кавычкам в операторе print предшествует обратная косая черта (backslash), поэтому awk верно интерпретирует выражение. Awk не запишет обратную косую черту в XML-файлы.

BEGIN {
FS="\t"
{ print "<?xml version=\"1.0\"
encoding=\"utf-8\"?> \n" }
{ print "<log> \n"
}

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

<log>
<logmessage>
<timestamp>
</timestamp>
<description>
</description>
</logmessage>
<logmessage>
<timestamp>
</timestamp>
<description>
</description>
</logmessage>
</log>

В журнальном файле первым полем является временная метка внесения записи в журнал ($1), а вторым полем является описание сообщения ($2). Программа awk, используя следующий код, преобразует данные журнального файла в XML-структуру.

{ print "\t<logmessage> \n"}
{ print "\t\t<timestamp>",
$1, "</timestamp> \n"}
{ print "\t\t<description>",
$2, "</description> \n"}
{ print "\t</logmessage> \n"}

Последним шагом в процессе создания XML-файла является определение блока END для awk. Блок END выполняется после того, как будут обработаны все строки из входного файла. Этот блок следует использовать для того, чтобы напечатать закрывающий корневой XML-тег </root>.

END {
{ print "</log>"}
}

Законченная awk-программа будет выглядеть следующим образом:

BEGIN {
FS="\t"
{ print "<log> \n"}
{ print "<?xml version=\"1.0\"
encoding=\"utf-8\"?> \n" )
}
{ print "\t<logmessage> \n"}
{ print "\t\t<timestamp>",
$1, "</timestamp> \n"}
{ print "\t\t<description>",
$2, "</description>\n"}
{ print "\t</logmessage> \n"}
END {
{ print "</log>"}
}

Эта тестовая awk-программа создает файл, который содержит данные из журнального файла. Она содержит необходимый код, который нужен для перемещения данных из журнального файла в XML-файл. Чтобы ограничить количество информации, выводимой на Web-странице, можно добавить условные и управляющие операторы awk, при помощи которых можно определить какие данные надо собирать и в конечном счете выводить. Например, XML-файл может не содержать сообщений за определенные даты, или журналы сообщений об ошибках могли бы не содержать сообщения об ошибках определенного типа.

создание веб-страниц с замкнутыми блоками данных XML

После того, как был создан XML-файл, необходимо создать структуру data island для размещения данных на HTML-странице. Data island является объектом исходных данных XML (XML Data Source Object - XML DSO), который находится на HTML-странице, отображаемой в Internet Explorer. XML DSO является элементом управления Microsoft ActiveX, встроенным в Internet Explorer 4 или более поздней версии. XML DSO предоставляет решения для извлечения содержимого из внешнего XML-файла в страницу HTML.

Объект XML DSO использует процесс, называемый связывание данных (data binding). При выполнении связывания данных элемент управления ActiveX общается непосредственно с другой веб-страницей или с XML-файлом, который содержит данные. При создании HTML-страниц, в них используются компоненты XML-кода, которые рассматриваются в этой статье.

Тег <xml> в HTML-коде обозначает начало блока данных XML (data island). Атрибут id этого тега позволяет обращаться к блоку данных data island. Для определения внешнего XML-файла следует использовать атрибут src.
Структура data island:

<xml id="logID" src="log.xml"></xml>

HTML-страница отображает XML-данные в таблице. Необходимо создать связь между XML-данными и HTML-атрибутом datasrc, принадлежащим таблице, сопоставив значение атрибута id со значением атрибута datasrc. Тег <table> при помощи атрибута datasrc обращается к XML data island (блок данных XML), который идентифицируется атрибутом logID.

<table id="logID" border="1" datasrc="#log" cellpadding="5">

Следующим шагом нужно создать шапку таблицы для идентификации элементов table:

<thead>
<tr>
<th width="50%">
<div align="center">Timestamp</div>
</th>
<th width="50%">
<div align="center"> Description </div>
</th>
</tr>
</thead>

Используя HTML-теги, которые могут принимать теги-источники данных (теги, которые привязывают HTML к XML-данным), можно с легкостью форматировать и отображать XML-данные. Сам по себе, элемент <td> не может быть привязан к данным, тогда как тег <span> может. XML-данные отображаются при помощи тэга <span> с атрибутом datafld, находящимся в колонках таблицы. Атрибут datafld определяет XML-элемент, который будет помещен в ячейку таблицы. Значение атрибута datafld должно соответствовать имени XML-тега. Следует вспомнить, что именами XML-тегов, созданных утилитой awk, были <timestamp> и <description>. По мере того как XML-файл считывается, для каждого элемента, идентифицирующегося тегом, создаются дополнительные табличные строки.

<tbody>
<tr>
<td width="68"><span
datafld="timestamp"></span></td>
<td width="87"><span
datafld="description"></span></td>
</tr>
</tbody>

Законченный HTML-файл будет выглядеть следующим образом:

<html>
<head>

. .

</head>
<body>

. .

<xml id="logID" src="log.xml"></xml>
<table id="logID" border="1"
datasrc="#log" cellpadding="5">
<thead>
<tr>
<th width="50%">
<div align="center">Timestamp</div>
</th>
<th width="50%">
<div align="center"> Description </div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td width="68"><span
datafld="timestamp"></span></td>
<td width="87"><span
datafld="description"></span></td>
</tr>
</tbody>
</table>

. .

</body>
</html>

Теперь у нас есть законченная HTML-страница с извлеченными журнальными данными.

awk для предприятия

В этой статье были показаны впечатляющие результаты совместного применения awk и XML. В статье было показано, как использовать XML для структуризации и объединения данных в форму, подходящую как для размещения в сетях масштаба предприятия, так и для размещения ее в Интернете. Также было показано как сделать информацию доступной для широкого круга интересующихся лиц.

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



Грейс Уокер, IT-консультант, Walker Automated Services.


Сетевые решения. Статья была опубликована в номере 06 за 2008 год в рубрике sysadmin

©1999-2024 Сетевые решения