https://losst.ru/kak-posmotret-logi-v-linux – хорошая статья с указанием стандартных путей лог файлов
/var/log/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
/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 (можно посмотреть в 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