15:09 Анализатор сообщений logwatch. |
Многие пользователи начинают решать проблемы возникающие в системе когда они уже мешают работе. Часто (особенно у Windows пользователей) это "лечится" новой установкой системы - а ведь как говорится "болезнь легче предупредить, чем лечить". Любое хорошее программное обеспечение сообщает пользователю о проблемах в своей работе, не только в диалогах сообщений об ошибках, но и сохраняет их в журналы или логи. Регулярный просмотр и анализ сообщений в журналах позволит вам обнаружить многие проблемы до их серьезных проявлений, а также поможет вам лучше узнать вашу систему. В linux журналы обычно хранятся в директории /var/log. Для просмотра логов в Ubuntu используйте программу просмотра системных журналов: #sudo gnome-system-log
Запуск с правами суперпользователя нужен для просмотра тех логов которые не доступны обычному пользователю. Информации много - очень много, с непривычки тяжело :) . Просмотр журналов можно "автоматизировать" с помощью таких программ как grep, find, awk и т.п.. Что бы получать информацию которая нам действительно необходима мы можем писать скрипты обработки информации из журналов или использовать специальные программы. Одна из них, это logwatch. В Ubuntu установка как обычно проста, до безобразия: #sudo
apt-get install logwatch
Logwatch представляет из себя простой в настройке и расширении анализатор сообщений, записываемых системой и программами в log файлы. По умолчанию он ежедневно запускается планировщиком заданий Cron, просматривает указанные файлы и генерирует отчёты. Отчёты направляются администратору системы по почте или выводятся на консоль. Запуск программы в консоле: #logwatch
В зависимости от ваших настроек, дистрибутива и установленых программ вы после некоторой паузы получите результат. По умолчанию программа обрабатывает логи за предыдущий день. Изменить эту настройку можно параметром range, например: #logwatch
--range Today
будет выведен отчет по анализу журналов за сегодняшний день. Что бы вывести все сообщения связаные с авторизацией в системе выполните: #logwatch --range All --service secure
Для получения подробной информации, как обычно используйте команду man, а теперь давайте посмотрим как можно настроить программу под свои нужды. Logwatch представляет собой набор perl скриптов (называемых фильтрами). Основные скрипты располагаются в каталоге /usr/share/logwatch. При необходимости настройки или внесений изменений в скрипты, необходимо скопировать нужные файлы в каталог /etc/logwatch с сохранением вложенной структуры каталогов. Фильтры должны быть написаны так, что читают данные с stdin и выводят результат на stdout. Мне не нравились выводимые сообщения в конце отчета (из пакета fortune). Поэтому для начала я отключил этот скрипт. Введем в консоле: #sudo
echo "Service = -zz-fortune">>
/etc/logwatch/conf/logwatch.conf
что приведет к созданию вашего файла настроек logwatch и добавлению в него строчки "Service = -zz-fortune" которая и отключит не нужный нам скрипт zz-fortune. Если у вас в отчет попадают безвредные сообщения, не распознанные модулями Logwatch, то в /etc/logwatch/conf/ignore.conf можно прописать набор регулярных выражений, которые будут отфильтровывать лишние строки. При настройке этого фильтра следует соблюдать осторожность, чтобы не заблокировать оповещение о важных событиях в системе. У меня отчеты "засорялись" сообщениями https://bugs.launchpad.net/indicator-applet/+bug/346513. Я создал файл /etc/logwatch/conf/ignore.conf и добавил строчку "dbus-daemon: Rejected send message", и в секции отчета secure-log вместо нескольких X сообщений выводится "X Ignored Lines". Далее я захотел добавить новую секцию с отчетом по использованию интернета. У меня стоит vnstat — простая утилита подсчета сетевого трафика, и я захотел ежедневно получать статистику в отчете (на предмет проверки аномальной сетевой активности). Задача не требует обработки логов и сводится только к записи вывода команды "vnstat" в отчет. Я не знаю perl и поэтому решил просто изменить существующий скрипт из пакета zz-disk_space (выводит в отчет информацию о использовании дисков в системе). Сначала скопировал файл настроек: #sudo
cp /usr/share/logwatch/default.conf/services/zz-disk_space.conf
/etc/logwatch/conf/services/aa-vnstat.conf
и отредактировав привел его к виду Title
= "vnstat"
где $vnstat_options - параметр команды который мы будем передавать скрипту. Далее скопировал сам скрипт: #sudo
cp /usr/share/logwatch/scripts/services/zz-disk_space.conf
/etc/logwatch/scripts/services/aa-vnstat.conf
и привел его к следующему виду: #!/usr/bin/perl
$|
= 1;
use
POSIX qw(uname);
my
(%Config);
$ENV{PRINTING}
= "y";
my
$Debug = $ENV{'LOGWATCH_DEBUG'} || 0;
print
"\n";
Теперь проверим выполнение скрипта #logwatch
--service aa-vnstat --debug 10
Параметр --debug указывает что нужно выводить отладочные сообщения с указанной детализацией (от 0 до 100) - полезная штука что бы узнать логику выполнения logwatch и отладить ваш скрипт. Если вы хотите продолжить изучение этого замечательного инструмента советую изучить содержимое директорий /usr/share/logwatch и /usr/share/doc/logwatch. Кстати скрипты можно писать на любом вашем любимом языке, главное что бы он выполнялся в вашей системе :). |
Категория: linux | Просмотров: 1881 | |
Всего комментариев: 0 | |