Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

27 - Служба syslog

Лекция



Сразу хочу сказать, что здесь никакой воды про служба syslog, и только нужная информация. Для того чтобы лучше понимать что такое служба syslog , настоятельно рекомендую прочитать все из категории Операционная система LINUX.

Служба (или демон) syslog - это служба, которая занимается централизованным ведением журналов событий. Утилиты, программы, другие службы - все они могут сообщать о тех или иных событиях службе syslog, которая их принимает, обрабатывает и хранит в журнальных файлах в каталоге /var/log/. Журнальные файлы - это обычные текстовые файлы. Большинство из них недоступны для простых пользователей, даже на чтение. Следить за журнальными файлами - это задача администратора системы.

syslog может работать и в сетевом режиме. То есть  служба syslog  на компьютере А может передавать сообщения службе syslog на компьютере Б и служба sysylog компьютера Б будет фиксировать сообщения в своих журнальных файлах. Таким образом можно создать централизованный сервер для сбора сообщений отслужб syslog других компьютеров в сети.

Служба syslog не умеет сохранять сообщения от ядра на этапе загрузки. Чтобы посмотреть все сообщения ядра необходимо использовать команду dmesg. Для того, чтобы журнальные сообщения от ядра также попадали в журнальные файлы предназначена служба klog.

Настройка syslog

Основной конфигурационный файл службы syslog находится в файле /etc/syslog.conf. Файл состоит из двух столбцов: в первом содержаться шаблоны в которых описано, какие типы сообщений и от каких программ будет обрабатывать syslog. В втором столбце указывается действие которое будет выполнять syslog при получении сообщения. Знак \ - это просто перевод строки.

Изначально все программы в Linux были разделены на группы. Подробнее о группах можно прочесть в файле справки man syslog.conf в разделе SELECTORS. Здесь же просто перечислим наименования групп:
auth, authpriv, cron, daemon, ftp, kern, lpr, mail, mark, news, security, syslog, user, uucp, local0-local7.

Сообщения были разбиты на типы (уровни) в зависимости от важности и критичности. Есть следующие типы сообщений:
debug, info, notice, warning, warn (warning), err, error (err), crit, alert, emerg, panic (emerg).

Шаблон состоит из группы приложения и типа сообщения. Например, mail.info. Такой шаблон указывает, что будут фиксироваться сообщения от почтовых программ начиная от типа info и заканчивая типом panic. То есть если будет сообщения типа error, оно тоже будет записано в журнал. Если необходимо явно указать какие типы сообщения нужно фиксировать тогда используется знак “равно”: mail.=info. При такой записи будут записаны только сообщения с типом info. Также можно использовать восклицательный знак: mail.!info. Такая запись говорит о том, что будут регистрироваться все сообщения кроме указанного и выше. То есть только - debug. Соответственно шаблон mail.!=info - это регистрация всех сообщений кроме info. В шаблоне также может применяться ключевое слово none и *. Запись mail.none - запрещает регистрацию всех типов сообщений, запись mail.* соответственно указывает регистрировать все сообщения. Об этом говорит сайт https://intellect.icu . Допускается также перечисление шаблонов через точку с запятой: mail.info;lpr.info, а также перечисление групп приложений в шаблоне через запятую: mail,lpr.info.

Перейдем ко второму полю в строке которое записывается через tab. Если необходимо регистрировать сообщения в журнальный файл, то во втором поле просто пишем путь к этому файлу. Например:/var/log/mail.info. Перед указанием полного пути можно ставить знак -, который говорит демону syslog о том, что не стоит при получении нового сообщения сразу выполнять команду sync и записывать сообщение из буфера в журнальный файл. Если в вашей системе регистрируется большое количество сообщений в секунду, то установка знака -, позволит повысить быстродействие дисковой подсистемы. В то же время если произойдет сбой в работе компьютера с его выключением или перезагрузкой, то последние сообщения могут быть утеряны (так как не будут записаны на диск). Поэтому рекомендуется для особо критичных сообщений не использовать знак -.
В качестве примера несколько записей:

1
2
3
mail.info                       -/var/log/mail.info
mail.warning                    -/var/log/mail.warn
mail.err                        /var/log/mail.err

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

1
2
*.*          @mycomp
*.*          @10.10.0.1

Также в качестве приемника сообщений может выступать именованный канал - |pipe_name или одна из виртуальных консолей - /dev/tty8. Пример:

1
2
3
4
daemon,mail.*;\
       news.=crit;news.=err;news.=notice;\
       *.=debug;*.=info;\
       *.=notice;*.=warning    /dev/tty8

Для изучения и тестирования работы демона syslog будет полезной утилита - logger. Данная программа позволяет генерировать сообщения демону syslog с заданными параметрами и часто используется при отладке новых шаблонов. Давайте выполним следующую команду:

1
logger -p mail.info -t TEST test message

Ключ -p служит для указания шаблона
Ключ -t позволяет задать метку для строки
test message - это текст сообщения

В итоге в файле mail.info появится вот такая строка:

1
Feb  3 14:58:21 adm-ubuntu TEST: test message

Команда logrotate

Каких бы объемов не были бы жесткие диски компьютера (сервера), но если за журнальными файлами не следить, то они могут в какой-то момент заполнить дисковое пространство. Именно поэтому на серверах рекомендуется каталог /var/log/ монтировать на отдельный жесткий диск. Для облегчения процедуры управления журнальными файлами была создана программа logrotate.

Рассмотрим стандартную процедуру ручного архивирования журнального файла. В первый раз журнальный файл (пусть это будет messages) архивируется и к имени архива прибавляется цифра 0 (messages.0.gz). Старый файл messages удаляется, на его месте создается новый с таким же названием. Затем через неделю файлmessages.0.gz переименовывается в messages.1.gz, из messages создается архив messages.0.gzmessagesудаляется и создается новый файл и т.д. logrotate - умеет выполнять эти действия автоматически. Необходимо только один раз настроить алгоритм обработки журнальных файлов.

Конфигурационные файлы logrotate - это файл /etc/logrotete.conf и файлы которые находятся в каталоге/etc/logrotate.d/. Рассмотрим в качестве примера часть конфигурационного файл а/etc/logrotate.d/samba:

1
2
3
4
5
6
7
8
9
10
/var/log/samba/log.smbd {
        weekly
        missingok
        rotate 7
        postrotate
                invoke-rc.d --quiet samba reload > /dev/null
        endscript
        compress
        notifempty
}

В строке 1 указано имя журнального файла и открывающая фигурная скобка для блока команд. Во второй строке идет команда weekly, которая сообщает о том что действие нужно выполнять каждую неделю. Значениеmissongok, говорит о том что если журнальный файл не обнаружен, то следует продолжать алгоритм без сообщения об ошибке. rotate 7 - создавать не более семи архивов. Postrotate endscript - задает начало и конец блока в котором можно написать bash-скрипт. В данном примере скрипт всего из одной строки (строка 6). Скрипт будет выполнен после выполнения процедуры ротации журнального файла. Ключевое слово compress - сигнализирует, что архивные файлы нужно сжимать с помощью gzipnotifempty - не выполнять ротацию журнального файла если он пустой.

В результате такой схемы архивации будет вот такая картина:

1
2
3
4
5
6
7
8
9
igor@adm-ubuntu:~$ 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 Надеюсь, что теперь ты понял что такое служба syslog и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Операционная система LINUX

создано: 2014-09-13
обновлено: 2024-11-14
239



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционная система LINUX

Термины: Операционная система LINUX