Linux: логи (/var/log, dmesg, last, lastlog, lastb, history, syslog/journald)

https://losst.ru/kak-posmotret-logi-v-linux  – хорошая статья с указанием стандартных путей лог файлов

/var/log/syslog – системные (включает почти все другие логи), journald (сервис syslod) зачастую сейчас работает параллельно с syslog – journald хранит логи только в RAM, а Syslog в файле; можно этим управлять, в том числе отказом от какого либо из сервисов

/var/log/kern – логи ядра

/var/log/auth.log – аутентификационные, включая SUDO и заходы по SSH (включая неуспешные)

Oct  5 11:09:39 govnoserver sshd[16040]: Accepted password for igor from 172.20.29.13 port 49520 ssh2

Oct  5 20:23:05 govnoserver sudo:   redkin : TTY=pts/3 ; PWD=/home/redkin ; USER=root ; COMMAND=/usr/bin/download-mibs

/var/log/boot.log – логи загрузки системы

/var/log/dmesg – kernel log (ring buffer) с момента загрузки ядра ОС в память компьютера. Сюда kernel пишет лог в случае разных системных сбоев (напр. невозможность драйвером аллоцировать память, работа oom-killer – кого убил и за что 🙂 ) с подробным traceback. Проще смотреть через утилиту с опцией -T – она добавляет дату и времени лога в привычном формате. Так же можно посмотреть через файл /proc/kmsg.

dmesg -T
dmesg | grep oom-killer
cat /proc/kmsg

The dmesg command is used to print or control the kernel ring buffer. The kernel ring buffer is a special kind of buffer that stores the messages generated by the kernel, such as the boot messages, the hardware errors, the driver information, etc. The kernel ring buffer is a fixed-size circular buffer, which means that when it is full, the oldest messages are overwritten by the new ones. The dmesg command can show the messages in the kernel ring buffer, as well as filter, save, or clear them. The syntax of the dmesg command is:
dmesg [options]
The options are optional, and they can modify the behavior of the dmesg command, such as changing the output format, the timestamp, the level, the facility, the color, etc. For more information, see the dmesg man page1 or the Linuxize tutorial2.

/var/log/messages — содержит глобальные системные логи Linux, в том числе те, которые регистрируются при запуске системы. В этот лог записываются несколько типов сообщений: это почта, cron, различные сервисы, ядро, аутентификация и другие.

/var/log/btmp – лог файл Linux содержит информацию о неудачных попытках входа. Для просмотра файла удобно использовать команду last -f /var/log/btmp

/var/log/apache2/access.log   – логи по доступу на apache

/var/log/apache2/error.log – логи ошибок на apache

/var/www/cacti/log/cacti.log – логи кагти

/var/log/mysql/error.log – логи mysql ошибок

Log rotation (logrotate) – чтобы система не замусоривалась лог файлами, она использует log rotation. Хорошая статья. Он удаляет “старые” логи, архивирует и сжимает “не слишком старые” и держит в чистом виде “новые”. Так же для этой задачи может использоваться утилита tmpwatch. Утилита древняя – с начала 2000х и заточена именно под задачу ротации логов. Можно конечно делать костыли и для других вещей, но выглядеть это может страшно напр. нужно сохранять первые N строк одного файла, а остальное ротировать или нужно удалять все старые файлы, но актуальным не менять имя – эти задачи проще решить другими способами (напр. sh-скриптами).

logrotate 3.14.0 - Copyright (C) 1995-2001 Red Hat, Inc.

# тестирование logrotate
logrotate -d /etc/logrotate.d/test_temp_lg_rotate.conf

Логгирование операций на CLI сервере возможно используя связку tee и logger.

<login> 32115 0.0 0.0 103408 852 pts/98 S+ 12:23 0:00 tee -a /home/<login>/.bash_history 
<login> 32116 0.0 0.0 100904 780 pts/98 S+ 12:23 0:00 logger -p local6.info -t <login>[26465] <ip:port_from> <ip:port_to>

Lastlog – крутая утилита на Ubuntu. Позволяет узнать когда последний раз юзер заходил на сервер. Утилита для этого смотрит в файлы /var/log/lastlog, /var/log/wtmp или /var/run/utmp (можно посмотреть в man lastlog).

~$ lastlog | grep pts
root pts/1 Tue Aug 9 12:20:04 +0300 2016
redkin_p pts/2 1.1.1.1 Thu Aug 11 23:48:44 +0300 2016
admin pts/1 1.1.1.1 Mon Aug 22 11:30:30 +0300 2016

last |reboot| – команда показывает успешные подключения/отключения пользователей, сколько пользователь был подключен, какой tty использовал, с какого IP был подключен. Так же команда показывает перезагрузки системы (если такие были с создания файла) при этом, вместо tty указывается “system boot”, а вместо IP указывается версия ядра, которая была загружена. Если указать опцию reboot, то события пользователей будут исключены из вывода.

redkin.p@govnoserver:~$ last
redkin.p pts/0 192.168.1.2 Wed Jul 27 16:26 still logged in
redkin.p pts/1 192.168.1.2 Wed Jul 27 16:25 - 16:26 (00:00)
redkin.p pts/1 192.168.1.2 Wed Jul 27 16:21 - 16:25 (00:04)
redkin.p pts/0 192.168.1.2 Wed Jul 27 16:18 - 16:26 (00:07)
igor tty1 Wed Jul 13 11:37 still logged in
redkin tty1 Wed Jul 13 11:35 - 11:37 (00:01)
reboot system boot 3.13.0-65-generi Wed Jul 13 11:22 - 18:26 (14+07:03)
redkin.p pts/0 192.168.1.2 Fri Jul 1 12:47 - 16:25 (03:38)
wtmp begins Fri Jul 1 12:47:28 2016

[root@host1 ~]# last | head -n 10
user1 pts/0 :1 Mon Aug 1 12:10 still logged in
user1 :1 :1 Mon Aug 1 12:05 still logged in
(unknown :1 :1 Mon Aug 1 12:05 - 12:05 (00:00)
user1 pts/1 192.168.1.2 Mon Aug 1 11:04 still logged in
user1 pts/1 192.168.1.2 Mon Aug 1 11:04 - 11:04 (00:00)
user1 pts/0 :0 Mon Aug 1 10:48 - 12:05 (01:16)
user1 :0 :0 Mon Aug 1 10:48 - 12:05 (01:16)
(unknown :0 :0 Mon Aug 1 10:48 - 10:48 (00:00)
reboot system boot 3.10.0-327.22.2. Mon Aug 1 10:47 - 18:54 (08:07)
user1 pts/0 192.168.100.38 Sun Jul 31 14:46 - 00:00 (09:14)

redkin.p@govnoserver:~$ last reboot
reboot system boot 3.13.0-65-generi Wed Jul 13 11:22 - 18:27 (14+07:05)
wtmp begins Fri Jul 1 12:47:28 2016

[root@host1 ~]# last reboot | head -n 5
reboot system boot 3.10.0-327.22.2. Mon Aug 1 10:47 - 19:03 (08:15)
reboot system boot 3.10.0-327.22.2. Wed Jul 27 13:50 - 19:03 (5+05:12)
reboot system boot 3.10.0-327.22.2. Wed Jul 27 13:46 - 13:50 (00:03)
reboot system boot 3.10.0-327.22.2. Wed Jul 27 13:23 - 13:46 (00:22)
reboot system boot 3.10.0-327.22.2. Wed Jul 27 13:18 - 13:46 (00:27)

lastb – команда смотрит в файл /var/log/btmp, в котором хранятся неуспешные подключения пользователей с логином/временем/tty/ip. Для использования нужны права root.

redkin.p@govnoserver:~$ sudo lastb
igor tty1 Wed Jul 13 11:35 - 11:35 (00:00)
redkin tty1 Wed Jul 13 11:35 - 11:35 (00:00)

[root@host1 ~]# sudo lastb | head -n 5
user1 ssh:notty 192.168.1.2 Mon Aug 1 19:01 - 19:01 (00:00)
user1 ssh:notty 192.168.1.2 Mon Aug 1 19:01 - 19:01 (00:00)
user1 ssh:notty 192.168.1.2 Mon Aug 1 19:00 - 19:00 (00:00)
user1 ssh:notty 192.168.1.2 Mon Aug 1 19:00 - 19:00 (00:00)
user1 :0 :0 Mon Aug 1 10:48 - 10:48 (00:00)

history – смотрим логи (историю) команд. Для поиска в истории зачастую удобно не выводить ее через history и делать поиск через grep, а использовать CTRL+R.

history 10 - последние 10
history -c - чистим историю

Добавляем в историю TIMESTAMP. Через export, чтобы было доступно во всех в дочерних процессах. Можно задать в bashrc/profile.

echo "HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S: '" >> ~/.bashrc
source ~/.bashrc

Переменные для изменения размера количества записей в history – обе задают количество строк (грубо первая на сессию, вторая глобально). Можно задать в bashrc/profile.

# echo $HISTSIZE
500
# echo $HISTFILESIZE
500

echo "HISTSIZE=9999999999999999" >> ~/.bashrc
echo "HISTFILESIZE=9999999999999999" >> ~/.bashrc
source ~/.bashrc
# echo $HISTSIZE
9999999999999999
# echo $HISTFILESIZE
9999999999999999

 

questions

Which command reads and displays the current contents of the Kernel Ring Buffer on the command line? (Specify ONLY the command without any path or parameters.)

dmesg

The dmesg command is used to print or control the kernel ring buffer. The kernel ring buffer is a special kind of buffer that stores the messages generated by the kernel, such as the boot messages, the hardware errors, the driver information, etc. The kernel ring buffer is a fixed-size circular buffer, which means that when it is full, the oldest messages are overwritten by the new ones. The dmesg command can show the messages in the kernel ring buffer, as well as filter, save, or clear them. The syntax of the dmesg command is:
dmesg [options]
The options are optional, and they can modify the behavior of the dmesg command, such as changing the output format, the timestamp, the level, the facility, the color, etc. For more information, see the dmesg man page1 or the Linuxize tutorial2.

Which of the following files, located in a user’s home directory, contains the Bash history?

A. .bashrc_history

B. .bash_histfile

C. .history

D. .bash_history

E. .history_bash

Answer: D

When is the content of the kernel ring buffer reset? (Choose two.)

A. When the ring buffer is explicitly reset using the command dmesg –clear

B. When the ring buffer is read using dmesg without any additional parameters

C. When a configurable amount of time, 15 minutes by default, has passed

D. When the kernel loads a previously unloaded kernel module

E. When the system is shut down or rebooted

Answer: AE

 

Leave a Reply