CodeGym /Kurslar /Docker SELF /Loglama və sistem jurnallarına baxış: `journalctl` komand...

Loglama və sistem jurnallarına baxış: `journalctl` komandası

Docker SELF
Səviyyə , Dərs
Mövcuddur

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:

  1. Problemləri diaqnostika etmək. Nəsə səhv gedirsə, loglarda səhv və ya xəbərdarlıq tapmaq olar.
  2. 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.
  3. Analitika toplamaq. Servislərin performansı və metriklərinin monitorinqi.
  4. 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 lessjournalctl-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

  1. 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"
    
  2. 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"
    
  3. 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

  1. Son 24 saat ərzində SSH xidməti üçün səhv loglarını tapın.
  2. 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.
  3. 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.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION