Loglama və sistem jurnallarına baxış: journalctl
komandası
1. Loglarla işləmək niyə vacibdir?
Jurnallar (və ya loglar) — bu, sizin şəxsi "detektivinizdir", sistemdə hər bir vacib əməliyyatı qeyd edir. Onlar nüvənin (kernel), tətbiqlərin, servislərin və digər sistem komponentlərinin fəaliyyətini izləyir. Loglar problemlərin diaqnostikası və sistemin işinə nəzarət etmək üçün ən əsas alətdir.
Təsəvvür edin ki, serveriniz qəfildən cavab verməyi dayandırdı. Şerlok Holms kimi təxmin etmək əvəzinə, nə baş verdiyini görmək üçün jurnallara baxa bilərsiniz — hər şey açıq-aydın şəkildə göstərilib. Məsələn: "Xidmət ssh
dayandı", "Disk dolub", "Pişik klaviaturanın üstündən keçib və vacib bir xidməti dayandırıb". Loglar hər şeyi danışacaq.
Sistem jurnalları ilə işləmək aşağıdakıları təmin edir:
- Problemləri diaqnostika etmək. Nəsə səhv gedirsə, loglarda səhv və ya xəbərdarlıq tapmaq olar.
- Servislərin işini izləmək. Məsələn, PostgreSQL verilənlər bazası niyə dayandı və ya veb server nə vaxt yeniləndi, öyrənmək.
- Analitika toplamaq. Servislərin performansı və metriklərinin monitorinqi.
- Təhlükəsizliyi artırmaq. Loglar SSH vasitəsilə sındırma cəhdlərini və ya icazəsiz girişləri göstərə bilər.
2. journalctl
-ə giriş
journalctl
— Linux-da sistem jurnallarına baxmaq və onları filtrasiya etmək üçün güclü komandadır. Bu, systemd-journald
ilə işləyir — logların toplanması və saxlanması sistemidir, bu da systemd
tərəfindən idarə olunur.
journalctl
ilə əsas əməliyyatlar
Əvvəlcə, gəlin bu aləti necə istifadə etməyi görək. Terminalı açın və aşağıdakı komandanı daxil edin:
journalctl
Bu komanda sizə bütün sistem jurnallarını göstərəcək, bunlar xronoloji ardıcıllıqla sıralanıb. Nəsə sadə bir şey gözləyirsizsə, hazır olun: adətən loglar bir neçə ekran yer tutur. Qorxmayın, tezliklə onları necə filtrləmək lazım olduğunu öyrənəcəyik.
İndi, loglara baxışı dayandırmaq üçün q
düyməsini basın (artıq less
və journalctl
-in bənzərliyini hiss etdinizmi?).
Logların zamana görə filtrasiyası
İndi logları daha rahat bir ölçüyə qədər daraldacağıq.
Son 1 saatlıq loglara baxış
journalctl --since "1 hour ago"
Müəyyən bir günün loglarına baxış
journalctl --since "2023-10-31"
Zaman diapazonunu müəyyənləşdirmək
Səhər saat 8-dən 9-a qədərki hadisələri görmək istəyirsiniz? Problem deyil:
journalctl --since "2023-10-31 08:00:00" --until "2023-10-31 09:00:00"
Zamana görə filtrasiya çox faydalıdır, məsələn, problemi müəyyən bir zaman aralığında baş verdiyini bilirsinizsə. Analogiya: qatili başa düşmək üçün bütün kitabı oxumursunuz — sadəcə son səhifələrə baxırsınız.
Müəyyən bir xidmətin logları ilə işləmək
Bütün sistem ilə baş etməyə çalışmaq əvəzinə, bir xidmətdə fokuslana bilərsiniz. Məsələn, nginx
veb-serverinin necə işlədiyini görmək istəyirsiniz:
journalctl -u nginx
Əgər yalnız son bir saatlıq qeydləri görmək istəyirsinizsə (hamımız təzə informasiyanı sevirik):
journalctl -u nginx --since "1 hour ago"
Qısa nümunələr siyahısı:
-u ssh
: SSH xidmətinin logları.-u cron
: CRON tapşırıqlarının logları.-u mysql
: MySQL verilənlər bazasının logları.
Logları real vaxtda oxumaq
Bir şeyi elə indicə düzəltməyə çalışarkən, logları real vaxtda izləmək faydalı ola bilər — futbol matçına baxırmış kimi. Bunun üçün aşağıdakı komandadan istifadə edin:
journalctl -f
-f
opsiyası tail -f
kimi işləyir, loglarda yeni ödənişlər yarandıqca onları göstərir.
Məsələn, komandanı işə salın və paralel olaraq hansısa xidməti yenidən başladın:
sudo systemctl restart ssh
Dəyişiklikləri görəcəksiniz — yenidən başladılma ilə bağlı qeydlər loglarda görsənəcək.
Loglarda səhvləri axtarış
Tez-tez loglar çox uzun olur, və orada maraqlı olan məlumatı əl ilə axtarmaq samanlıqda iynə axtarmaq kimidir. Buna görə açar sözlərdən istifadə edərək axtarış etmək olar.
Sadə istifadə:
journalctl | grep "ERROR"
Bu nümunə yalnız ERROR
sözünü ehtiva edən sətrləri göstərəcək. ERROR
-i istədiyiniz hər hansı bir şeyə dəyişdirə bilərsiniz, məsələn WARNING
, failed
və ya panic
.
3. journalctl
üçün xüsusi opsiyalar
Yalnız son yenidən başlatmadan sonra olan qeydlərə baxış
Sistemin sonuncu işə salınmasından sonra nələr baş verib? Maraqlıdır? Sadəcə bunu edin:
journalctl -b
Sistemin hər yenidən başlatması ayrı bir "blok" kimi qeydə alınır. Əgər siz əvvəlki işəsalma (bəli-bəli, belə şey də faydalı ola bilər) qeydlərinə baxmaq istəyirsinizsə:
journalctl -b -1
İstifadəçi və ya PID ilə filtrasiya
Bəzən müəyyən bir istifadəçi və ya prosesin hərəkətlərini izləmək lazım olur. Məsələn:
journalctl _UID=1000
1000
ID-ni istifadəçi ID-si ilə əvəz edin (ID-nı id
komandası ilə öyrənə bilərsiniz).
PID (proses identifikatoru) ilə filtrasiya üçün:
journalctl _PID=1234
4. Praktik nümunələr
SSH xidmətindəki səhvləri tapmaq.
SSH niyə bağlanmır? Bunu bilmək üçün aşağıdakıları istifadə edin:
journalctl -u ssh | grep "ERROR"
Son 24 saat ərzində CRON loglarının analizi.
Məsələn, gündəlik skriptinizin niyə işləmədiyini yoxlayırsınız:
journalctl -u cron --since "yesterday"
Web-serverin real vaxt izlənməsi.
Web-server yüklənib? Logları səhvlərə görə yoxlayın:
journalctl -u nginx -f
Sərbəst praktika üçün tapşırıqlar
- Son 24 saat ərzində SSH xidməti üçün səhv loglarını tapın.
journalctl
istifadə edərək yalnız səhər üçün CRON loglarını gətirin. Komandanın düzgün zaman intervalı ilə işlədiyinə əmin olun.- Logların
systemd
real vaxt izlənməsini təşkil edin və bir neçə sistem xidmətini başladaraq onların statusunu loglarda görün.
Loglama təkcə səhv haqqında məlumat və ya problemlərin diaqnostikası deyil. Bu, əməliyyat sistemini izləməyə kömək edən sizin gizli agentinizdir. journalctl
komandasını mənimsədikdən sonra, hər hansı bir şəraitdə Linux sistemini analiz, optimizasiya və stabil işlətmək üçün güclü bir vasitəyə sahib olacaqsınız.
GO TO FULL VERSION