Syslog adalah protokol standar industri untuk mencatat log perangkat, yang umum digunakan dalam manajemen jaringan, manajemen keamanan, dan audit log. Anda dapat menggunakan fungsi GROK dalam Domain Specific Language (DSL) Simple Log Service (SLS) untuk mengurai log Syslog dalam berbagai format secara efisien.
Ikhtisar
Syslog banyak digunakan untuk log sistem pada sistem operasi berbasis Unix. Pesan Syslog dapat direkam dalam file lokal atau dikirim melalui jaringan ke server penerima. Server tersebut dapat menyimpan pesan Syslog dari berbagai perangkat secara terpusat atau mengurai isinya untuk diproses lebih lanjut.
Permasalahan
Selama bertahun-tahun, tidak ada standar yang mengatur format Syslog, sehingga menghasilkan format yang tidak konsisten atau bahkan tidak memiliki format yang ditentukan sama sekali. Hal ini membuat pesan Syslog sulit diurai secara programatik karena sering kali hanya dapat diperlakukan sebagai string teks biasa. Oleh karena itu, memahami cara mengurai log Syslog dalam berbagai format sangat penting.
Pengenalan standar protokol Syslog
Dua protokol Syslog umum digunakan di industri: RFC 5424 (diterbitkan tahun 2009) dan RFC 3164 (diterbitkan tahun 2001). Bagian berikut menjelaskan perbedaan antara kedua protokol tersebut. Memahami perbedaan ini membantu Anda menggunakan GROK untuk mengurai log Syslog secara fleksibel.
-
Protokol RFC 5424
Protokol RFC 5424 mencakup bidang-bidang berikut. Untuk informasi lebih lanjut, lihat dokumen protokol resmi.
PRI VERSION SP TIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGIDContoh berikut menjelaskan bidang-bidang tersebut:
""" Contoh1: <34>1 2019-07-11T22:14:15.003Z aliyun.example.com ali - ID47 - BOM'su user' failed for lonvick on /dev/pts/8 """ PRI -- 34 VERSION -- 1 TIMESTAMP -- 2019-07-11T22:14:15.003Z HOSTNAME -- aliyun.example.com APP-NAME -- ali PROCID -- None MSGID -- ID47 MESSAGE -- 'su user' failed for lonvick on /dev/pts/8 """ Contoh2: <165>1 2019-07-11T22:14:15.000003-07:00 192.0.2.1 myproc 8710 - - %% It's time to make the do-nuts. """ PRI -- 165 VERSION -- 1 TIMESTAMP -- 2019-07-11T05:14:15.000003-07:00 HOSTNAME -- 192.0.2.1 APP-NAME -- myproc PROCID -- 8710 STRUCTURED-DATA -- "-" MSGID -- "-" MESSAGE -- "%% It's time to make the do-nuts." """ Contoh3: - dengan STRUCTURED-DATA <165>1 2019-07-11T22:14:15.003Z aliyun.example.com evntslog - ID47 [exampleSDID@32473 iut="3" eventSource= "Application" eventID="1011"] BOMAn application event log entry... """ PRI -- 165 VERSION -- 1 TIMESTAMP -- 2019-07-11T22:14:15.003Z HOSTNAME -- aliyun.example.com APP-NAME -- evntslog PROCID -- "-" MSGID -- ID47 STRUCTURED-DATA -- [exampleSDID@32473 iut="3" eventSource="Application" eventID="1011"] MESSAGE -- An application event log entry... -
Protokol RFC 3164
Protokol RFC 3164 mencakup bidang-bidang berikut. Untuk informasi lebih lanjut, lihat dokumen protokol resmi.
PRI HEADER[TIME HOSTNAME] MSGContoh berikut menjelaskan bidang-bidang tersebut:
""" <30>Oct 9 22:33:20 hlfedora auditd[1787]: The audit daemon is exiting. """ PRI -- 30 HEADER - TIME -- Oct 9 22:33:20 - HOSTNAME -- hlfedora MSG - TAG -- auditd[1787] - Content -- The audit daemon is exiting.
Gunakan GROK untuk mengurai format Syslog umum
Anda dapat menggunakan GROK untuk mengurai beberapa format Syslog umum. Untuk informasi lebih lanjut tentang aturan GROK, lihat Referensi pola GROK.
-
Mengurai format TraditionalFormat
-
Log mentah
receive_time: 1558663265 __topic__: content: May 5 10:20:57 iZbp1a65x3r1vhpe94fi2qZ systemd: Started System Logging Service. -
Aturan SLS DSL
e_regex('content', grok('%{SYSLOGBASE} %{GREEDYDATA:message}')) -
Hasil pemrosesan
receive_time: 1558663265 __topic__: content: May 5 10:20:57 iZbp1a65x3r1vhpe94fi2qZ systemd: Started System Logging Service. timestamp: May 5 10:20:57 logsource: iZbp1a65x3r1vhpe94fi2qZ program: systemd message: Started System Logging Service.
-
-
Mengurai FileFormat
-
Log mentah
receive_time: 1558663265 __topic__: content: 2019-05-06T09:26:07.874593+08:00 iZbp1a65x3r1vhpe94fi2qZ user: 834753 -
Aturan SLS DSL
e_regex('content',grok('%{TIMESTAMP_ISO8601:timestamp} %{SYSLOGHOST:hostname} %{SYSLOGPROG} %{GREEDYDATA:message}')) -
Hasil pemrosesan
receive_time: 1558663265 __topic__: content: 2019-05-06T09:26:07.874593+08:00 iZbp1a65x3r1vhpe94fi2qZ user: 834753 timestamp: 2019-05-06T09:26:07.874593+08:00 hostname: iZbp1a65x3r1vhpe94fi2qZ program: user message: 834753
-
-
Mengurai log dalam RSYSLOG_SyslogProtocol23Format
-
Log mentah
receive_time: 1558663265 __topic__: content: <13>1 2019-05-06T11:50:16.015554+08:00 iZbp1a65x3r1vhpe94fi2qZ user - - - twish -
Aturan SLS DSL
e_regex('content',grok('%{POSINT:priority}>%{NUMBER:version} %{TIMESTAMP_ISO8601:timestamp} %{SYSLOGHOST:hostname} %{PROG:program} - - - %{GREEDYDATA:message}')) -
Hasil pemrosesan
receive_time: 1558663265 __topic__: content: <13>1 2019-05-06T11:50:16.015554+08:00 iZbp1a65x3r1vhpe94fi2qZ user - - - twish priority: 13 version: 1 timestamp: 2019-05-06T11:50:16.015554+08:00 hostname: iZbp1a65x3r1vhpe94fi2qZ program: user message: twish
-
-
Mengurai format RSYSLOG_DebugFormat
-
Log mentah
receive_time: 1558663265 __topic__: content: 2019-05-06T14:29:37.558854+08:00 iZbp1a65x3r1vhpe94fi2qZ user: environment -
Aturan SLS DSL
e_regex('content',grok('%{TIMESTAMP_ISO8601:timestamp} %{SYSLOGHOST:hostname} %{SYSLOGPROG} %{GREEDYDATA:message}')) -
Hasil pemrosesan
receive_time: 1558663265 __topic__: content: 2019-05-06T14:29:37.558854+08:00 iZbp1a65x3r1vhpe94fi2qZ user: environment timestamp: 2019-05-06T14:29:37.558854+08:00 hostname: iZbp1a65x3r1vhpe94fi2qZ program: user message: environment
-
Gunakan GROK untuk mengurai format log Syslog yang tidak umum
Anda dapat menggunakan GROK untuk mengurai dua format Syslog tidak umum yang digunakan oleh Fluentd: FluentRFC5424 dan FluentRFC3164.
-
Format FluentRFC5424
-
Log mentah
receive_time: 1558663265 __topic__: content: <16>1 2019-02-28T12:00:00.003Z 192.168.0.1 aliyun 11111 ID24224 [exampleSDID@20224 iut='3' eventSource='Application' eventID='11211] Hi, from Fluentd! -
Aturan SLS DSL
e_regex('content',grok('%{POSINT:priority}>%{NUMBER:version} %{TIMESTAMP_ISO8601:timestamp} %{SYSLOGHOST:hostname} %{WORD:ident} %{USER:pid} %{USERNAME:msgid} (?P<extradata>(\[(.*)\]|[^ ])) %{GREEDYDATA:message}')) -
Hasil pemrosesan
receive_time: 1558663265 __topic__: content: <16>1 2019-02-28T12:00:00.003Z 192.168.0.1 aliyun 11111 ID24224 [exampleSDID@20224 iut='3' eventSource='Application' eventID='11211] Hi, from aliyun! priority: 16 version: 1 timestamp: 2019-02-28T12:00:00.003Z hostname: 192.168.0.1 ident: aliyun pid: 11111 msgid: ID24224 extradata: [exampleSDID@20224 iut='3' eventSource='Application' eventID='11211] message: Hi, from aliyun!
-
-
Format FluentRFC3164
-
Log mentah
receive_time: 1558663265 __topic__: content: <6>Feb 28 12:00:00 192.168.0.1 aliyun[11111]: [error] Syslog test -
Aturan SLS DSL
e_regex('content', grok('%{POSINT:priority}>%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{WORD:ident}(?P<pid>(\[[a-zA-Z0-9._-]+\]|[^:])): (?P<level>(\[(\w+)\]|[^ ])) %{GREEDYDATA:message}')) -
Hasil pemrosesan
receive_time: 1558663265 __topic__: content: <6>Feb 28 12:00:00 192.168.0.1 aliyun[11111]: [error] Syslog test priority: 6 timestamp: Feb 28 12:00:00 hostname: 192.168.0.1 ident: aliyun pid: [11111] level: [error] message: Syslog test
-
-
Penguraian Prioritas Lanjutan
Setelah Anda mengurai log Syslog dalam format FluentRFC5424 atau FluentRFC3164, Anda dapat lebih lanjut mengurai bidang priority untuk mengekstrak informasi facility dan severity. Untuk informasi lebih lanjut, lihat e_syslogrfc. Berikut adalah contohnya:
-
Log mentah
receive_time: 1558663265 __topic__: content: <13>1 2019-05-06T11:50:16.015554+08:00 iZbp1a65x3r1vhpe94fi2qZ user - - - twish priority: 13 version: 1 timestamp: 2019-05-06T11:50:16.015554+08:00 hostname: iZbp1a65x3r1vhpe94fi2qZ program: user message: twish -
Aturan SLS DSL
e_syslogrfc("priority","SYSLOGRFC5424") -
Hasil pemrosesan
receive_time: 1558663265 __topic__: content: <13>1 2019-05-06T11:50:16.015554+08:00 iZbp1a65x3r1vhpe94fi2qZ user - - - twish priority: 13 version: 1 timestamp: 2019-05-06T11:50:16.015554+08:00 hostname: iZbp1a65x3r1vhpe94fi2qZ program: user message: twish _facility_: 1 _severity_: 5 _severitylabel_: Notice: normal but significant condition _facilitylabel_: user-level messages
-