Когато срещнете проблеми с производителността на вашия сървър, първото нещо, което трябва да направите, е да проверите лог файловете на Linux . В системния лог можете да намерите някои полезни диагностични съобщения от различни компоненти на операционната система, като ядрото или различни услуги, така че най-вероятно ще откриете причината за повредата там.
Всяко съобщение в дневника се генерира в резултат на определени събития в операционната система: от потребител, оторизация до изключване на услугата или повреда на приложението. Тези събития имат различен приоритет в зависимост от това колко критични са. В Linux има следните видове събития:
emerg- провал, най-висок приоритет;alert- спешно предупреждение;crit- критично събитие;err- обикновена грешка;warn- обикновено предупреждение;notice- уведомяване;info- информационно съобщение;debug- информация за отстраняване на грешки;
В момента основните услуги за събиране на лог файлове в Linux са rsyslog и systemd-journald . Те са част от повечето съвременни дистрибутивни пакети и работят независимо.
rsyslog
Логовете на тази услуга се намират в папка „ /var/log/ “ под формата на обикновени текстови файлове. Лог съобщенията се съхраняват в различни файлове в зависимост от типа на събитието. Например, „ /var/log/auth.log “ съдържа информация за оторизацията на потребителите в системата, а „ /var/log/kern.log “ съдържа съобщения на ядрото. Имената на файловете могат да се различават в различните дистрибутивни пакети, така че нека да разгледаме конфигурационния файл, за да добием представа къде се намира „ /etc/rsyslog.d/50-default.conf “.
Тези правила показват кой файл съдържа всеки тип лог съобщения. Лявата част показва типа на съобщението в следния вид „ [Източник].[Приоритет] “, а дясната част показва името на лог файла. При записване на типа на съобщението може да се добави символът „ * “. Това означава празна стойност или „ няма “, което го премахва от списъка. Нека разгледаме по-подробно първите две правила.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
Първото правило означава, че всички съобщения, получени от механизма за оторизация, ще бъдат записани във файла „ /var/log/auth.log “. Всички опити за оторизация (както успешни, така и неуспешни) ще бъдат регистрирани в този файл. Второто правило показва, че всички съобщения, с изключение на тези, свързани с оторизация, ще бъдат записани във файла „ /var/log/syslog “. Тези два файла обикновено са най-популярни. Следните правила определят пътя за съхранение на лог файловете на ядрото „ kern.* “ и лог файловете на пощенската услуга „ mail.* “.
Лог файловете могат да бъдат отворени с помощта на всеки текстов редактор, като less , cat , tail . Нека отворим файла „ /var/log/auth.log “ .
less /var/log/auth.log
Всеки ред от файла е отделно съобщение, получено от приложението или услугата. Всички съобщения, независимо от техния източник, имат един формат и се състоят от 5 части. Нека вземем за пример маркираното съобщение на екранната снимка.
- Времево клеймо на съобщението - „12 февруари 06:18:33“
- Името на компютъра, изпратил съобщението - “vds”
- Име на приложението или услугата, която е изпратила съобщението - “sshd”
- ID на процес - [653]
- Текст на съобщението - “Приета парола за mihail от 188.19.42.165 порт 2849 ssh2”
Това беше пример за успешна връзка към SSH.
А ето как изглежда един неуспешен опит за влизане:
Този файл също така записва команди с разширени разрешения
Нека отворим файла /var/log/syslog
Маркирано съобщение на екранната снимка е съобщението за изключване на мрежовия интерфейс.
За търсене на информация в дълги текстови файлове използвайте помощната програма grep . Можете да намерите всички съобщения, получени от услугата pptpd , във файла „ /var/log/syslog “.
grep 'pptpd' /var/log/syslog
По време на диагностиката можете да използвате помощната програма tail , която може да покаже няколко последни реда от файловете. Командата „ tail -f /var/log/syslog “ ще ви позволи да гледате записа на лог файлове в реално време.
Услугата rsyslog е много гъвкава и мощна. Тя може да се използва за събиране на лог файлове както в локални системи, така и на корпоративно ниво. Можете да намерите пълна документация на официалния уебсайт https://www.rsyslog.com/
Ротация на регистрационни файлове в Linux
Записването на лог файлове се извършва непрекъснато, така че размерът на файловете постоянно нараства. Механизмът за ротация осигурява автоматично архивиране на стари лог файлове и създаване на нови файлове. В зависимост от правилата, това може да се случва ежедневно, седмично, месечно или според ограничението на размера. При създаването на нови лог файлове, старите могат просто да бъдат изтрити или изпратени по имейл. Ротацията на лог файловете се извършва от помощната програма logrotate . Можете да намерите основната конфигурация във файла „ /etc/logrotate.conf “. Съдържанието на файловете също се обработва в папката „ /etc/logrotate.d/ “.
Новите правила могат да се записват в главния конфигурационен файл. Най-добре е обаче да създадете отделен файл в „ /etc/logrotate.d/ “. По подразбиране в тази директория има няколко файла.
Нека да разгледаме файла „ /etc/logrotate.d/rsyslog “, който съдържа правила за ротация на лог файловете на услугата rsyslog.
Първо, правилото трябва да съдържа пътя до регистрационния файл и след това всички насоки в извити скоби.
- завъртете 7 - брой файлове за съхранение - 7
- ежедневно - създавайте нов файл всеки ден
- компрес - компресиране и архивиране на стари файлове
На екранната снимка можете да видите, че в папката „ /var/log/ “ се намират основният лог „ syslog “ и 7 архива, което съответства на правилата в конфигурационния файл.
Можете да намерите по-подробно описание на logrotate в ръководството, като изпълните командата „ man logrotate “.
Събиране на логове на Linux - дневник
Услугата за събиране на лог файлове systemd-journald е част от системата за инициализация systemd . Лог файловете на Linux се съхраняват в „ /var/log/journal/ “ в специален формат и могат да бъдат отворени с помощта на помощната програма journalctl . Форматът на записите е абсолютно същият като в rsyslog.
Командата journalctl без атрибути показва всички записи, но не е подходяща за по-големи лог файлове. Нека разгледаме някои опции на тази помощна програма.
journalctl -b- показва всички записи от последния стартjournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- показване на запис в рамките на определен период от времеjournalctl -u pptpd- показват записи на определена услугаjournalctl -k- показване на съобщения на ядротоjournalctl -p err- показване на съобщения с определен приоритет, съобщения с по-висок приоритет в този случай (критичен, предупреждение, възникване)journalctl -f- показване на съобщения в реално време
За по-голяма гъвкавост можете да комбинирате тези опции. Нека покажем всички грешки на услугата pptpd
journalctl -u pptpd -p err
Ако укажете пътя до изпълнимия файл като атрибут, помощната програма ще покаже всички съобщения, изпратени от този файл. Нека покажем всички съобщения, изпратени от файла „ /usr/bin/sudo “ от 04:15 на 18 февруари 2020 г. Всъщност, тя ще покаже всички команди, изпълнени с по-високи разрешения.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
За да разберете колко дисково пространство заемат регистрационните файлове, за да изпълните следната команда
journalctl --disk-usage
За да ограничите регистрационния файл до 1Gb, изпълнете следната команда
journalctl --vacuum-size=1G
Отваряне на двоични файлове
Сега нека разгледаме някои специални файлове в папката „ /var/log/ “, където се съхраняват всички опити за влизане. Тези файлове са двоични и могат да бъдат отворени само със специални програми.
/var/log/wtmp съдържа информация за успешни опити за влизане. Използвайте помощната програма last, за да я отворите.
/var/log/btmp - съдържа всички неуспешни опити за влизане. Може да се отвори с lastb с разширени права. Атрибутът -n определя броя на редовете, показвани от края на файла.
/var/log/lastlog - съдържа времето на последното влизане в системата за всеки запис в акаунта. Може да се отвори с lastlog