Один из важнейших навыков при работе с виртуальным сервером (VDS) — это умение анализировать и просматривать логи. Логи помогают выявить ошибки, следить за состоянием системы, отслеживать работу сервисов и приложений. В этой статье мы подробно разберём:
journalctl
, tail
и logrotate
,
/var/log/
В этой папке хранятся текстовые лог-файлы, в том числе:
Файл | Назначение |
---|---|
/var/log/syslog или /var/log/messages | Общесистемные события |
/var/log/auth.log | Аутентификация и вход в систему |
/var/log/kern.log | Сообщения ядра |
/var/log/nginx/ или /var/log/apache2/ | Логи веб-серверов |
/var/log/dpkg.log | Установка и обновление пакетов (Debian/Ubuntu) |
journalctl
: системный журнал systemdСовременные дистрибутивы Linux используют systemd
и хранят системные логи в бинарном формате, который читается через journalctl
.
journalctl [опции]
journalctl
journalctl -n 50
tail -f
):
journalctl -f
journalctl --since "1 hour ago"
journalctl --since "2024-06-01" --until "2024-06-02"
journalctl -u nginx.service
journalctl -u sshd
journalctl -b
journalctl _PID=1234
PID можно найти с помощью команды:
ps aux | grep имя_процесса
Или с помощью htop
tail
: просмотр «хвоста» логовКоманда tail
позволяет просматривать последние строки файла — идеально подходит для работы с обычными текстовыми логами в /var/log
.
tail /var/log/syslog
tail -n 50 /var/log/nginx/access.log
tail -f /var/log/nginx/access.log
Можно использовать вместе с grep
для фильтрации:
tail -f /var/log/auth.log | grep "Failed password"
logrotate
: автоматическое управление логамиlogrotate
— это системная утилита в Linux, которая автоматически управляет лог-файлами, что бы они не переполняли диск, не росли бесконечно, при этом сохраняли необходимую информацию.
logrotate
:.gz
)cron
)Основной файл:
/etc/logrotate.conf
Дополнительные настройки:
/etc/logrotate.d/
/var/log/nginx/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 www-data adm
postrotate
systemctl reload nginx > /dev/null
endscript
}
*.log
— будут обрабатываться все лог-файлыdaily
— выполнение ежедневноrotate 7
— хранить 7 архивовcompress
— старые логи сжимаютсяmissingok
— не показывать ошибку, если файла нетnotifempty
— не ротировать пустые логиcreate
— создаётся новый файл после ротацииpostrotate
— что делать после ротации
logrotate -d /etc/logrotate.conf
Permission denied
Проверьте права доступа:
sudo tail -f /var/log/auth.log
No space left on device
Логи могут переполнить диск. Настройте logrotate
и регулярно чистите:
sudo journalctl --vacuum-time=7d
journalctl
показывает не всёВозможно, логи только для root
. Используйте sudo
:
sudo journalctl -u apache2
/var/log/
— следите за размером логов.logrotate
— это продлит жизнь диска и упростит отладку.journalctl
с фильтрами — быстро находите нужные события.Логи — это сердце диагностики вашего VDS. Понимание и умелое использование journalctl
, tail
и logrotate
позволяет:
Освойте эти инструменты — и ваш сервер будет под надёжным контролем.