Что за файл syslog
Немного обо всем и все о немногом, или практический опыт системного администратора.
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
---|---|---|---|---|---|---|
« Янв | Март » | |||||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
Лекция №27 - Служба syslog
Служба (или демон) syslog - это служба, которая занимается централизованным ведением журналов событий. Утилиты, программы, другие службы - все они могут сообщать о тех или иных событиях службе syslog, которая их принимает, обрабатывает и хранит в журнальных файлах в каталоге /var/log/. Журнальные файлы - это обычные текстовые файлы. Большинство из них недоступны для простых пользователей, даже на чтение. Следить за журнальными файлами - это задача администратора системы.
Настройка syslog
Изначально все программы в Linux были разделены на группы. Подробнее о группах можно прочесть в файле справки man syslog.conf в разделе SELECTORS. Здесь же просто перечислим наименования групп:
auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security, syslog, user, uucp, local0-local7.
mail.warning - / var / log / mail.warn
mail.err / var / log / mail.err daemon,mail. * ;\
news.=crit;news.=err;news.=notice;\
* .=debug; * .=info;\
* .=notice; * .=warning / dev / tty8
В итоге в файле mail.info появится вот такая строка:
Команда logrotate
Каких бы объемов не были бы жесткие диски компьютера (сервера), но если за журнальными файлами не следить, то они могут в какой-то момент заполнить дисковое пространство. Именно поэтому на серверах рекомендуется каталог /var/log/ монтировать на отдельный жесткий диск. Для облегчения процедуры управления журнальными файлами была создана программа logrotate.
Рассмотрим стандартную процедуру ручного архивирования журнального файла. В первый раз журнальный файл (пусть это будет messages) архивируется и к имени архива прибавляется цифра 0 (messages.0.gz). Старый файл messages удаляется, на его месте создается новый с таким же названием. Затем через неделю файл messages.0.gz переименовывается в messages.1.gz, из messages создается архив messages.0.gz, messages удаляется и создается новый файл и т.д. logrotate - умеет выполнять эти действия автоматически. Необходимо только один раз настроить алгоритм обработки журнальных файлов.
Конфигурационные файлы logrotate - это файл /etc/logrotete.conf и файлы которые находятся в каталоге /etc/logrotate.d/. Рассмотрим в качестве примера часть конфигурационного файл а/etc/logrotate.d/samba:
В результате такой схемы архивации будет вот такая картина:
$ ls -l / var / log / samba / log.smbd *
-rw-r--r-- 1 root root 2050 2010 -02-02 17 : 25 / var / log / samba / log.smbd
-rw-r--r-- 1 root root 225 2010 -02-01 14 : 52 / var / log / samba / log.smbd.1.gz
-rw-r--r-- 1 root root 373 2010 -01- 25 09:03 / var / log / samba / log.smbd.2.gz
-rw-r--r-- 1 root root 350 2010 -01- 13 11 : 25 / var / log / samba / log.smbd.3.gz
-rw-r--r-- 1 root root 353 2010 -01- 11 08: 59 / var / log / samba / log.smbd.4.gz
-rw-r--r-- 1 root root 324 2010 -01-04 08: 54 / var / log / samba / log.smbd.5.gz
-rw-r--r-- 1 root root 341 2009 - 12 - 28 09: 11 / var / log / samba / log.smbd.6.gz
-rw-r--r-- 1 root root 404 2009 - 12 - 21 09:07 / var / log / samba / log.smbd.7.gz
Запуск команды logrotate как правило выполняет демон cron.
Подробнее о команде logrotate читайте в справке man logrotate.
Управление типом и подробностью журналируемой информации
Конфигурационный файл syslog.conf
Источник (он же категория) может быть следующим:
Обычный файл
Задается полным путем, начиная со слеша (/). Поставьте перед ним дефис (-), чтобы отменить синхронизацию файла после каждой записи. Это может привести к потере информации, но повысить производительность.
Терминал и консоль
Терминал, такой как /dev/console.
Удаленная машина
Список пользователей
Пример несложного syslog.conf:
Как и во многих конфигурационных файлах, синтаксис следующий:
В синтаксисе конфигурационного файла можно поставить перед приоритетом знак !, чтобы показать, что действие не должно применяться, начиная с этого уровня и выше. Подобным образом, перед приоритетом можно поставить знак =, чтобы показать, что правило применяется только к этому уровню, или !=, чтобы показать, что правило применяется ко всем уровням, кроме этого. Ниже показано несколько примеров (man syslog.conf можно найти множество других примеров):
Запуск демона syslogd
Вот некоторые возможные параметры запуска демона syslogd:
После запуска демона syslogd создается файл статуса /var/lock/subsys/syslog нулевой длины, и файл с идентификационным номером процесса /var/run/syslogd.pid.
С помощью команды
kill -SIGNAL `cat /var/run/syslogd.pid`
Автоматическая ротация (обновление заполненных файлов) и архивирование журналов
Со временем, файл журнала имеет свойство увеличиваться, особенно при интенсивной работе какого-либо сервиса. Соответственно, необходимо иметь возможность контролировать размер журналов. Это делается при помощи команды logrotate, которая обычно выполняется демоном cron. О работе cron я расскажу в следующих статьях. Главная цель команды logrotate состоит в том, чтобы периодически создавать резервные копии журналов и создавать новые чистые журналы. Сохраняется несколько поколений журналов и, когда завершается срок жизни журнала последнего поколения, он может быть заархивирован (сжат). Результат может быть отправлен по почте, например, ответственному за ведение архивов.
Для определения порядка ротации и архивирования журналов используется конфигурационный файл /etc/logrotate.conf. Для разных журналов можно задать разную периодичность, например, ежедневно, еженедельно или ежемесячно, кроме того, можно регулировать количество накапливаемых поколений, а также указать, будут ли копии архивов отправляться ответственному за ведение архивов и, если будут, когда. Ниже показан пример файла /etc/logrotate.conf:
Глобальные опции размещаются в начале файла logrotate.conf. Они используются по умолчанию, если где-то в другом месте не задано ничего более определенного. В примере ротация журналов происходит еженедельно и резервные копии сохраняются в течение четырех недель. Как только производится ротация журнала, на месте старого журнала автоматически создается новый. Файл logrotate.conf может содержать спецификации из других файлов. Так, в него включаются все файлы из каталога /etc/logrotate.d.
В этом примере по достижении резервной копией последнего поколения она удаляется, поскольку не определено, что следует с ней делать.
Резервные копии журналов могут также создаваться, когда журналы достигают определенного размера, и могут быть созданы скрипты из наборов команд для выполнения до или после операции резервного копирования. Пример:
В этом примере ротация /var/log/messages производится по достижении им размера 100 КБ. Накапливается пять резервных копий, и когда истекает срок жизни самой старой резервной копии, она отсылается по почте на адрес logadmin@sysloger. Командное слово postrotate включает скрипт, перезапускающий демон syslogd после завершения ротации путем отправки сигнала HUP. Командное слово endscript необходимо для завершения скрипта, а также в случае, если имеется скрипт prerotate. Более полную информацию см. в страницах руководства man для logrotate.
Параметры, задаваемые в конфигурационном файле logrotate.conf:
Изучение и мониторинг журналов
Далее в файле протокола можно обнаружить версию ядра, параметры его запуска, информацию о типе процессора и объеме ОЗУ:
Иногда может возникать необходимость мониторинга системных журналов с целью поиска текущих событий. Например, можно попробовать поймать редко случающееся событие в тот момент, когда оно произошло. В таком случае можно использовать команду tail с опцией -f для отслеживания содержимого системного журнала. Пример:
Кроме файлов-журналов, указанных в /etc/syslog.conf, существуют так же и другие файлы, например файл /var/log/dmesg, который хранит информацию о процессе загрузки системы до запуска syslogd, а так же файлы /var/log/lastlog, /var/log/wtmp, /var/log/btmp, имеющие двоичный формат и и хранящие информацию о последнем входе пользователя в систему, о всех удачных входах пользователей в систему и о всех неудачных входах пользователей в систему соответственно. Так же в каталоге /var/log/ могут находится лог-файлы таких демонов как веб-сервер или прокси-сервер. Формат данных файлов аналогичен журналам syslogd.
Подведем небольшой итог:
На сегодня это все. Надеюсь описал все максимально понятно. Со временем буду дополнять статью!
В процессе своей работы система отслеживает и сохраняет в специальные файлы некоторые события, которые она считает важными или просто нужными для использования в целях исправления и отладки ошибок, сбойных конфигураций и т. д. Файлы, в которых хранятся эти события называются файлами журналов или файлами регистрации. Нередко файлы регистрации занимают слишком много дискового пространства, что может свидетельствовать как о неисправности системы, ошибках конфигураций, так и о просто неправильной настройке демонов регистрации событий, которые отслеживают и собирают всё подряд. Таким образом работа с системой регистрации событий — важная составляющая в работе любого системного администратора, от которой всецело зависит качество обслуживания систем и как следствие — их надёжность и долговечность.
Как устроена система регистрации событий?
Опытные системные администраторы знают, что просматривать и анализировать журналы (файлы) регистраций необходимо регулярно и с особой тщательностью. Информация, содержащаяся в журналах очень часто помогает быстро решить возникающие неполадки или выявить скрытые проблемы в конфигурации системы. Для отслеживания событий системой, проверки журналов, учёта, хранения, архивирования и удаления информации из этих журналов должен быть разработан и утверждён специальный регламент для организации, эксплуатирующей и/или обслуживающей системы, серверы и сети.
Основным инструментом регистрации событий в UNIX и Linu до сих пор остаётся демон syslogd системы Syslog. Но следует иметь в виду также и то, что на протяжении длительного времени из-за многообразия всевозможных ответвлений UNIX и версий Linux множество программных пакетов, служебных скриптов, сетевых демонов используют свои собственные журналы, порой отличающимся экзотическим форматом.
В общем случае системой Syslog (и другими специализированными программами) производится перехват отслеживаемого события и регистрация его в файле регистрации. Само регистрируемое событие представляет собой строку текста, содержащую данные о дате/времени, типе, степени важности события. Также в этот набор могут быть, в зависимости от ситуации, включены и другие данные. Сама строка регистрируемого события для выделения указанных компонентов разбивается символами-разделителями: пробелы, табуляции, а также знаками пунктуации.
Журналы регистрации легко просматривать, поскольку они являются обычными текстовыми файлами. Для эффективной работы с журналами используются самые стандартные инструменты из базовой поставки любого дистрибутива — команды cat и grep. Если нужно «ворошить» очень большие и сложные по формату журналы, то можно (и даже нужно) вместо утилиты grep использовать другой, гораздо более производительный и гибкий в подобных задачах инструмент — утилиту awk. Язык обработки текста Perl также очень хорошо подходит для этого.
Типичная запись системного журнала системы Syslog обычно выглядит следующим образом:
В данном случае можно видеть, что в одном из журналов Syslog собраны события из нескольких источников: программы sbathd, pingem, pop-proxy. Также можно видеть, что события регистрируются для нескольких хостов, взаимодействующих с данной системой: backup, system, office и service.
log файлы и их расположение в Linux
Как уже отмечалось, в системах UNIX и Linux нет чётких соглашений о том, где и как должны храниться журналы регистрации. Они могут быть разбросаны хоть по всей файловой системе, поэтому для каждого администратора важно сразу разобраться, где и для каких пакетов и демонов находятся соответствующие файлы журналов. Но несмотря на отсутствие чётких формальных регламентов относительно мест хранения журналов, всё же существует традиционно сложившееся правило, что эти файлы должны находиться в каталогах /var/log, /var/log/syslog, а также в /var/adm.
Стоит также помнить и о том, что бывают случаи, когда (особенно на сбойных конфигурациях) общий объём файлов журналов резко увеличивается, при этом велик риск «уложить» систему. Для удобства контроля за свободным пространством на устройствах хранения, а также для надёжности каталог /var часто выносят в отдельную файловую систему на отдельном разделе.
Некоторые специальные файлы журналов
В следующей таблице приводятся сведения о некоторых журнальных файлах, информация из которых очень полезна для системного администрирования:
Для данной таблицы действуют следующие обозначения: S — Syslog, В — встроенное имя, Ф — конфигурационный файл, Д — ежедневно, Н — еженедельно, М — ежемесячно, NN[km] — размер в килобайтах или мегабайтах, Z — SUSE, R — Red Hat и CentOS, S — Solaris, H — HP-UX, A — AIX. В столбце «Частота» указывается частота, с которой удаляется устаревшая информация, связанная со временем или с объёмом файла. В столбце «Программа» указывается программа, создающая файл.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Немного обо всем и все о немногом, или практический опыт системного администратора.
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
---|---|---|---|---|---|---|
« Янв | Март » | |||||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
Лекция №27 - Служба syslog
Служба (или демон) syslog - это служба, которая занимается централизованным ведением журналов событий. Утилиты, программы, другие службы - все они могут сообщать о тех или иных событиях службе syslog, которая их принимает, обрабатывает и хранит в журнальных файлах в каталоге /var/log/. Журнальные файлы - это обычные текстовые файлы. Большинство из них недоступны для простых пользователей, даже на чтение. Следить за журнальными файлами - это задача администратора системы.
Настройка syslog
Изначально все программы в Linux были разделены на группы. Подробнее о группах можно прочесть в файле справки man syslog.conf в разделе SELECTORS. Здесь же просто перечислим наименования групп:
auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security, syslog, user, uucp, local0-local7.
mail.warning - / var / log / mail.warn
mail.err / var / log / mail.err daemon,mail. * ;\
news.=crit;news.=err;news.=notice;\
* .=debug; * .=info;\
* .=notice; * .=warning / dev / tty8
В итоге в файле mail.info появится вот такая строка:
Команда logrotate
Каких бы объемов не были бы жесткие диски компьютера (сервера), но если за журнальными файлами не следить, то они могут в какой-то момент заполнить дисковое пространство. Именно поэтому на серверах рекомендуется каталог /var/log/ монтировать на отдельный жесткий диск. Для облегчения процедуры управления журнальными файлами была создана программа logrotate.
Рассмотрим стандартную процедуру ручного архивирования журнального файла. В первый раз журнальный файл (пусть это будет messages) архивируется и к имени архива прибавляется цифра 0 (messages.0.gz). Старый файл messages удаляется, на его месте создается новый с таким же названием. Затем через неделю файл messages.0.gz переименовывается в messages.1.gz, из messages создается архив messages.0.gz, messages удаляется и создается новый файл и т.д. logrotate - умеет выполнять эти действия автоматически. Необходимо только один раз настроить алгоритм обработки журнальных файлов.
Конфигурационные файлы logrotate - это файл /etc/logrotete.conf и файлы которые находятся в каталоге /etc/logrotate.d/. Рассмотрим в качестве примера часть конфигурационного файл а/etc/logrotate.d/samba:
В результате такой схемы архивации будет вот такая картина:
$ ls -l / var / log / samba / log.smbd *
-rw-r--r-- 1 root root 2050 2010 -02-02 17 : 25 / var / log / samba / log.smbd
-rw-r--r-- 1 root root 225 2010 -02-01 14 : 52 / var / log / samba / log.smbd.1.gz
-rw-r--r-- 1 root root 373 2010 -01- 25 09:03 / var / log / samba / log.smbd.2.gz
-rw-r--r-- 1 root root 350 2010 -01- 13 11 : 25 / var / log / samba / log.smbd.3.gz
-rw-r--r-- 1 root root 353 2010 -01- 11 08: 59 / var / log / samba / log.smbd.4.gz
-rw-r--r-- 1 root root 324 2010 -01-04 08: 54 / var / log / samba / log.smbd.5.gz
-rw-r--r-- 1 root root 341 2009 - 12 - 28 09: 11 / var / log / samba / log.smbd.6.gz
-rw-r--r-- 1 root root 404 2009 - 12 - 21 09:07 / var / log / samba / log.smbd.7.gz
Запуск команды logrotate как правило выполняет демон cron.
Подробнее о команде logrotate читайте в справке man logrotate.
Читайте также: