Syslog es un protocolo estándar de la industria para el registro de logs de dispositivos. Se utiliza comúnmente en la gestión de redes, la gestión de seguridad y la auditoría de registros. Puede usar la función GROK en el lenguaje específico de dominio (DSL) de Simple Log Service (SLS) para analizar de manera eficiente registros Syslog en diversos formatos.
Descripción general
Syslog se usa ampliamente para los registros del sistema en sistemas operativos tipo Unix. Los mensajes Syslog se pueden guardar en archivos locales o enviar a través de la red a un servidor receptor. El servidor puede almacenar de forma centralizada mensajes Syslog de varios dispositivos o analizar su contenido para procesarlos posteriormente.
Problema
Durante mucho tiempo no existió un estándar que regulara el formato Syslog, lo que provocó inconsistencias en el formato o la ausencia total de uno definido. Esto dificulta el análisis programático de los mensajes Syslog, ya que a menudo solo se pueden tratar como cadenas de texto simples. Por lo tanto, es fundamental comprender cómo analizar registros Syslog en distintos formatos.
Introducción a los estándares del protocolo Syslog
En la industria se utilizan dos protocolos Syslog comunes: RFC 5424 (publicado en 2009) y RFC 3164 (publicado en 2001). Las siguientes secciones describen las diferencias entre estos dos protocolos. Comprender estas diferencias le permite usar GROK para analizar registros Syslog con flexibilidad.
-
Protocolo RFC 5424
El protocolo RFC 5424 incluye los siguientes campos. Para obtener más información, consulte el documento oficial del protocolo.
PRI VERSION SP TIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGIDLos siguientes ejemplos describen estos campos:
""" Example1: <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 """ Example2: <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." """ Example3: - with 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... -
Protocolo RFC 3164
El protocolo RFC 3164 incluye los siguientes campos. Para obtener más información, consulte el documento oficial del protocolo.
PRI HEADER[TIME HOSTNAME] MSGEl siguiente ejemplo describe estos campos:
""" <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.
Uso de GROK para analizar formatos Syslog comunes
Puede utilizar GROK para analizar varios formatos Syslog comunes. Para obtener más información sobre las reglas de GROK, consulte GROK pattern reference.
-
Análisis del formato TraditionalFormat
-
Registro sin procesar
receive_time: 1558663265 __topic__: content: May 5 10:20:57 iZbp1a65x3r1vhpe94fi2qZ systemd: Started System Logging Service. -
Regla DSL de SLS
e_regex('content', grok('%{SYSLOGBASE} %{GREEDYDATA:message}')) -
Resultado del procesamiento
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.
-
-
Análisis del formato FileFormat
-
Registro sin procesar
receive_time: 1558663265 __topic__: content: 2019-05-06T09:26:07.874593+08:00 iZbp1a65x3r1vhpe94fi2qZ user: 834753 -
Regla DSL de SLS
e_regex('content',grok('%{TIMESTAMP_ISO8601:timestamp} %{SYSLOGHOST:hostname} %{SYSLOGPROG} %{GREEDYDATA:message}')) -
Resultado del procesamiento
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
-
-
Análisis de registros en formato RSYSLOG_SyslogProtocol23Format
-
Registro sin procesar
receive_time: 1558663265 __topic__: content: <13>1 2019-05-06T11:50:16.015554+08:00 iZbp1a65x3r1vhpe94fi2qZ user - - - twish -
Regla DSL de SLS
e_regex('content',grok('%{POSINT:priority}>%{NUMBER:version} %{TIMESTAMP_ISO8601:timestamp} %{SYSLOGHOST:hostname} %{PROG:program} - - - %{GREEDYDATA:message}')) -
Resultado del procesamiento
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
-
-
Análisis del formato RSYSLOG_DebugFormat
-
Registro sin procesar
receive_time: 1558663265 __topic__: content: 2019-05-06T14:29:37.558854+08:00 iZbp1a65x3r1vhpe94fi2qZ user: environment -
Regla DSL de SLS
e_regex('content',grok('%{TIMESTAMP_ISO8601:timestamp} %{SYSLOGHOST:hostname} %{SYSLOGPROG} %{GREEDYDATA:message}')) -
Resultado del procesamiento
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
-
Uso de GROK para analizar formatos de registro Syslog poco comunes
Puede usar GROK para analizar dos formatos Syslog poco comunes que utiliza Fluentd: FluentRFC5424 y FluentRFC3164.
-
Formato FluentRFC5424
-
Registro sin procesar
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! -
Regla DSL de SLS
e_regex('content',grok('%{POSINT:priority}>%{NUMBER:version} %{TIMESTAMP_ISO8601:timestamp} %{SYSLOGHOST:hostname} %{WORD:ident} %{USER:pid} %{USERNAME:msgid} (?P<extradata>(\[(.*)\]|[^ ])) %{GREEDYDATA:message}')) -
Resultado del procesamiento
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!
-
-
Formato FluentRFC3164
-
Registro sin procesar
receive_time: 1558663265 __topic__: content: <6>Feb 28 12:00:00 192.168.0.1 aliyun[11111]: [error] Syslog test -
Regla DSL de SLS
e_regex('content', grok('%{POSINT:priority}>%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{WORD:ident}(?P<pid>(\[[a-zA-Z0-9._-]+\]|[^:])): (?P<level>(\[(\w+)\]|[^ ])) %{GREEDYDATA:message}')) -
Resultado del procesamiento
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
-
-
Análisis extendido de prioridad
Después de analizar registros Syslog en formato FluentRFC5424 o FluentRFC3164, puede analizar adicionalmente el campo de prioridad para extraer información de facility y severidad. Para obtener más información, consulte e_syslogrfc. A continuación se muestra un ejemplo:
-
Registro sin procesar
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 -
Regla DSL de SLS
e_syslogrfc("priority","SYSLOGRFC5424") -
Resultado del procesamiento
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
-