• Введение в лог-файлы Linux. Отслеживание логов Linux в реальном времени Log файлы linux

    08.05.2023

    Introduction

    One of the things which makes GNU/Linux a great operating system is that virtually anything and everything happening on and to the system may be logged in some manner. This information is invaluable for using the system in an informed manner, and should be one of the first resources you use to trouble-shoot system and application issues. The logs can tell you almost anything you need to know, as long as you have an idea where to look first.

    Your Ubuntu system provides vital information using various system log files. These log files are typically plain ASCII text in a standard log file format, and most of them sit in the traditional system log subdirectory /var/log . Many are generated by the system log daemon, syslogd on behalf of the system and certain applications, while some applications generate their own logs by writing directly to files in /var/log .

    This guide talks about how to read and use several of these system log files, how to use and configure the system logging daemon, syslogd , and how log rotation works. See the Resources section for additional information.

    Target Audience

    This guide will be simple enough to use if you have any experience using the console and editing text files using a text editor. See the end of this document for some essential commands that may help you find your way around these files if you"re relatively new to the command line.

    System Logs

    System logs deal primarily with the functioning of the Ubuntu system, not necessarily with additional applications added by users. Examples include authorization mechanisms, system daemons, system messages, and the all-encompassing system log itself, syslog .

    Authorization Log

    The Authorization Log tracks usage of authorization systems, the mechanisms for authorizing users which prompt for user passwords, such as the Pluggable Authentication Module (PAM) system, the sudo command, remote logins to sshd and so on. The Authorization Log file may be accessed at /var/log/auth.log . This log is useful for learning about user logins and usage of the sudo command.

    Use grep to cut down on the volume. For example, to see only information in the Authorization Log pertaining to sshd logins, use this:

    grep sshd /var/log/auth.log | less

    Daemon Log

    A daemon is a program that runs in the background, generally without human intervention, performing some operation important to the proper running of your system. The daemon log at /var/log/daemon.log and contains information about running system and application daemons such as the Gnome Display Manager daemon gdm , the Bluetooth HCI daemon hcid , or the MySQL database daemon mysqld . This can help you trouble-shoot problems with a particular daemon.

    Again, use grep to find specific information, plugging in the name of the daemon you"re interested in.

    Debug Log

    The debug log at /var/log/debug and provides detailed debug messages from the Ubuntu system and applications which log to syslogd at the DEBUG level.

    Kernel Log

    The kernel log at /var/log/kern.log provides a detailed log of messages from the Ubuntu Linux kernel. These messages may prove useful for trouble-shooting a new or custom-built kernel, for example.

    Kernel Ring Buffer

    The kernel ring buffer is not really a log file per se, but rather an area in the running kernel you can query for kernel bootup messages via the dmesg utility. To see the messages, use this:

    dmesg | less

    Or to search for lines that mention the Plug & Play system, for example, use grep like this:

    dmesg | grep pnp | less

    By default, the system initialization script /etc/init.d/bootmisc.sh sends all bootup messages to the file /var/log/dmesg as well. You can view and search this file the usual way.

    System Log

    The system log typically contains the greatest deal of information by default about your Ubuntu system. It is located at /var/log/syslog , and may contain information other logs do not. Consult the System Log when you can"t locate the desired log information in another log. It also contains everything that used to be in /var/log/messages .

    Application Logs

    Many applications also create logs in /var/log . If you list the contents of your /var/log subdirectory, you will see familiar names, such as /var/log/apache2 representing the logs for the Apache 2 web server, or /var/log/samba , which contains the logs for the Samba server. This section of the guide introduces some specific examples of application logs, and information contained within them.

    Apache HTTP Server Logs

    The default installation for Apache2 on Ubuntu creates a log subdirectory: /var/log/apache2 . Within this subdirectory are two log files with two distinct purposes:

      /var/log/apache2/access.log - records of every page served and every file loaded by the web server.

      /var/log/apache2/error.log - records of all error conditions reported by the HTTP server

    By default, every time Apache accesses a file or page, the access logs record the IP address, time and date, browser identification string, HTTP result code and the text of the actual query, which will generally be a GET for a page view. Look at the Apache documentation for a complete rundown; quite a lot can be gleaned from this file, and indeed many statistical packages exist that perform analyses of these logs.

    Also, every time any error occurs, Apache adds a line to the error log. If you run PHP with error and warning messages disabled, this can be your only way to identify bugs.

    CUPS Print System Logs

    The Common Unix Printing System (CUPS) uses the default log file /var/log/cups/error_log to store informational and error messages. If you need to solve a printing issue in Ubuntu, this log may be a good place to start.

    Rootkit Hunter Log

    The Rootkit Hunter utility (rkhunter) checks your Ubuntu system for backdoors, sniffers and rootkits, which are all signs of compromise of your system. The log rkhunter uses is located at /var/log/rkhunter.log .

    Samba SMB Server Logs

    The Server Message Block Protocol (SMB) server, Samba is popularly used for sharing files between your Ubuntu computer and other computers which support the SMB protocol. Samba keeps three distinct types of logs in the subdirectory /var/log/samba:

      log.nmbd - messages related to Samba"s NETBIOS over IP functionality (the network stuff)

      log.smbd - messages related to Samba"s SMB/CIFS functionality (the file and print sharing stuff)

      log. - messages related to requests for services from the IP address contained in the log file name, for example, log.192.168.1.1 .

    X11 Server Log

    The default X11 Windowing Server in use with Ubuntu is the Xorg X11 server, and assuming your computer has only one display defined, it stores log messages in the file /var/log/Xorg.0.log . This log is helpful for diagnosing issues with your X11 environment.

    Non-Human-Readable Logs

    Some log files found in the /var/log subdirectory are designed to be readable by applications, not necessarily by humans. Some examples of such log files which appear in /var/log follow.

    Login Failures Log

    The login failures log located at /var/log/faillog is actually designed to be parsed and displayed by the faillog command. For example, to print recent login failures, use this:

    faillog

    Last Logins Log

    The last logins log at /var/log/lastlog should not typically be parsed and examined by humans, but rather should be used in conjunction with the lastlog command. For example to see a listing of logins with the lastlog command, displayed one page per screen with the less command, use the following command:

    lastlog | less

    Login Records Log

    The file /var/log/wtmp contains login records, but unlike /var/log/lastlog above, /var/log/wtmp is not used to show a list of recent logins, but is instead used by other utilities such as the who command to present a listed of currently logged in users. This command will show the users currently logged in to your machine:

    who

    System Logging Daemon (syslogd)

    The system logging daemon syslogd , also known as sysklogd , awaits logging messages from numerous sources and routes the messages to the appropriate file or network destination. Messages logged to syslogd usually contain common elements like system hostnames and time-stamps in addition to the specific log information.

    Configuration of syslogd

    The syslogd daemon"s configuration file is /etc/syslog.conf . Each entry in this file consists of two fields, the selector and the action. The selector field specifies a facility to be logged, such as for example the auth facility which deals with authorization, and a priority level to log such information at, such as info , or warning . The action field consists of a target for the log information, such as a standard log file (i.e. /var/log/syslog), or the hostname of a remote computer to send the log information to.

    Echoing Messages to syslogd With Logger

    A neat utility exists in the logger tool, which allows one to place messages into the System Log (i.e. /var/log/syslog) arbitrarily. For example, assume your user name is buddha , and you would like to enter a message into the syslog about a particularly delicious pizza you"re eating, you could use a command such as the following at a terminal prompt:

    logger This Pizza from Vinnys Gourmet Rocks

    and you would end up with a line in the /var/log/syslog file like this:

    Jan 12 23:34:45 localhost buddha: This Pizza from Vinnys Gourmet Rocks

    You can even specify a tag the messages come from, and redirect the output standard error too.

    # # sample logger error jive # logmsg="/usr/bin/logger -s -t MyScript " # announce what this script is, even to the log $logmsg "Directory Checker FooScript Jive 1.0" # test for the existence of Fred"s home dir on this machine if [ -d /home/fred ]; then $logmsg "I. Fred"s Home Directory Found" else $logmsg "E. Fred"s Home Directory was NOT Found. Boo Hoo." exit 1 fi

    Executing this script as chkdir.sh on the machine butters where Fred does not have a home directory, /home/fred , gives the following results:

    bumpy@butters:~$./chkdir.sh MyScript: Directory Checker FooScript Jive 1.0 MyScript: E. Fred"s Home Directory was NOT Found. Boo Hoo. bumpy@butters:~$tail -n 2 /var/log/syslog Jan 12 23:23:11 localhost MyScript: Directory Checker FooScript Jive 1.0 Jan 12 23:23:11 localhost MyScript: E. Fred"s Home Directory was NOT Found. Boo Hoo.

    So, as you can see, we received the messages both via standard error, at the terminal prompt, and they also appear in our syslog.

    Log Rotation

    When viewing directory listings in /var/log or any of its subdirectories, you may encounter log files with names such as daemon.log.0 , daemon.log.1.gz , and so on. What are these log files? They are "rotated" log files. That is, they have automatically been renamed after a predefined time-frame, and a new original log started. After even more time the log files are compressed with the gzip utility as in the case of the example daemon.log.1.gz . The purpose of log rotation is to archive and compress old logs so that they consume less disk space, but are still available for inspection as needed. What handles this functionality? Why, the logrotate command of course! Typically, logrotate is called from the system-wide cron script /etc/cron.daily/logrotate , and further defined by the configuration file /etc/logrotate.conf . Individual configuration files can be added into /etc/logrotate.d (where the apache2 and mysql configurations are stored for example).

    This guide will not cover the myriad of ways logrotate may be configured to handle the automatic rotation of any log file on your Ubuntu system. For more detail, check the Resources section of this guide.

    NOTE: You may also rotate system log files via the cron.daily script /etc/cron.daily/sysklogd instead of using logrotate. Actually, the utility savelog may produce unexpected results on log rotation which configuring logrotate seems to have no effect on. In those cases, you should check the cron.daily sysklogd script in /etc/cron.daily/sysklogd and read the savelog manual page to see if savelog is not in fact doing the rotation in a way that is not what you are specifying with logrotate .

    Essential Commands

    If you"re new to the console and the Linux command line, these commands will get you up and running to the point where you can work with log files at a basic level.

    Getting Started

    To change to the log directory, where most of these files sit, use the cd command. This saves having to type out a full path name for every subsequent command:

    cd /var/log

    Editing Files

    You can view and edit files in GEdit or Kate, the simple text editors that come with Ubuntu and Kubuntu respectively, but these can be overkill when all you want to do is look at a file or make simple changes. The easiest editor to use from the console is nano, which is less powerful but also less complicated than vim or emacs. The command to edit a particular logfile /var/log/example.log using nano is:

    nano example.log

    Press Ctrl+X to exit. It will ask if you want to save your changes when you exit, but unless you run it with the sudo command the files won"t be writable. In general, you won"t want to save your changes to log files, of course.

    Viewing Files

    To simply look at a file, an editor is overkill. Use the less command, which pages through a file one screen at a time:

    less example.log

    You don"t need sudo to look at a file. Press h for help, or q to quit. The cursor keys and page up/down keys will work as expected, and the slash key ("/") will do a case-sensitive search; the n key repeats the last search.

    Viewing the Beginning of Files

    To see the first ten lines of a file, use the head command:

    head example.log

    To see some other number of lines from the beginning of the file, add the -n switch, thus:

    head -n 20 example.log

    Viewing the End of Files

    To see the final ten lines of a file, the analogous command is tail:

    tail example.log

    Again, the -n switch gives you control over how many lines it displays:

    tail -n 20 example.log

    Watching a Changing File

    Also, the -f ("follow") switch puts tail into a loop, constantly waiting for new additions to the file it"s displaying. This is useful for monitoring files that are being updated in real time:

    tail -f example.log

    Press Ctrl+C to quit the loop.

    Searching Files

    Because log files can be large and unwieldy, it helps to be able to focus. The grep command helps you strip out only the content you care about. To find all the lines in a file containing the word "system", for example, use this:

    grep "system" example.log

    To find all the lines containing "system" at the beginning of the line, use this:

    grep "^system" example.log

    Note the caret symbol, a regular expression that matches only the start of a line. This is less useful for standard log files, which always start with a date and time, but it can be handy otherwise. Not all files have a standard format.

    Any time the result of a grep is still too long, you can pipe it through less:

    grep "system" example.log | less

    Resources

    Additional information on system and application logs and syslogd is available via the following resources:

    Local System Resources

    System manual page for the dmesg kernel ring buffer utility

    System manual page for the faillog command (and also the faillog configuration file via man 5 faillog)

    System manual page for the grep pattern searching utility

    System manual page for the head utility

    System manual page for the kernel log daemon (klogd)

    System manual for the last command which shows last logged in users

    System manual page for the less paging utility

    System manual page for the logger command-line interface to syslog utility

    System manual page for the the logrotate utility

    System manual page for the savelog log file saving utility

    System manual page for the system log daemon (syslogd)

    System manual page for the syslogd configuration file

    System manual page for the tail utility

    Так как это постоянный вопрос новых пользователей на Линукс-форумах, им посвящается этот пост.

    Новичку на форуме Линукс.
    // читается скороговоркой//

    Помогите телепатам!
    Сообщите про железо,
    Расскажите о системе,
    Не скрывая ничего.

    В этом деле благородном
    Да поможет вам дэмэседж *
    Вместе с эльэсписиаем **
    Не забудьте про унэйм ***

    Не скрывайте ваши логи,
    И конфиги, кстати, тоже,
    А запостите на форум
    Со скриншотами на пару.

    И тогда уж стопудово
    Аксакалы юниксвея
    Вам помогут и подскажут,
    Как систему починить.

    ----------------------
    * имеется в виду dmesg
    ** вывод команды lspci
    *** команда uname -a


    Зачем нужны лог-файлы и почему они важны

    Нормальные [?] операционные системы ведут подробный протокол собственных действий, записывая всё происходящее в текстовые файлы, log-файлы, лог-файлы или логи . Это обычные текстовые файлы, которые можно прочесть любым текстовым редактором (или средствами самой операционной системы), хотя многие логи доступны на чтение только пользователю root.
    Главное: по логам можно восстановить почти полную картину неполадки, попутно выяснив особенности вашего железа и степени его поддержки.

    Вот как выглядят лог-файлы в Linux:

    usbcore: registered new interface driver hiddev
    input: Logitech USB Receiver as /class/input/input1
    input: USB HID v1.11 Mouse on usb-0000:00:1d.0-1
    input: Logitech USB Receiver as /class/input/input2
    input,hiddev96: USB HID v1.11 Device on usb-0000:00:1d.0-1
    usbcore: registered new interface driver usbhid
    drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver
    usb 1-5: new high speed USB device using ehci_hcd and address 3
    usb 1-5: configuration #1 chosen from 1 choice
    scsi0: SCSI emulation for USB Mass Storage devices
    usb-storage: device found at 3
    usb-storage: waiting for device to settle before scanning
    scsi 0:0:0:0: Direct-Access ChipsBnk SD/MMCReader 4081 PQ: 0 ANSI: 2




    sd 0:0:0:0: 499712 512-byte hardware sectors (256 MB)
    sd 0:0:0:0: Write Protect is off
    sd 0:0:0:0: Mode Sense: 0b 00 00 08
    sd 0:0:0:0: Assuming drive cache: write through
    sda: sda1 sda2
    sd 0:0:0:0: Attached SCSI removable disk
    sd 0:0:0:0: Attached scsi generic sg0 type 0
    usb-storage: device scan complete
    Из этого куска лога видно, что произошло два события:
    • подключилась мышь (выделено фиолетовым): input: USB HID v1.11 Mouse on usb-0000:00:1d.0-1 и скорее всего эта мышь беспроводная (об этом говорит USB Receiver )
    • подключили USB-накопитель (выделено зелёным): usb 1-5: new high speed USB device using ehci_hcd and address 3, который опознан как USB-диск scsi0: SCSI emulation for USB Mass Storage devices ёмкостью 256Мб sd 0:0:0:0: 499712 512-byte hardware sectors (256 MB) и содержащий две партиции (два раздела с данными) sda: sda1 sda2 .
    Как видите, из лог-файлов можно выудить огромное количество подробностей о работе аппаратуры. Другие лог-файлы могут содержать сообщения об ошибках и часто рецепты, что можно попробовать для их исправления.

    Где хранятся лог-файлы в Linux

    Все лог-файлы должны лежать в одном каталоге, который находится тут:
    В общем, довольно логично. Но заходить туда не обязательно: вспоминаем, что консоль - наш друг и мощное оружие в умелых руках. Для того, чтобы быстро получить логи и прикрепить их к посланию на форум / опубликованию / пересылке по почте делаем так:
    1. Из консоли:
      1. в графическом режиме - в меню программ она может называться xterm, terminal, konsole, bash.
      2. в консольном режиме - если видите перед собой чёрный экран со словами типа penta4@penta4rce:~$ ничего пока делать не надо - вы и так в консоли:-)
    2. Далее пишем:
      1. dmesg > dmesg.txt
      2. lspci -v > lspci.txt
      3. cp /var/log/X.org.0.log ~/
    3. Далее видим в своём домашнем каталоге файлы dmesg.txt и lspci.txt и X.org.0.log
    Вот этих файлов от вас так настойчиво добиваются на форумах. Наличие логов, вместе с подробным описанием проблемы и разумным количеством скриншотов способны радикально быстрее получить грамотный и исчерпывающий ответ (а ещё чаще - прямую ссылку на решение).

    Для более подробного изучения неполадки и выяснения особенностей работы аппаратуры можно использовать приёмы работы, замечательно описанные

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

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

    И, наконец, ‘файлы журнала Linux ‘ является довольно обширной темой, и она вряд ли будет полностью покрыта в одной статье. Эта статья, вероятно, может служить только в качестве общего руководства. Каждое приложение, установленное в системе имеет свой собственный механизм протоколирования всякий раз, когда вам нужно конкретную информацию по приложению, то документация приложения является лучшим местом, где искать его.

    Общие файлы журнала

    В качестве общего стандарта в почти каждой системе Linux, файлы журналов находятся в каталоге /var/log . Любые другие приложения, которые вы можете позже установить на вашей системе, вероятно, бросят свои файлы журнала здесь. После входа в вашу систему, наберите команду

    Ls -l /var/log

    Чтобы просмотреть содержимое этого каталога.

    /var/log/messages – Большая часть общих системных сообщений регистрируются здесь, включая сообщения во время запуска системы.
    /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 – Если база данных устанавливается, то это директория записи данных по умолчанию.

    Просмотр и управление файлами журналов

    Первичная регистрация 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
    Для просмотра содержимого /var/log/btmp используется: lastb
    Для просмотра содержимого /var/run/utmp используется: who

    Cpanel файлы конкретных журналов

    Файлы журнала Apache:

    /usr/local/apache/logs/ – Общие журналы .
    /usr/local/apache/domlogs/ – Журналы конкретного домена.

    файлы журнала Exim:

    /var/log/exim_mainlog
    /var/log/exim_rejectlog

    Файлы журнала Cpanel:

    /usr/local/cpanel/logs/ – Все связанные с Cpanel сообщений в этом месте.

    Файлы конкретных журналов DirectAdmin

    Файлы журнала DirectAdmin

    /var/log/directadmin/ – DirectAdmin связанные журналы.

    Файлы журналов

    /var/log/httpd/ – Веб-сервер Apache вошли в стандартный каталог.
    /var/log/httpd/domains/ – Для всех остальных доменов журналы находятся в этом подкаталоге.

    Файлы журнала

    /var/log/proftpd/ – Если используется ProFTPd.
    /var/log/pureftpd.log – Если используется PureFTPd.

    Файлы журналов Exim

    /var/log/exim/ – Журналы агента пересылки почты Exim в этой директории.

    Файлы журналов

    /var/lib/mysql/server.hostname.com.err – Это каталог, ведение журнала на наличие ошибок, связанных с .

    Файлы журналов

    /var/log/yum.log – Логирование менеджера пакетов Yum.
    /var/log/httpd – В системах, основанных на / RedHat CentOS это где веб-сервер Apache будет хранить журналы по умолчанию.

    Файлы журналов

    /var/log/apache2/ – На системах Ubuntu журналы веб-сервера Apache хранятся в этом каталоге.
    /var/log/apt/ – Журналы из управления пакетами в Ubuntu.

    Managing Log files on a Linux System

    Linux"s Log Files

    All Linux systems generate systems logs that can be inspected to find information about your running system. These log files can contain a wealth of information from simple information messages to critical system issues. Most of the logging files that are created are in plain text. This means that it is very easy to view these using standard commands such as "more", "less", "cat", "head", "tail", "pg" or by using your preferred text editor such as "vi or vim".


    By convention, most of the log files that are created are found under the directory "/var/log/". This is a standard area where system messages and logged/recorded. Depending on which Linux distribution you are using you will probably have a "message" file or a "syslog" file that contains recent activity. Logfiles are generally created by either a "syslogd" or "rsyslogd" logging demon. These demons are highly configurable and can filter messages into specified files. As well as handling local events, it is possible to log messages to remote servers dedicated to receiving these type of messages. It is quite common within larger organisations to have a dedicated syslog server. Some basic configuration options will be covered later. It is also common practice to have some form of log rotation process.

    Below is a list of some of the more common log files that you will find. Some of these are distribution specific:


    Log File Description
    /var/log/messages Global system messages are logged here. (default logging area on some systems)
    /var/log/syslog Global System messages are logged here. (default logging area on some systems)
    /var/log/auth.log System Authorisation information, including user login information
    /var/log/kern.log Kernel messages are logged here
    /var/log/mail.log Contains logging information from your mail server
    /var/log/boot.log System boot messages are logged here
    /var/log/cups.log Printer related messages logged here
    /var/log/wtmp Contains information relating to users logged onto your system
    /var/log/samba Samba log files for smbd and nmbd. If configured can contain specific log files for users.
    /var/log/dpkg.log Contains information from installations that use dpkg to install or remove a package
    /var/log/zypper.log Contains messages from zypper package manager tool
    /var/log/apt Contains information from package updates that use APT
    /var/log/dmesg Contains Kernel ring buffer messages

    Although the above is not an exhaustive view of all the files that can be found within the "/var/log" area. It does give you a rough idea of what is logged. It is important to remember that many third part products (software) will also write to this area. Often a sub-directory is created with various log information held within. Samba is a good example of this.

    As mentioned earlier it is the "syslogd" or "rsyslogd" daemon that handles the majority of logging on your systems.

    rsyslogd - logging utility

    Rsyslogd is a reliable extended version of the syslogd service. Linux uses rsyslogd as its mechanism to record log files either in a central area or split into separate directories for clarity. It is also possible to send information to a dedicated logging server. Multiple processes may write to the same area without causing file locking. Simple commands can be used directly from scripts to write to this area.

    Configuration Files

    How rsyslogd behaves on your system is down to its configuration. This file is generally located in "/etc/rsyslog.conf". This file contains text which describes what should happen to messages when they are logged. It is here that you can specify specific directories for specific message types. Default logging rules are generally located under "/etc/rsyslog.d/"

    Example of rsyslogd.conf under Ubuntu

    /etc/rsyslog.conf


    # Default logging rules can be found in /etc/rsyslog.d/50-default.conf ################# #### MODULES #### ################# $ModLoad imuxsock # provides support for local system logging $ModLoad imklog # provides kernel logging support (previously done by rklogd) #$ModLoad immark # provides --MARK-- message capability # provides UDP syslog reception #$ModLoad imudp #$UDPServerRun 514 # provides TCP syslog reception #$ModLoad imtcp #$InputTCPServerRun 514 ########################### #### GLOBAL DIRECTIVES #### ########################### # # Use traditional timestamp format. # To enable high precision timestamps, comment out the following line. # $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # Filter duplicated messages $RepeatedMsgReduction on # # Set the default permissions for all log files. # $FileOwner syslog $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 $PrivDropToUser syslog $PrivDropToGroup syslog # # Where to place spool files # $WorkDirectory /var/spool/rsyslog # # Include all config files in /etc/rsyslog.d/ # $IncludeConfig /etc/rsyslog.d/*.conf

    Hashes "#" are used to denote a comment or for commenting out a function that is not required.
    Notice the last line $IncludeConfig /etc/rsyslog.d/*.conf . This is where we can specify custom rules/mappings.


    # Default rules for rsyslog. # # For more information see rsyslog.conf(5) and /etc/rsyslog.conf # # First some standard log files. Log by facility. # auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log #daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log #lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log #user.* -/var/log/user.log # # Logging for the mail system. Split it up so that # it is easy to write scripts to parse these files. # #mail.info -/var/log/mail.info #mail.warn -/var/log/mail.warn mail.err /var/log/mail.err # # Logging for INN news system. # news.crit /var/log/news/news.crit news.err /var/log/news/news.err news.notice -/var/log/news/news.notice # # Some "catch-all" log files. # #*.=debug;\ # auth,authpriv.none;\ # news.none;mail.none -/var/log/debug #*.=info;*.=notice;*.=warn;\ # auth,authpriv.none;\ # cron,daemon.none;\ # mail,news.none -/var/log/messages # # Emergencies are sent to everybody logged in. # *.emerg:omusrmsg:* # # I like to have messages displayed on the console, but only on a virtual # console I usually leave idle. # #daemon,mail.*;\ # news.=crit;news.=err;news.=notice;\ # *.=debug;*.=info;\ # *.=notice;*.=warn /dev/tty8 # The named pipe /dev/xconsole is for the `xconsole" utility. To use it, # you must invoke `xconsole" with the `-file" option: # # $ xconsole -file /dev/xconsole [...] # # NOTE: adjust the list below, or you"ll go crazy if you have a reasonably # busy site.. # daemon.*;mail.*;\ news.err;\ *.=debug;*.=info;\ *.=notice;*.=warn |/dev/xconsole

    The default logging area is called "syslog", see below exert


    *.*;auth,authpriv.none -/var/log/syslog

    What are Facilities and Levels?

    Whenever the rsyslogd daemon receives a logging message, it acts based on the message type (Facility) and a Level (Priority). These mappings can be seen in your "/etc/syslog.conf" file or your included "/etc/syslog.d/*.conf" files.

    Each entry within the configuration file can specify one or more facility/level selectors followed by an action. A selector consists of a facility or facilities followed by a single action. Action is normally the name of the directory and file that is to receive the messages into.

    facility.level action

    Example: mail.* -/var/log/mail - Here, "mail" is the facility, level is set to "*" and action is "/var/log/mail"

    Facility

    A facility represents the creator of the message, these normally consist of:

    auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, syslog, user, local0 - local7, "* " signifies any facility

    These facilities give us the ability to control where messages from certain sources are sent to. The facilities local0 - local7 are for use by your own scripts.

    Level (Priority)

    The level specifies the severity threshold. These can be: (lowest priority first)

    debug, info, notice, warning, err, crit, alert, emerg .

    On older systems you may see "warn, error or panic". A level of none will disable the associated facility. These priorities control the amount of detail that is sent to each logfile. A single period "." separates the facility from the level. Together these are known as the message selector . An asterisk "* " may be used to specify all facilities or levels. Similar to facilities, wildcards "*" can be used along with "none". Only one level or wildcard may be specified with each selector. The following modifiers may be used "= " and "! "

    If you specify only one level within a selector without any modifiers, you are actually specifying that level plus all other priorities. For example the selector user.notice is actually saying all user related messages having a level of notice or higher will be sent to the specified action area. If you require only a level of "notice", then you will have to use the "= " modifier:

    user.=notice - Now means any user related messages with a level priority of "notice" only will be sent to the relevant logging area.

    If you use the "! " modifier, this will negate your level priority. So if we specified user.!notice is the equivalent of all user related messages with a level priority of "notice" or higher. You can also specify user.!=notice which specify all user related messages except for ones with the level priority of "notice".

    Actions

    The action section is the destination for the messages. The action can be a filename such as "/var/log/syslog" or a hostname or IP address prefixed with the "@" sign. The latter option is popular in large organisations and enterprises. Quite often security related messages may be sent to a central logging server for further scrutiny.

    rsyslog.conf structures

    As rsyslogd is an enhanced version of the syslogd it can handle the older legacy style constructs known as sysklogd . It also handles legacy versions of rsyslog. However, the true power of rsyslog comes into play when you use what is known as "RainerScript ". This is the new style format for rsyslog which can handle complex cases with ease. In the example below you can see old format entries along with newer entries that use "if - then" constructs for a more precise handling.

    Example section of "/etc/rsyslog.conf taken from openSUSE


    # # NetworkManager into separate file and stop their further processing # if ($programname == "NetworkManager") or \ ($programname startswith "nm-") \ then -/var/log/NetworkManager & ~ # # email-messages # mail.* -/var/log/mail mail.info -/var/log/mail.info mail.warning -/var/log/mail.warn mail.err /var/log/mail.err # # news-messages # news.crit -/var/log/news/news.crit news.err -/var/log/news/news.err news.notice -/var/log/news/news.notice

    Message Testing with the logger command

    logger is a shell command interface into the syslog module. Logger allows you to make entries directly into the system log. This is very useful when incorporated into a script or when you want to test your message selector and mappings.

    In its simplest form we can issue logger "I am a test" . This message would then go to our default area (probably /var/log/syslog or /var/log/messages) depending on how you have configured your rules. You can also specify a priority using the "-p or --priority" option. Examples of logger inaction:


    john@john-desktop:/var/log$ logger "I am a Test of logger" Mar 22 22:39:51 john-desktop kernel: [ 9588.319477] dev_remove_pack: edad0884 not found. Mar 22 22:45:01 john-desktop CRON: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1) Mar 22 22:47:31 john-desktop john: I am a Test of logger

    Basic Logger Usage

    Usage: logger Options: -d, --udp use UDP (TCP is default) -i, --id log the process ID too -f, --file log the contents of this file -h, --help display this help text and exit -n, --server write to this remote syslog server -P, --port use this UDP port -p, --priority Mark given message with this priority -s, --stderr output message to standard error as well -t, --tag mark every line with this tag -u, --socket write to this Unix socket -V, --version output version information and exit

    Getting help with Rsyslog

    The above is intended as an overview to the processes that takes place for logging of messages to occur. For further information you can issue "man rsyslogd" from your console for an overview of the many options. For further reading you can head to the main "rsyslog" website: www.rsyslog.com

    dmesg

    "dmesg" is a special command that stands for display message. dmesg will display the message buffer of the kernel. dmesg is very useful if you want to view the messages that flew past your screen quickly during the boot process. Another useful trick is to redirect the output from the dmesg command to a temporary file: dmesg > /tmp/temp.txt .

    dmesg is also useful if you are having issues with an I/O device or a "USB" device. dmesg can be used in combination with the grep command to find exactly what you are looking for quickly: dmesg | grep -i usb

    dmesg basic Overview

    Usage: dmesg Options: -C, --clear clear the kernel ring buffer -c, --read-clear read and clear all messages -D, --console-off disable printing messages to console -d, --show-delta show time delta between printed messages -E, --console-on enable printing messages to console -f, --facility restrict output to defined facilities -h, --help display this help and exit -k, --kernel display kernel messages -l, --level restrict output to defined levels -n, --console-level set level of messages printed to console -r, --raw print the raw message buffer -s, --buffer-size buffer size to query the kernel ring buffer -T, --ctime show human readable timestamp (could be inaccurate if you have used SUSPEND/RESUME) -t, --notime don"t print messages timestamp -u, --userspace display userspace messages -V, --version output version information and exit -x, --decode decode facility and level to readable string Supported log facilities: kern - kernel messages user - random user-level messages mail - mail system daemon - system daemons auth - security/authorisation messages syslog - messages generated internally by syslogd lpr - line printer subsystem news - network news subsystem Supported log levels (priorities): emerg - system is unusable alert - action must be taken immediately crit - critical conditions err - error conditions warn - warning conditions notice - normal but significant condition info - informational debug - debug-level messages

    В процессе своей работы система отслеживает и сохраняет в специальные файлы некоторые события, которые она считает важными или просто нужными для использования в целях исправления и отладки ошибок, сбойных конфигураций и т. д. Файлы, в которых хранятся эти события называются файлами журналов или файлами регистрации. Нередко файлы регистрации занимают слишком много дискового пространства, что может свидетельствовать как о неисправности системы, ошибках конфигураций, так и о просто неправильной настройке демонов регистрации событий, которые отслеживают и собирают всё подряд. Таким образом работа с системой регистрации событий - важная составляющая в работе любого системного администратора, от которой всецело зависит качество обслуживания систем и как следствие - их надёжность и долговечность.

    Как устроена система регистрации событий?

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

    Основным инструментом регистрации событий в UNIX и Linu до сих пор остаётся демон syslogd системы Syslog. Но следует иметь в виду также и то, что на протяжении длительного времени из-за многообразия всевозможных ответвлений UNIX и версий Linux множество программных пакетов, служебных скриптов, сетевых демонов используют свои собственные журналы, порой отличающимся экзотическим форматом.

    В общем случае системой Syslog (и другими специализированными программами) производится перехват отслеживаемого события и регистрация его в файле регистрации. Само регистрируемое событие представляет собой строку текста, содержащую данные о дате/времени, типе, степени важности события. Также в этот набор могут быть, в зависимости от ситуации, включены и другие данные. Сама строка регистрируемого события для выделения указанных компонентов разбивается символами-разделителями: пробелы, табуляции, а также знаками пунктуации.

    Журналы регистрации легко просматривать, поскольку они являются обычными текстовыми файлами. Для эффективной работы с журналами используются самые стандартные инструменты из базовой поставки любого дистрибутива - команды и . Если нужно «ворошить» очень большие и сложные по формату журналы, то можно (и даже нужно) вместо утилиты grep использовать другой, гораздо более производительный и гибкий в подобных задачах инструмент - утилиту . Язык обработки текста Perl также очень хорошо подходит для этого.

    Типичная запись системного журнала системы Syslog обычно выглядит следующим образом:

    Dec 18 15:12:42 backup.main.superhosting.ru sbatchd: sbatchd/main: ls_info() failed: LIM is down; try later; trying ... Dec 18 15:14:28 system.main.superhosting.ru pop-proxy: Connection from 186.115.198.84 Dec 18 15:14:30 control.main.superhosting.ru pingem : office.main.superhosting.ru has not answered 42 times Dec 18 15:15:05 service.main.superhosting.ru vmunix: Multiple softerrors: Seen 100Corrected Softerrors from SIMM J0201 Dec 18 15:15:16 backup.main.superhosting.ru PAM_unix: (sshd) session closed "for user trent

    В данном случае можно видеть, что в одном из журналов Syslog собраны события из нескольких источников: программы sbathd, pingem, pop-proxy. Также можно видеть, что события регистрируются для нескольких хостов, взаимодействующих с данной системой: backup, system, office и service.

    log файлы и их расположение в Linux

    Как уже отмечалось, в системах UNIX и Linux нет чётких соглашений о том, где и как должны храниться журналы регистрации. Они могут быть разбросаны хоть по всей файловой системе, поэтому для каждого администратора важно сразу разобраться, где и для каких пакетов и демонов находятся соответствующие файлы журналов. Но несмотря на отсутствие чётких формальных регламентов относительно мест хранения журналов, всё же существует традиционно сложившееся правило, что эти файлы должны находиться в каталогах /var/log, /var/log/syslog, а также в /var/adm.

    Как правило, доступ для чтения файлов в указанных каталогах предоставляется только суперпользователю, однако нет ничего страшного, если для часто просматриваемых журналов, в которых также нет важной системной информации настроить более «демократический» режим доступа. Обычно к такому варианту также прибегают для удобства и экономии времени, когда нужно часто и регулярно изучать некоторые журналы, например для веб-сервера Apache, которые обычно находятся в /var/log/apache2 или /var/log/httpd.

    Стоит также помнить и о том, что бывают случаи, когда (особенно на сбойных конфигурациях) общий объём файлов журналов резко увеличивается, при этом велик риск «уложить» систему. Для удобства контроля за свободным пространством на устройствах хранения, а также для надёжности каталог /var часто выносят в отдельную файловую систему на отдельном разделе.

    Некоторые специальные файлы журналов

    В следующей таблице приводятся сведения о некоторых журнальных файлах, информация из которых очень полезна для системного администрирования:

    Файл Программа Место Частота Системы Назначение
    acpid acpid Ф 64к RZ События, связанные с системой питания
    auth.log sudo и прочие S М U Информация об авторизации
    apache2/* httpd или apache2 Ф Д ZU Журналы веб-сервера Apache
    apt* APT Ф М U Установщики пакетов
    boot.log Сценарии запуска Ф М R Логи сценариев запуска
    boot.msg Ядро В - Z Образ буфера сообщений ядра
    cron, cron S Н RAH Логи и сведения о работе демона cron
    cups/* CUPS Ф Н ZRU Сообщения, связанные с системой печати
    daemon.log Разное S Н U Сообщения средств демонов
    debug Разное S Д U Сообщения для отладки
    dmesg Ядро В - RU Образ буфера сообщений ядра
    dpkg.log dpkg Ф М U Установщики пакетов
    faillog login Н Н RZU Информация о неудачных попытках авторизации
    apache2/* Httpd или apache2 Ф Д R Журналы веб-сервера Apache для каталога /etc
    kern.log login В - RZ Все сообщения средств ядра
    lastlog login В - RZ Время последней регистрации в системе каждого пользователя (этот файл бинарный)
    mail* Программы электронной почты S Н Все Сообщения средств электронной
    messages Разное S Н RZUS
    rpmpkgs cron.daily В Д R Список установленных RPM-пакетов
    samba/* smbd и прочие Ф Н - Сведения о работе сервера Samba
    secure sshd и прочие S М R Конфиденциальные авторизационные сообщения
    sulog su Ф - SAH Сведения об удачных и неудачных попыток использования команды su
    syslog* Разное S H SUH Основной системный журнальный файл
    warn wpar S H Z События уровня системных предупреждений/ошибок
    wpars/* wpar Ф - А Сведения о событиях загрузочных разделов
    wtmp login В M Все Сообщения о регистрации в системе (бинарный файл)
    xen/* Xen Ф 1m RZU Информация от монитора виртуальных машин Xen
    Xorg.n.log Xorg Ф Н RS Сообщения об ошибках сервера X Windows
    yum.log yum Ф М R Журнал управления пакетом

    Для данной таблицы действуют следующие обозначения: S - Syslog, В - встроенное имя, Ф - конфигурационный файл, Д - ежедневно, Н - еженедельно, М - ежемесячно, NN - размер в килобайтах или мегабайтах, Z - SUSE, R - Red Hat и CentOS, S - Solaris, H - HP-UX, A - AIX. В столбце «Частота» указывается частота, с которой удаляется устаревшая информация, связанная со временем или с объёмом файла. В столбце «Программа» указывается программа, создающая файл.

    Следует отметить также, что большая часть сообщений для представленных в таблице файлов направляется в систему Syslog. Уровень критичности и программа, создающая файл задаются в конфигурационном файле /etc/initlog.conf. - так работает система Syslog. Файл faillog является двоичным, и поэтому может быть прочтён утилитой failog.

    Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .

    Похожие статьи