Admin Linux - Manajemen Log
systemd telah mengubah cara pengelolaan logging sistem untuk CentOS Linux. Alih-alih setiap daemon di sistem menempatkan log ke lokasi individu daripada menggunakan alat seperti tail atau grep sebagai cara utama untuk menyortir dan memfilter entri log,journald telah membawa satu titik administrasi untuk menganalisis log sistem.
Komponen utama di balik logging systemd adalah: journal, jounralctl, dan journald.conf
journald adalah daemon logging utama dan dikonfigurasi dengan mengedit journald.conf sementara journalctl digunakan untuk menganalisis peristiwa yang dicatat oleh journald .
Peristiwa yang dicatat oleh journald meliputi: peristiwa kernel, proses pengguna, dan layanan daemon.
Atur Zona Waktu Sistem yang Benar
Sebelum menggunakan journalctl , kita perlu memastikan waktu sistem kita disetel ke waktu yang benar. Untuk melakukan ini, kami ingin menggunakan timedatectl .
Mari kita periksa waktu sistem saat ini.
[root@centos rdc]# timedatectl status
Local time: Mon 2017-03-20 00:14:49 MDT
Universal time: Mon 2017-03-20 06:14:49 UTC
RTC time: Mon 2017-03-20 06:14:49
Time zone: America/Denver (MDT, -0600)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2017-03-12 01:59:59 MST
Sun 2017-03-12 03:00:00 MDT
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2017-11-05 01:59:59 MDT
Sun 2017-11-05 01:00:00 MST
[root@centos rdc]#
Saat ini, sistem sesuai dengan zona waktu lokal. Jika sistem Anda tidak berfungsi, mari setel zona waktu yang benar. Setelah mengubah pengaturan, CentOS akan secara otomatis menghitung offset zona waktu dari zona waktu saat ini, menyesuaikan jam sistem segera.
Mari daftar semua zona waktu dengan timedatectl -
[root@centos rdc]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Itu adalah output yang diperebutkan dari zona waktu daftar timedatectl . Untuk menemukan zona waktu lokal tertentu, perintah grep dapat digunakan -
[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York"
America/New_York
[root@centos rdc]#
Label yang digunakan oleh CentOS biasanya Negara / Kawasan dengan garis bawah, bukan spasi (New_York versus "New York").
Sekarang mari kita atur zona waktu kita -
[root@centos rdc]# timedatectl set-timezone "America/New_York"
[root@centos rdc]# date
Mon Mar 20 02:28:44 EDT 2017
[root@centos rdc]#
Jam sistem Anda harus menyesuaikan waktu secara otomatis.
Gunakan journalctl untuk Menganalisis Log
Sakelar baris perintah umum saat menggunakan journalctl -
Beralih | Tindakan |
---|---|
-k | Hanya mencantumkan pesan kernel |
-u | Daftar berdasarkan unit tertentu (httpd, sshd, dll ...) |
-b | Boot offset label |
-Hai | Mencatat format keluaran |
-p | Filter menurut jenis log (baik nama atau nomor) |
-F | Fieldname atau fieldnamevalue |
--UTC | Waktu dalam perbedaan UTC |
--sejak | Filter berdasarkan jangka waktu |
Periksa Log Boot
Pertama, kami akan memeriksa dan mengkonfigurasi log boot di CentOS Linux. Hal pertama yang akan Anda perhatikan adalah bahwa CentOS, secara default, tidak menyimpan pencatatan booting yang terus-menerus selama proses boot ulang.
Untuk memeriksa log boot per instance reboot, kita dapat mengeluarkan perintah berikut -
[root@centos rdc]# journalctl --list-boots
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT
[root@centos rdc]#
Setelah me-reboot sistem, kita dapat melihat entri lain.
[root@centos rdc]# journalctl --list-boots
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT
[root@centos rdc]#
Sekarang, mari kita periksa contoh logging boot terakhir -
root@centos rdc]# journalctl -b -5
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64
([email protected].
Mar 19 22:01:57 localhost.localdomain kernel: Command line:
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:
Di atas adalah keluaran ringkas dari boot terakhir kita. Kami juga dapat merujuk kembali ke log boot dari jam, hari, minggu, bulan, dan bahkan tahun. Namun, secara default CentOS tidak menyimpan log boot yang persisten. Untuk mengaktifkan penyimpanan log boot secara terus-menerus, kita perlu membuat beberapa perubahan konfigurasi -
- Buat titik penyimpanan sentral untuk log boot
- Berikan izin yang tepat ke folder log baru
- Konfigurasi journald.conf untuk logging terus-menerus
Konfigurasikan Lokasi Boot untuk Log Boot Persisten
Tempat pertama journald ingin menyimpan log boot yang persisten adalah / var / log / journal . Karena ini tidak ada secara default, mari kita buat -
[root@centos rdc]# mkdir /var/log/journal
Sekarang, mari beri direktori izin yang tepat akses daemon jurnald -
systemd-tmpfiles --create --prefix /var/log/journal
Terakhir, beri tahu journald bahwa ia harus menyimpan log boot yang persisten. Di vim atau editor teks favorit Anda, buka /etc/systemd/jounrald.conf " .
# See journald.conf(5) for details.
[Journal]=Storage=peristent
Garis yang kita perhatikan adalah, Storage = . Pertama hapus komentar # , lalu ubah keStorage = persistentseperti yang digambarkan di atas. Simpan dan reboot sistem CentOS Anda dan berhati-hatilah karena seharusnya ada banyak entri saat menjalankan journalctl list-boots .
Note- ID mesin yang terus berubah seperti itu dari penyedia VPS dapat menyebabkan journald gagal menyimpan log boot yang persisten. Ada banyak solusi untuk skenario seperti itu. Yang terbaik adalah membaca perbaikan saat ini yang diposting ke forum Admin CentOS, daripada mengikuti saran tepercaya dari mereka yang telah menemukan solusi VPS yang masuk akal.
Untuk memeriksa log boot tertentu, kita hanya perlu mendapatkan setiap offset menggunakan journald --list-boots offset dengan sakelar -b . Jadi untuk memeriksa log boot kedua yang akan kami gunakan -
journalctl -b -2
Default untuk -b tanpa offset log booting yang ditentukan akan selalu menjadi log booting saat ini setelah boot ulang terakhir.
Menganalisis Log menurut Jenis Log
Acara dari journald diberi nomor dan dikategorikan menjadi 7 jenis terpisah -
0 - emerg :: System is unusable
1 - alert :: Action must be taken immediatly
2 - crit :: Action is advised to be taken immediatly
3 - err :: Error effecting functionality of application
4 - warning :: Usually means a common issue that can affect security or usilbity
5 - info :: logged informtation for common operations
6 - debug :: usually disabled by default to troubleshoot functionality
Karenanya, jika kita ingin melihat semua peringatan, perintah berikut dapat dikeluarkan melalui journalctl -
[root@centos rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL 440BX 06040000 VMW 01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL 440BX 06040000 PTL 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD Custom 06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD $SBFTBL$ 06040000 LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742
(v01 PTLTD ? APIC 06040000 LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C
(v01 PTLTD $PCITBL$ 06040000 LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG 06040000 VMW 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW 00
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges:
Mar 19 22:01:57 localhost.localdomain kernel: DMA [mem 0x000010000x00ffffff]
Mar 19 22:01:57 localhost.localdomain kernel: DMA32 [mem 0x010000000xffffffff]
Mar 19 22:01:57 localhost.localdomain kernel: Normal empty
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges
Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x000010000x0009dfff]
Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x001000000x95edffff]
Mar 19 22:01:57 localhost.localdomain kernel: node 0: [mem 0x95f000000x95ffffff]
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on. Total pages: 60
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'
Di atas menunjukkan semua peringatan selama 4 hari terakhir di sistem.
Cara baru untuk melihat dan membaca log dengan systemd memang membutuhkan sedikit latihan dan penelitian untuk menjadi terbiasa. Namun, dengan format keluaran yang berbeda dan pemberitahuan khusus untuk membuat semua log daemon terpaket bersifat universal, hal ini layak untuk diterapkan. journald menawarkan fleksibilitas dan efisiensi yang tinggi dibandingkan metode analisis log tradisional.