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 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