Размещение перед именем файла символа канала (|) позволит использовать fifo (first in - first out, первый пришел - первый вышел) или именованный канал (named pipe) в качестве приемника для сообщений. Прежде чем запускать (или перезапускать) syslogd, необходимо создать fifo при помощи команды mkfifo. Иногда fifo используются для отладки.
Терминал и консоль
Терминал, такой как /dev/console.
Удаленная машина
Чтобы сообщения пересылались на другой хост, поместите перед именем хоста символ (@). Обратите внимание, что сообщения не пересылаются с принимающего хоста. (для работы данного назначения на клиенте и сервере в файле /etc/services должна быть прописана строчка syslog 514/udp , и открыт UTP-порт 514)
Список пользователей
Разделенный запятыми список пользователей, получающих сообщения (если пользователь зарегистрирован в системе). Сюда часто включается пользователь root.
Все зарегистрированные пользователи
Чтобы известить всех зарегистрированных пользователей при помощи команды wall, используйте символ звездочки (*).
Пример несложного syslog.conf:
# Все сообщения ядра выдавать на консоль. #kern.* /dev/console # Все логи уровня info или выше, кроме сообщений электронной почты, а так же # не логировать сообщения аутентификации и сообщений демона cron! *.info;mail.none;authpriv.none;cron.none /var/log/messages # Записывать в отдельный файл сообщения, содержащие конфиденциальную # информацию аутентификации, независимо от их уровня. authpriv.* /var/log/secure # Все сообщения почтовой системы тоже записывать в отдельный файл. mail.* -/var/log/maillog # Логировать сообщения планировщика в файл /var/log/cron cron.* /var/log/cron # Сообщения о чрезвычайных ситуациях должны немедленно получить # все пользователи системы *.emerg * # Сохранять сообщения новостей уровня crit и выше в отдельный файл. uucp,news.crit /var/log/spooler # Сохранять сообщения загрузки в boot.log local7.* /var/log/boot.log
Как и во многих конфигурационных файлах, синтаксис следующий:
- строки, начинающиеся с #, и пустые строки игнорируются.
- Символ * может использоваться для указания всех категорий или всех приоритетов.
- Специальное ключевое слово none указывает, что журналирование для этой категории не должно быть выполнено для этого действия.
- Дефис перед именем файла (как -/var/log/maillog в этом примере) указывает, что после каждой записи журнал не должен синхронизироваться. В случае аварии системы вы можете потерять информацию, но отключение синхронизации позволит повысить производительность.
В синтаксисе конфигурационного файла можно поставить перед приоритетом знак! , чтобы показать, что действие не должно применяться, начиная с этого уровня и выше . Подобным образом, перед приоритетом можно поставить знак = , чтобы показать, что правило применяется только к этому уровню, или != , чтобы показать, что правило применяется ко всем уровням, кроме этого. Ниже показано несколько примеров (man syslog.conf можно найти множество других примеров):
# Посылать все сообщения ядра в /var/log/kernel. # Посылать все сообщения уровня critical и higher на удаленную машину sysloger и на консоль # Посыласть все сообщения уровня info, notice и warning в /var/log/kernel-info # kern.* /var/log/kernel kern.crit @sysloger kern.crit /dev/console kern.info;kern.!err /var/log/kernel-info # Посылать все сообщения почтовой системы, кроме уровня info в /var/log/mail. mail.*;mail.!=info /var/log/mail
Я постарался максимально понятно работу syslogd показать на схеме:
Запуск демона syslogd
Запуск демона протоколирования запускаются на этапе инициализации системы посредством скрипта /etc/rc.d/init.d/syslog , однако для того, чтобы задать параметры запуска, нет необходимости корректировать этот скрипт - начиная с версии 7.2, опции запуска считываются из отдельного конфигурационного файла /etc/sysconfig/syslog (/etc/default/syslog в debian) .
Вот некоторые возможные параметры запуска демона syslogd:
- -a /folder/socket - указание дополнительного слушающего сокета (не забудьте предварительно создать сокет)
- -d - отладочный режим. При этом демон не переходит в фоновый режим и выдает все сообщения на текущий терминал;
- -f имя-конфигурационного-файла . Задает имя альтернативного конфигурационного файла, который будет использоваться вместо заданного по умолчанию /etc/syslog.conf;
- -l список-хостов - задание списка хостов, имена которых не должны записываться с указанием полного доменного имени (FQDN - Full Qwalified Domain Name);
- -m минут - запущенный без этой опции sysklogd через каждые 20 минут записывает в протокол сообщения категории mark (временные отметки). С помощью опции -m можно либо изменить интервал между отметками, либо вовсе отменить выдачу таких сообщений;
- -p socket - задание альтернативного сокета UNIX (вместо прослушиваемого по умолчанию /dev/log);
- -r - разрешение принимать сообщения от удаленных хостов;
- -x - запрет определения имени хоста по его адресу для предотвращения зависания при работе на одном хосте с сервером DNS.
- -v - показать версию и закончить работу
После запуска демона syslogd создается файл статуса /var/lock/subsys/syslog нулевой длины, и файл с идентификационным номером процесса /var/run/syslogd.pid .
С помощью команды
kill -SIGNAL `cat /var/run/syslogd.pid`
можно послать демону syslogd один из следующих сигналов: SIGHUP - перезапуск демона; SIGTERM - завершение работы; SIGUSR1 - включить/выключить режим отладки.
Вообще-то в системе запускаются два демона протоколирования - syslogd и klogd . Оба демона входят в состав пакета sysklogd .
Демон klogd отвечает за журналирование событий, происходящих в ядре системы . Необходимость в отдельном демоне klogd объясняется тем, что ядро не может использовать стандартную функцию syslog. Дело в том, что стандартные библиотеки С (включая ту библиотеку, в которой находится функция syslog) предназначены для использования только обычными приложениями . Поскольку ядро тоже нуждается в функциях журналирования, в него включены свои библиотеки, недоступные приложениям. Поэтому ядро использует свой собственный механизм генерации сообщений.
Демон klogd предназначен для организации обработки этих сообщений. В принципе он может производить такую обработку полностью самостоятельно и независимо от syslogd, например, записывая эти сообщения в файл, но в большинстве случаев используется принятая по умолчанию настройка klogd, при которой все сообщения от ядра пересылаются тому же демону syslogd.
Автоматическая ротация (обновление заполненных файлов) и архивирование журналов
Со временем, файл журнала имеет свойство увеличиваться, особенно при интенсивной работе какого-либо сервиса. Соответственно, необходимо иметь возможность контролировать размер журналов. Это делается при помощи команды logrotate , которая обычно выполняется демоном cron . О работе cron я расскажу в следующих статьях. Главная цель команды logrotate состоит в том, чтобы периодически создавать резервные копии журналов и создавать новые чистые журналы. Сохраняется несколько поколений журналов и, когда завершается срок жизни журнала последнего поколения, он может быть заархивирован (сжат). Результат может быть отправлен по почте, например, ответственному за ведение архивов.
Для определения порядка ротации и архивирования журналов используется конфигурационный файл /etc/logrotate.conf . Для разных журналов можно задать разную периодичность, например, ежедневно, еженедельно или ежемесячно, кроме того, можно регулировать количество накапливаемых поколений, а также указать, будут ли копии архивов отправляться ответственному за ведение архивов и, если будут, когда. Ниже показан пример файла /etc/logrotate.conf:
# сначала заданы параметры "по-умолчанию" (глобальные опции) # обновлять файлы журнала еженедельно weekly # хранить архив логов за 4 последние недели rotate 4 # создавать новый (пустой) файл после ротации (обновления) create # раскомментируйте, если желаете, чтобы сохраненные файлы сжимались #compress # включить настройки ротации из указанного каталога include /etc/logrotate.d # не хранить wtmp, или btmp -- настройки ротации данных журналов следующие: /var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly create 0664 root utmp rotate 1 } # специфичные системные журналы могут быть настроены ниже
Глобальные опции размещаются в начале файла logrotate.conf . Они используются по умолчанию, если где-то в другом месте не задано ничего более определенного. В примере ротация журналов происходит еженедельно и резервные копии сохраняются в течение четырех недель. Как только производится ротация журнала, на месте старого журнала автоматически создается новый. Файл logrotate.conf может содержать спецификации из других файлов. Так, в него включаются все файлы из каталога /etc/logrotate.d.
В этом примере также содержатся специальные правила для /var/log/wtmp и /var/log/btmp (хранящие информацию о удачных и неудачных попытках входя в систему), ротация которых происходит ежемесячно. Если файлы отсутствуют, сообщение об ошибке не выдается. Создается новый файл и сохраняется только одна резервная копия.
В этом примере по достижении резервной копией последнего поколения она удаляется, поскольку не определено, что следует с ней делать.
Резервные копии журналов могут также создаваться, когда журналы достигают определенного размера, и могут быть созданы скрипты из наборов команд для выполнения до или после операции резервного копирования. Пример:
/var/log/messages { rotate 5 mail logadmin@sysloger size 100k postrotate /usr/bin/killall -HUP syslogd endscript }
В этом примере ротация /var/log/messages производится по достижении им размера 100 КБ. Накапливается пять резервных копий, и когда истекает срок жизни самой старой резервной копии, она отсылается по почте на адрес logadmin@sysloger. Командное слово postrotate включает скрипт, перезапускающий демон syslogd после завершения ротации путем отправки сигнала HUP. Командное слово endscript необходимо для завершения скрипта, а также в случае, если имеется скрипт prerotate. Более полную информацию см. в страницах руководства man для logrotate.
Параметры , задаваемые в конфигурационном файле logrotate.conf:
- compress | nocompress (старые версии сжимаются или не сжимаются с помощью gzip)
- compresscmd (задает программу сжатия, по умолчанию - gzip)
- uncompresscmd (задает программу разжатия, по умолчанию - ungzip)
- compressext (задает суффикс для сжатых файлов)
- compressoptions (задает параметры программы сжатия; по умолчанию - "-9", т.е. максимальное сжатие для gzip)
- copytruncate | nocopytruncate (обычно старая версия переименовывается и создается новая версия журнала; при задании этого параметра logrotate копирует журнал в новый файл, а затем обрезает старый; используется, если программа, создающая журнал, не умеет его закрывать; теряются записи, сделанные в промежутке между копированием и обрезанием; а поможет ли, если создающая журнал программа вместо режима append просто пишет в файл, используя внутренний указатель?)
- create [права-доступа владелец группа] | nocreate (сразу после переименования старой версии журнала и до вызова postrotate создается новый журнал с указанными атрибутами - права доступа задаются в восьмеричном виде, как в chmod.2; если атрибуты не указаны, то берутся от старого журнала)
- daily (смена версий в серии происходит ежедневно)
- delaycompress | nodelaycompress (некоторые программы не сразу закрывают журнал, в этом случае сжатие надо отложить до следующего цикла)
- errors email (кому направлять сообщения об ошибках)
- extension суффикс (задается суффикс, добавляемый к именам файлов при ротации перед суффиксом сжатия)
- ifempty | notifempty (смена версий даже если файл пуст; действует по умолчанию)
- include имя-файла | имя-директории (текстуально подставить файл или все файлы из указанной директории; не включаются поддиректории, специальные файлы и файлы с суффиксами из списка исключений; нельзя использовать внутри секции)
- mail адрес | nomail (когда смена версий приводит к необходимости удалить старый журнал, то послать его по указанному адресу)
- mailfirst (посылать не удаляемую версию журнала, а первую)
- maillast (посылать удаляемую версию журнала; действует по умолчанию)
- missingok | nomissingok (не посылать сообщения об ошибке, если журнал отсутствует)
- monthly (смена версий происходит ежемесячно)
- olddir директория | noolddir (во время смены версий журнал перемещается в указанную директорию; д.б. на том же физическом устройстве)
- postrotate (все дальнейшие строчки до строки endscript исполняются как команды shell после процесса смены версии)
- prerotate (все дальнейшие строчки до строки endscript исполняются перед процессом смены версии)
- rotate число (сколько старых версий хранить; если 0, то ни одной)
- size байт (смена версии происходит, если размер журнала превысил указанное число; можно использовать суффиксы "k" - килобайт - и "M" - мегабайт)
- sharedscripts | nosharedscripts (выполнять команды prerotate и postrotate только один раз для всех файлов, описанных в секции)
- tabooext [+] список-суффиксов (задание списка суффиксов-исключений для include; если указан знак "плюс", то дополнение, иначе замена; по умолчанию: .rpmorig, .rpmsave, .rpmnew, ",v", .swp и "~")
- weekly (смена версий происходит еженедельно)
Изучение и мониторинг журналов
Записи в журналах обычно содержат метку времени, имя хоста, на котором выполняется описываемый процесс, и имя процесса. Просматривать журналы можно при помощи программы постраничного вывода, например, less , искать определенные записи (например, сообщения ядра от определенного демона) можно при помощи команды grep :
# less /var/log/messages
# grep "ppp" /var/log/messages | tail
Dec 17 16:34:25 proxy pppd: Connection terminated.
Dec 17 16:34:25 proxy pppd: Exit.
Dec 17 16:35:57 proxy pppd: LCP terminated by peer (^P]kV^@ Компьютер может работать не постоянно и выключаться, допустим на ночь. Поэтому в /var/log/messages записи хранятся циклически от запуска компьютера к выключению, это можно заметить по сообщениям: Дек 17 08:32:56 syslog-server syslogd 1.4-0: restart.
Дек 17 08:32:56 syslog-server syslog: запуск syslogd succeeded
Дек 17 08:32:56 syslog-server kernel: klogd 1.4-0, log source = /proc/kmsg started.
Дек 17 08:32:56 syslog-server syslog: запуск klogd succeeded
Dec 17 08:32:56 syslog-server kernel: Kernel command line:
auto BOOT_IMAGE=linux ro root=303
BOOT_FILE=/boot/vmlinuz-2.4.2-2
Dec 17 08:32:56 syslog-server kernel: Memory: 125652k/130560k available (1365k kernel code, 4200k reserved, 92k data, 236k init, 0k highmem)
Dec 17 08:32:56 syslog-server kernel: CPU: Intel(R) Pentium(R) 4 CPU 1.60GHz stepping 02
Так же, в этом файле можно найти информацию о дисковой памяти (включая информацию о геометрии диска, структуре разделов и используемых прерываниях), информацию о периферийных устройствах, о запуске отдельных служб и сервисов, информацию о подключении файловых систем и сообщения о входе пользователей в систему, а также сообщения об ошибках. Иногда может возникать необходимость мониторинга системных журналов
с целью поиска текущих событий. Например, можно попробовать поймать редко случающееся событие в тот момент, когда оно произошло. В таком случае можно использовать команду tail
с опцией -f
для отслеживания содержимого системного журнала. Пример:
# tail -f /var/log/messages | grep syslog-server
Dec 17 16:46:09 syslog-server pppd: pptpd-logwtmp.so ip-up ppp0 maikop 94.77.0.150
Dec 17 16:46:09 syslog-server pppd: Script /etc/ppp/ip-up finished (pid 12552), status = 0x0
Dec 17 16:46:49 syslog-server pptpd: CTRL: Client 85.175.197.65 control connection started
Dec 17 16:46:49 syslog-server pptpd: CTRL: Starting call (launching pppd, opening GRE)
Dec 17 16:46:49 syslog-server pppd: Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded.
Кроме файлов-журналов, указанных в /etc/syslog.conf, существуют так же и другие файлы, например файл , который хранит информацию о процессе загрузки системы до запуска syslogd, а так же файлы , имеющие двоичный формат и и хранящие информацию о последнем входе пользователя в систему, о всех удачных входах пользователей в систему и о всех неудачных входах пользователей в систему соответственно. Так же в каталоге /var/log/ могут находится лог-файлы таких демонов как веб-сервер или прокси-сервер. Формат данных файлов аналогичен журналам syslogd. На последок, хотелось бы сделать акцент на том, что данный протокол очень не защищен, т.к. syslog не содержит никаких средств защиты от подделок сообщений. Хуже того, использование протокола UDP позволяет злоумышленникам посылать сообщения от имени любого хоста. Ваша локальная сеть должна быть защищена экраном от приема пакетов с поддельными локальными адресами (хотя это не помешает посылать поддельные сообщения изнутри локальной сети) и от приема пакетов снаружи на порт 514/udp. Известны случаи переполнения диска ложными сообщениями. Протокол syslog и UDP не обеспечивают гарантированной доставки (сообщения могут быть потеряны при перегрузке сети или перехвачены, поврежденные сообщения удаляются без предупреждения), правильной последовательности доставки (сообщение о завершении процесса может придти раньше сообщения о его запуске), приоритетной доставки. Конфиденциальность сообщений не обеспечивается, так как они передаются открытым текстом. Если при настройке генератора сообщений указать неправильный адрес коллектора или релея, то никаких сообщений об ошибке не будет - сообщения будут удаляться (или записываться в чужой журнал). Были предложены несколько проектов улучшения протокола syslog. Например, документ RFC 3195 предлагает систему протоколирования (syslog-conn), основанную на TCP, обеспечивающую гарантированную доставку сообщений в правильной последовательности. Проект syslog-sign предлагает обеспечить аутентификацию, упорядоченность, целостность сообщений и обнаружение пропавших сообщений за счет генерации специальных сообщений, содержащих цифровую подпись (signature) блока предыдущих сообщений с сохранением стандартного протокола и формата syslog и использованием UDP. Подведем небольшой итог:
В линукс есть единый демон, отвечающий за журналирование событий локальной системы и удаленных систем. Все события собираются из сокета /dev/log, порта UDP - 514, а так же от "помощника" - демона klogd, который присылает сообщения от ядра. Все собранные сообщения фильтруются демоном syslogd через правила в файле /etc/syslog.conf и в соответствии с правилами распределяются по соответствующим местам назначения. Файлы логов периодически "обрезаются". Периодичность определяет файл logrotate.conf и команда logrotate, которая запускается системным планировщиком - cron. На сегодня это все. Надеюсь описал все максимально понятно. Со временем буду дополнять статью! С Уважением, Mc.Sim!
При просмотре лог-файлов (файлов журналов) в Linux иногда бывает нужно мониторить новые записи в логах в реальном времени. То есть вы указываете, какой лог-файл (или файлы) вы хотите просматривать и в реальном времени отслеживаете новые записи в этом файле. Если выполнить команду tail ИмяФайла
без каких-либо дополнительных аргументов, то будет выведено 10 последних строк файла, и команда завершит свою работу. Для того, чтобы команда tail
непрерывно выводила последние записи в файле, то есть, если в файле появились новые записи, то информация на экране обновлялась, используется опция -f
: Выполним команду tail -f
для вывода лог-файла /var/log/syslog
tail -f /var/log/syslog
Так как используется опция -f
,
команда tail
не завершает свою работу, а ожидает появления в лог-файле новых записей. Как только в лог-файл будут добавлены новые записи, они сразу же будут отображены в терминале. Чтобы прервать выполнение команды, нажмите сочетание клавиш Ctrl+C
Аналогом команды tail -f
является команда tailf
Использование: Tailf /var/log/mylogfile.log
Важным отличием команды tailf
от tail -f
является то, что tailf
не обращается к файлу, когда он не изменяется. В следствии этого время доступа к файлу не обновляется и система не выполняет постоянный сброс файла на диск, когда файл не обновляется. В описании команды tailf
указывается на то, что ее удобно использовать для мониторинга файлов журналов на ноутбуках. Так как без надобности не происходит обращение к диску и сохраняется срок службы батареи. Обычно в Linux лог-файлы записываются не до бесконечности, иначе такой файл было бы очень неудобно в дальнейшем использовать. Вместо этого применяется так называемая ротация файлов. Когда лог-файл становится большим, то он либо удаляется, либо переименовывается (создается резервная копия файла), а дальнейшие сообщения начинают записываться в новый, пустой файл. У команды tail есть две опции: -f
и -F
Рассмотрим пример. Будем отслеживать лог-файл /var/log/apache2/error.log
. Выполняем команду tail
с опцией -F
Tail -F /var/log/apache2/error.log
Если система переместит (переименует) файл error.log
в файл error.log.1
и создаст новый файл error.log
, то наша команда tail продолжит отслеживать уже новый файл error.log
Если бы мы в этом примере использовали опцию -f
,
то команда tail продолжила бы отслеживать файл error.log.1
, который для нас уже неактуален при просмотре логов в реальном времени. Команда tail поддерживает отслеживание нескольких файлов одновременно. Для этого необходимо указать имена файлов через пробел. Tail -f /var/log/apache2/error.log /var/log/apache2/access.log
Как только какой-либо из файлов меняется, на экран выводится имя этого файла и новые записи в нем. Для одновременного отслеживания нескольких лог-файлов существует очень удобная утилита multitail
Она не просто выводит данные, а создает для каждого файла свое окно (область) и выводит данные в этом окне. С ее помощью очень удобно отслеживать сразу множество лог файлов и видеть их в одном окне терминала. Утилиту multitail
можно установить из штатных репозиториев вашего дистрибутива. Для установки выполните команду (выберите соответствующую команду для вашего дистрибутива): Sudo apt install multitail
sudo yum install multitail
sudo dnf install multitail
Использование: Multitail /var/log/apache2/access.log /var/log/apache2/error.log
Для выхода из утилиты нажмите клавишу q
П
еред тем, как начать с этого руководства рекомендуется, чтобы вы вошли на свой Linux и следовать этому руководству, глядя непосредственно на файлы, так как это лучший способ узнать и запомнить тему. Узнайте о файлах журналов, когда ваша система работает гладко, как это понимание лог-файлов поможет вам успешно диагностировать и устранить любые проблемы, которые могут возникнуть в дальнейшем. И, наконец, ‘файлы журнала Linux
‘ является довольно обширной темой, и она вряд ли будет полностью покрыта в одной статье. Эта статья, вероятно, может служить только в качестве общего руководства. Каждое приложение, установленное в системе имеет свой собственный механизм протоколирования всякий раз, когда вам нужно конкретную информацию по приложению, то документация приложения является лучшим местом, где искать его. В качестве общего стандарта в почти каждой системе Linux, файлы журналов находятся в каталоге /var/log . Любые другие приложения, которые вы можете позже установить на вашей системе, вероятно, бросят свои файлы журнала здесь. После входа в вашу систему, наберите команду Ls -l /var/log
Чтобы просмотреть содержимое этого каталога. /var/log/messages
– Большая часть общих системных сообщений регистрируются здесь, включая сообщения во время запуска системы. Первичная регистрация Linux демона процесс rsyslogd и его конфигурация находится в /etc/rsyslog.conf
. Для всех файлов журналов с открытым текстом, журналы можно просмотреть с помощью команды cat . Однако, если файл журнала очень большой, то вы можете захотеть использовать команду tail , которая может показать только последнюю часть журнала. Для просмотра последних 500 записей файла введите следующую команду: Tail -n 500 /var/log/messages
Для мониторинга журналов в режиме реального времени tail -f также очень полезная команда, которая будет отслеживать сообщения, как они вошли. Это особенно полезно при поиске и устранении потоков почты и ошибки доставки почты. Tail -f /var/log/maillog
Некоторые журналы Linux, как бинарные файлы, которые должны быть разобраны другим приложением, специально адаптированный для просмотра этих журналов. Эти журналы сохраняются в /var/log/wtmp /var/log/btmp и /var/run/utmp . Для просмотра содержимого /var/log/wtmp используется: last /usr/local/apache/logs/ – Общие журналы . /var/log/exim_mainlog /usr/local/cpanel/logs/ – Все связанные с Cpanel сообщений в этом месте. /var/log/directadmin/ – DirectAdmin связанные журналы. /var/log/httpd/ – Веб-сервер Apache вошли в стандартный каталог. /var/log/proftpd/ – Если используется ProFTPd. /var/log/exim/ – Журналы агента пересылки почты Exim в этой директории. /var/lib/mysql/server.hostname.com.err – Это каталог, ведение журнала на наличие ошибок, связанных с . /var/log/yum.log – Логирование менеджера пакетов Yum. /var/log/apache2/ – На системах Ubuntu журналы веб-сервера Apache хранятся в этом каталоге. Невозможно представить себе пользователя и администратора сервера, или даже рабочей станции на основе Linux, который никогда не читал лог файлы. Операционная система и работающие приложения постоянно создают различные типы сообщений, которые регистрируются в различных файлах журналов. Умение определить нужный файл журнала и что искать в нем поможет существенно сэкономить время и быстрее устранить ошибку. Журналирование является основным источником информации о работе системы и ее ошибках. В этом кратком руководстве рассмотрим основные аспекты журналирования операционной системы, структуру каталогов, программы для чтения и обзора логов. Все файлы журналов, можно отнести к одной из следующих категорий: Большинство же лог файлов содержится в директории /var/log . Для каждого дистрибутива будет отдельный журнал менеджера пакетов. И немного бинарных журналов учета пользовательских сессий. Так как операционная система, даже такая замечательная как Linux, сама по себе никакой ощутимой пользы не несет в себе, то скорее всего на сервере или рабочей станции будет крутится база данных, веб сервер, разнообразные приложения. Каждое приложения или служба может иметь свой собственный файл или каталог журналов событий и ошибок. Всех их естественно невозможно перечислить, лишь некоторые. В домашнем каталоге пользователя могут находится журналы графических приложений, DE. Почти все знают об утилите less и команде tail -f . Также для этих целей сгодится редактор vim и файловый менеджер Midnight Commander. У всех есть свои недостатки: less неважно обрабатывает журналы с длинными строками, принимая их за бинарники. Midnight Commander годится только для беглого просмотра, когда нет необходимости искать по сложному шаблону и переходить помногу взад и вперед между совпадениями. Редактор vim понимает и подсвечивает синтаксис множества форматов, но если журнал часто обновляется, то появляются отвлекающие внимания сообщения об изменениях в файле. Впрочем это легко можно обойти с помощью <:view /path/to/file> . Недавно я обнаружил еще одну годную и многообещающую, но слегка еще сыроватую, утилиту - lnav
, в расшифровке Log File Navigator. Установка пакета как обычно одной командой. Навигатор журналов lnav
понимает ряд форматов файлов. Что в данном случае означает понимание форматов файлов? Фокус в том, что lnav
больше чем утилита для просмотра текстовых файлов. Программа умеет кое что еще. Можно открывать несколько файлов сразу и переключаться между ними. Программа умеет напрямую открывать архивный файл. Показывает гистограмму информативных сообщений, предупреждений и ошибок, если нажать клавишу . Это с моего syslog-а. Кроме этого поддерживается подсветка синтаксиса, дополнение по табу и разные полезности в статусной строке. К недостаткам можно отнести нестабильность поведения и зависания. Надеюсь lnav
будет активно развиваться, очень полезная программа на мой взгляд. Как известно в линукс есть очень важный инструмент sysklogd, который позволяет вести журнал событий происходящих в системе. Системным администраторам, да и любому пользователю столкнувшемуся с ошибками придется посмотреть логи linux
, чтобы выявить проблему и решить ее. Все лог файлы linux
распологаются в папке: Посмотреть логи linux можно с помощью нескольких консольных программ. Ниже разберем несколько примеров: 1. Вывод и пролистываение текста с помощью less: 2. Просмотр логов в реальном времени: 3. Открываем файл с помощью cat: 4. Выводим первые 10 строк из файла: 5. Выводим последние 10 строк из файла: 6. Выводим определенное количество строк: 7. Выводим только ошибки: Кроме консоли и текстовых редакторов вы также можете использовать графическую программу «System Log Viewer», которая в удобной и наглядной форме покажет вам логи в линукс
.Мониторинг лог-файлов командой tail
tail -f ИмяЛогФайла
Команда tailf
tail -F. Если файл был переименован или удален
Отслеживание нескольких лог-файлов одновременно
Общие файлы журнала
/var/log/cron
– Сообщения демона cron регистрируются здесь. Создается и останавливаются задачи, а также сообщения об ошибках.
/var/log/maillog
или /var/log/mail.log
– Регистрация информации почтового сервера, запущенного на сервере.
/var/log/wtmp
– Содержит историю всех входов и выходов.
/var/log/btmp
– Записи неудачных попыток входа в систему.
/var/run/utmp
– Логирование настоящего входа в состояние каждого пользователя.
/var/log/dmesg
– Содержит очень важные сообщения о ядре кольцевого буфера. В человеческом понимании это означает, что, когда ядро раскручивается он записывает всю информацию здесь. Команда dmesg
может быть использована для просмотра сообщений этого файла.
/var/log/secure
– Сообщения, связанные с безопасностью будут храниться здесь. Это включает в себя сообщения от SSH – демона, неудачный ввод пароля, несуществующих пользователей и т.д.
/var/log/mariadb
– Если MariaDB установлена в системе, то это место, где она будет бросать журналы по умолчанию
/var/log/mysql
– Если база данных устанавливается, то это директория записи данных по умолчанию.Просмотр и управление файлами журналов
Для просмотра содержимого /var/log/btmp используется: lastb
Для просмотра содержимого /var/run/utmp используется: whoCpanel файлы конкретных журналов
Файлы журнала Apache:
/usr/local/apache/domlogs/ – Журналы конкретного домена.файлы журнала Exim:
/var/log/exim_rejectlogФайлы журнала Cpanel:
Файлы конкретных журналов DirectAdmin
Файлы журнала DirectAdmin
Файлы журналов
/var/log/httpd/domains/ – Для всех остальных доменов журналы находятся в этом подкаталоге.Файлы журнала
/var/log/pureftpd.log – Если используется PureFTPd.Файлы журналов Exim
Файлы журналов
Файлы журналов
/var/log/httpd – В системах, основанных на / RedHat CentOS это где веб-сервер Apache будет хранить журналы по умолчанию.Файлы журналов
/var/log/apt/ – Журналы из управления пакетами в Ubuntu.Основные лог файлы
Поддерживаемые уровни журналирования (приоритеты):
emerg - система неиспользуемая
alert - действие должно быть произведено немедленно
crit - условия критичности
err - условия ошибок
warn - условия предупреждений
notice - обычные, но значимые условия
info - информационный
debug - отладочные сообщения
(5:520)$ dmesg -l err
usb 1-1.1: 2:1: cannot get freq at ep 0x1
usb 1-1.1: 1:1: cannot get freq at ep 0x81
usb 1-1.1: 1:1: cannot get freq at ep 0x81
(5:535)$ sudo utmpdump /var/log/wtmp
[Вт авг 11 16:50:07 2015]
[~~ ] [Вт авг 11 16:50:08 2015]
[~~ ] [Вт авг 11 16:50:57 2015]
[Вт авг 11 16:50:57 2015]
[~~ ] [Вт авг 11 16:50:57 2015]
И другие журналы
Initializing "kcm_input" : "kcminit_mouse"
Initializing "kcm_access" : "kcminit_access"
Initializing "kcm_kgamma" : "kcminit_kgamma"
QXcbConnection: XCB error: 3 (BadWindow), sequence: 181, resource id: 10486050, major code: 20 (GetProperty), minor code: 0
kf5.kcoreaddons.kaboutdata: Could not initialize the equivalent properties of Q*Application: no instance (yet) existing.
QXcbConnection: XCB error: 3 (BadWindow), sequence: 181, resource id: 10486050, major code: 20 (GetProperty), minor code: 0
Qt: Session management error: networkIdsList argument is NULL
Чем просматривать - lnav
$ aptitude install lnav #Debian/Ubuntu/LinuxMint
$ yum install lnav #RedHat/CentOS
$ dnf install lnav #Fedora
$ emerge -av lnav #Gentoo, нужно добавить в файл package.accept_keywords
$ yaourt -S lnav #Arch
(5:471)$ sudo lnav /var/log/pm-powersave.log /var/log/pm-suspend.log
(5:471)$ lnav -r /var/log/Xorg.0.log.old.gz
Mon May 02 20:25:00 123 normal 3 errors 0 warnings 0 marks
Mon May 02 22:40:00 2 normal 0 errors 0 warnings 0 marks
Mon May 02 23:25:00 10 normal 0 errors 0 warnings 0 marks
Tue May 03 07:25:00 96 normal 3 errors 0 warnings 0 marks
Tue May 03 23:50:00 10 normal 0 errors 0 warnings 0 marks
Wed May 04 07:40:00 96 normal 3 errors 0 warnings 0 marks
Wed May 04 08:30:00 2 normal 0 errors 0 warnings 0 marks
Wed May 04 10:40:00 10 normal 0 errors 0 warnings 0 marks
Wed May 04 11:50:00 126 normal 2 errors 1 warnings 0 marks
/var/log
log-файлы линукс:
messages
Содержит глобальные системные логи Linux, в том числе те, которые регистрируются при запуске системы.
dmesg
Содержит сообщения, полученные от ядра. Регистрирует много сообщений еще на этапе загрузки, в них отображается информация об аппаратных устройствах, которые инициализируются в процессе загрузки. Количество сообщений в логе ограничено, и когда файл будет переполнен, с каждым новым сообщением старые будут перезаписаны.
auth.log
Содержит информацию об авторизации пользователей в системе, включая пользовательские логины и механизмы аутентификации, которые были использованы.
boot.log
Содержит информацию, которая регистрируется при загрузке системы.
daemon.log
Включает сообщения от различных фоновых демонов
kern.log
Тоже содержит сообщения от ядра, полезны при устранении ошибок пользовательских модулей, встроенных в ядро.
lastlog
Отображает информацию о последней сессии всех пользователей. Это нетекстовый файл, для его просмотра необходимо использовать команду lastlog.
mail.log
журналы сервера электронной почты, запущенного в системе.
user.log
Информация из всех журналов на уровне пользователей.
Xorg.x.log
Лог сообщений Х сервера.
btmp
Содержит информацию о неудачных попытках входа.
cups
Все сообщения, связанные с печатью и принтерами.
cron
Всякий раз когда демон Cron запускает выполнения программы, он записывает отчет и сообщения самой программы в этом файле.
secure
Содержит информацию, относящуюся к аутентификации и авторизации.
wtmp
Содержит журнал входа пользователей в систему. Используйте команду wtmp, чтобы отобразить содержимое этого файла.
faillog
Содержит неудачные попытки входа в систему. Используйте команду faillog, чтобы отобразить содержимое этого файла.
mysqld.log
Содержит файлы логов сервера баз данных MySQL.
less /var/log/messages
tail -f /var/log/messages
cat /var/log/dmesg
head /var/log/dmesg
tail /var/log/dmesg
head -n3 /var/log/dmesg
где, -n3 — количество строк которое нужно показать.
grep -i error /var/log/messages