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

Эффективное комбинирование awk и XML

Предоставьте надежные информационные ресурсы тем, кто принимает решения. Узнайте о простом, но полезном способе комбинировать возможности обработки данных awk и XML, который можно использовать для представления системных данных о UNIX® в удобной для восприятия форме, пригодной для отправки в корпоративную сеть или интернет. UNIX создает отчеты о производительности и загруженности системы, расходе ресурсов и отчеты с другой системной информацией, которая может использоваться управляющими персоналом и другими заинтересованными лицами.

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

Грейс Уокер (Grace Walker), партнер в фирме Walker Automated Services в Чикаго, Иллинойс - многосторонне образованный, обладающий огромным опытом консультант в области IT. Она работала в информационных технологиях в качестве менеджера, администратора, программиста, инструктора и Web-дезайнера в различных сферах, включая телекоммуникации, образование, финансы и средства программного обеспечения. Вы можете связаться с ней по электронному адресу gwalker@walkerautomated.com.



23.05.2008

Внешние требования радикально изменили бизнес-процессы. Современная юридическая и административная среда делают эффективное использование критической информации обязательным для бизнеса. Требования, содержащиеся к примеру в законе Sarbanes-Oxley (Sarbanes-Oxley Act - SOX), принуждают к эффективному использованию и управлению информацией. Чтобы соответствовать требованиям федерального правительства о протоколировании финансовой информации, и способствовать собственному контролю с обратной связью за операционной, организации сегодня должны использовать методики управления сбором информации. Учитывая эти требования, управление сбором системных данных приобрело более важное значение, чем было при его традиционном назначении – мониторинг системы и инструмент для решения проблем.

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

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

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

Что необходимо сделать?

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

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

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

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

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

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

Листинг 1. Блок BEGIN
BEGIN { 
     FS="\t" 
    { print "<?xml version=\"1.0\" 
        encoding=\"utf-8\"?> \n" } 
    { print "<log> \n"
 }

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

Листинг 2. Элементы сообщения в журнале
<log> 
     <logmessage> 
          <timestamp> 
          </timestamp> 
          <description> 
          </description> 
     </logmessage> 
     <logmessage> 
          <timestamp> 
          </timestamp> 
          <description> 
          </description> 
     </logmessage>
</log>

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

Листинг 3. Создание 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 (см. листинг 4). Блок END выполняется после того, как будут обработаны все строки из входного файла. Этот блок следует использовать для того, чтобы напечатать закрывающий корневой XML-тег </root>.

Листинг 4. Блок END
END { 
    { print "</log>"} 
 }

В листинге 5 показана законченная awk-программа.

Листинг 5. Законченная 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-файл может не содержать сообщений за определенные даты, или журналы сообщений об ошибках могли бы не содержать сообщения об ошибках определенного типа.


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

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

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

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

Листинг 6. Атрибут ID тега XML
<xml id="logID" src="log.xml"></xml>

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

Листинг 7. Связывание XML-данных и HTML datasrc
<table id="logID" border="1" 
       datasrc="#log" cellpadding="5">

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

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

Листинг 9. Привязывание HTML к XML-данным
<tbody> 
<tr> 
<td width="68"><span 
     datafld="timestamp"></span></td>
<td width="87"><span 
     datafld="description"></span></td>
</tr> 
</tbody>

Листинг 10 содержит завершенный HTML-файл.

Листинг 10. Законченный 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. По минимуму, эта статья должна укрепить понимание исключительной полезности awk в качестве основного инструмента для извлечения и подготовки данных и для обоснования нужности одного из назначений XML - универсальное хранилище данных.

Ресурсы

Научиться

  • Оригинал статьи: Effective management of system logs (EN).
  • Посетите раздел Linux® сайта developerWorks для получения новых навыков в Linux.
  • Common threads: Awk by example, Part 1 (EN) Daniel Robbins (developerWorks, декабрь 2000 г.): статья с основами awk.
  • Common threads: Awk by example, Part 2 (EN) Daniel Robbins (developerWorks, январь 2001 г.): статья с кратким обзором обработки записей журналов с использованием awk.
  • Common threads: Awk by example, Part 3 (EN) Daniel Robbins (developerWorks, апрель 2001 г.): статья, чтобы получить наиболее полное понимание использования строк в awk.
  • An Awk Tutorial: учебный курс для улучшения своих базовых навыков в awk. (EN)
  • W3School XML Tutorial: учебный курс для формирования базовых навыков работы с XML. (EN)
  • XML Data Binding (EN): эта статья подробно рассматривает связывание данных в общем, и блоки данных XML (data islands) в частности.
  • How To: Display XML Data Using I.E. Data Islands: методики для более глубокого понимания XML data islands. (EN)
  • Хотите больше? Раздел developerWorks eServer™ содержит сотни информативных статей и учебных курсов начального, среднего и высокого уровня сложности по брэнду eServer.(EN)
  • Команда IBM developerWorks содержит сотни бесплатных технических руководств по самым различным аспектам.(EN)

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, AIX и UNIX
ArticleID=310318
ArticleTitle=Эффективное управление системными журналами
publish-date=05232008