Todos los productos
Search
Centro de documentos

Simple Log Service:Analizar registros de errores de Java

Última actualización: Sep 02, 2026

Simple Log Service recopila registros de errores de Java de los servicios de Alibaba Cloud y los analiza mediante la transformación de datos, lo que le permite analizar errores de forma eficiente en escenarios de big data y alta concurrencia.

Requisitos previos

Los registros de errores de Java de SLS, OSS, SLB y ApsaraDB RDS se recopilan y almacenan en un logstore llamado cloud_product_error_log. Para obtener más información, consulte Use Logtail to collect logs.

Casos de uso

Por ejemplo, suponga que ha desarrollado una aplicación Java llamada Aplicación A que utiliza varios servicios de Alibaba Cloud, como OSS y SLS. Los registros de errores de Java generados por las llamadas a la API de estos servicios se almacenan en un logstore llamado cloud_product_error_log en la región China (Hangzhou). Para resolver los errores de Java de manera eficiente, analice los registros de errores a intervalos regulares mediante Simple Log Service.

Analice la hora del registro, el código de error, el código de estado, la información del servicio, el mensaje de error, el método de solicitud y el número de línea del error a partir de los registros recopilados; después, almacene los registros analizados en el logstore de cada servicio para su análisis.

A continuación se muestra un ejemplo de registro sin procesar:

__source__:192.0.2.10
__tag__:__client_ip__:203.0.113.10
__tag__:__receive_time__:1591957901
__topic__:
message: 2021-05-15 16:43:35 ParameterInvalid 400
com.aliyun.openservices.log.exception.LogException:The body is not valid json string.
   at com.aliyun.openservice.log.Client.ErrorCheck(Client.java:2161)
   at com.aliyun.openservice.log.Client.SendData(Client.java:2312)
   at com.aliyun.openservice.log.Client.PullLogsk(Client.java:1397)
   at com.aliyun.openservice.log.Client.SendData(Client.java:2265)
   at com.aliyun.openservice.log.Client.GetCursor(Client.java:1123)
   at com.aliyun.openservice.log.Client.PullLogs(Client.java:2161)
   at com.aliyun.openservice.log.Client.ErrorCheck(Client.java:2426)
   at transformEvent.main(transformEvent.java:2559)

Flujo de trabajo

Logtail recopila los registros de errores de la Aplicación A y los envía a un logstore llamado cloud_product_error_log. Posteriormente, los registros se procesan mediante la transformación de datos y se entregan a los logstores correspondientes para su análisis.

image
  1. Diseñe una instrucción de transformación de datos: analice los datos y escriba la instrucción de transformación.

  2. Cree un trabajo de transformación de datos: distribuya los registros en los logstores según el servicio para realizar el análisis de errores.

  3. Consulte y analice los datos: examine los registros de errores en el logstore de cada servicio.

Paso 1: Diseñar una instrucción de transformación de datos

Transformation process

Para analizar los registros de errores:

  1. Extraiga la marca de tiempo, el código de error, el código de estado, la información del servicio, el mensaje de error, el método de solicitud y el número de línea del error del campo message.

  2. Almacene los registros de errores en el logstore de cada servicio.

etl-needs

Transformation logic

Analice la marca de tiempo, el código de error, el código de estado, la información del servicio, el mensaje de error, el método de solicitud y el número de línea del error en los registros sin procesar; luego, diseñe una expresión regular para extraer estos campos.etl_logic

Syntax reference

  1. Utilice la función regex_match para comprobar si una entrada de registro contiene LogException. Para obtener más información, consulte regex_match.

  2. Si un registro coincide con LogException, se procesa según las reglas de análisis para registros de errores de SLS. Si coincide con OSSException, se procesa según las reglas para registros de errores de OSS. Para obtener más información, consulte e_switch.

  3. Utilice la función e_regex para analizar los registros de errores correspondientes con una expresión regular. Para obtener más información, consulte e_regex.

  4. Elimine el campo message original y entregue los datos analizados al logstore del servicio correspondiente. Para obtener más información, consulte e_drop_fields y e_output.

  5. Para obtener más información, consulte Groups in regular expressions.

Syntax analysis

El siguiente ejemplo muestra cómo analizar un registro de errores de SLS mediante una expresión regular:

La sintaxis completa de transformación es la siguiente:

e_switch(
    regex_match(v("message"), r"LogException"),
    e_compose(
        e_regex(
            "message",
            "(?P<data_time>\S+\s\S+)\s(?P<error_code>[a-zA-Z]+)\s(?P<status>[0-9]+)\scom\.aliyun\.openservices\.log\.exception\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9:,\-\s]+)\.(\s+\S+\s\S+){5}\s+\S+\scom\.aliyun\.openservices\.log\.Client\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java\:(?P<error_line>[0-9]+)\)",
        ),
        e_drop_fields("message"),
        e_output("sls-error"),
    ),
    regex_match(v("message"), r"OSSException"),
    e_compose(
        e_regex(
            "message",
            "(?P<data_time>\S+\s\S+)\scom\.aliyun\.oss\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9,\s]+)\.\n\[ErrorCode\]\:\s(?P<error_code>[a-zA-Z]+)\n\[RequestId\]\:\s(?P<request_id>[a-zA-Z0-9]+)\n\[HostId\]\:\s(?P<host_id>[a-zA-Z-.]+)\n\S+\n\S+(\s\S+){3}\n\s+\S+\s+(.+)(\s+\S+){24}\scom\.aliyun\.oss\.OSSClient\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java:(?P<error_line>[0-9]+)\)",
        ),
        e_drop_fields("message"),
        e_output("oss-error"),
    ),
)

Paso 2: Crear un trabajo de transformación de datos

  1. Vaya a la página de transformación de datos.

    1. En la sección Projects, haga clic en el proyecto deseado.

    2. En la pestaña Log Storage > Logstores, haga clic en el logstore deseado.

    3. En la página de consulta y análisis, haga clic en Data Transformation.

  2. En la esquina superior derecha de la página, seleccione un intervalo de tiempo para los datos de registro.

    Asegúrese de que haya registros disponibles en la pestaña Raw Logs.

  3. En el editor, introduzca la instrucción de transformación de datos.

    e_switch(
        regex_match(v("message"), r"LogException"),
        e_compose(
            e_regex(
                "message",
                "(?P<data_time>\S+\s\S+)\s(?P<error_code>[a-zA-Z]+)\s(?P<status>[0-9]+)\scom\.aliyun\.openservices\.log\.exception\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9:,\-\s]+)\.(\s+\S+\s\S+){5}\s+\S+\scom\.aliyun\.openservices\.log\.Client\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java\:(?P<error_line>[0-9]+)\)",
            ),
            e_drop_fields("message"),
            e_output("sls-error"),
        ),
        regex_match(v("message"), r"OSSException"),
        e_compose(
            e_regex(
                "message",
                "(?P<data_time>\S+\s\S+)\scom\.aliyun\.oss\.(?P<product_exception>[a-zA-Z]+)\:(?P<error_message>[a-zA-Z0-9,\s]+)\.\n\[ErrorCode\]\:\s(?P<error_code>[a-zA-Z]+)\n\[RequestId\]\:\s(?P<request_id>[a-zA-Z0-9]+)\n\[HostId\]\:\s(?P<host_id>[a-zA-Z-.]+)\n\S+\n\S+(\s\S+){3}\n\s+\S+\s+(.+)(\s+\S+){24}\scom\.aliyun\.oss\.OSSClient\.(?P<method>[a-zA-Z]+)\S+\s+\S+\stransformEvent\.main\(transformEvent\.java:(?P<error_line>[0-9]+)\)",
            ),
            e_drop_fields("message"),
            e_output("oss-error"),
        ),
    )
  4. Haga clic en Preview Data.

    __source__: xxx
    __tag__:__client_ip__: xxx
    __tag__:__receive_time__: 1590978615
    __topic__:
    data_time: 2020-05-16 18:30:06
    error_code: AccessDenied
    error_line: 399
    error_message: You are forbidden to list buckets
    host_id: xxx.oss-cn-hangzhou.aliyuncs.com
    method: getBucket
    product_exception: OSSException
    request_id: YGYLUM9LG2USA6M7HYUBT1L0
  5. Cree el trabajo de transformación de datos.

    1. Haga clic en Save as Transformation Job.

    2. En el panel Create Data Transformation Job, configure los siguientes parámetros y haga clic en OK.

      Parámetro

      Descripción

      Job name

      Nombre del trabajo de transformación de datos. Por ejemplo, introduzca test.

      Authorization method

      Seleccione Default Role para otorgar permisos de lectura de datos del logstore de origen.

      Storage target

      Target name

      Nombre del destino de almacenamiento. Por ejemplo, introduzca sls-error y oss-error.

      Target region

      Seleccione la región del proyecto de destino. Por ejemplo, seleccione China (Hangzhou).

      Target project

      Proyecto de destino para los datos transformados.

      Target store

      Logstore de destino para los datos transformados. Por ejemplo, introduzca sls-error y oss-error.

      Authorization method

      Seleccione default role para otorgar permisos de escritura de los resultados de la transformación de datos en el logstore de destino.

      Processing range

      Time range

      Seleccione All para el intervalo de tiempo.

    Una vez creado el trabajo de transformación de datos, Simple Log Service genera un panel para el trabajo de forma predeterminada. Puede consultar las métricas del trabajo en dicho panel.

    El gráfico Exception Detail muestra qué entradas de registro no se pudieron analizar, lo que le ayuda a ajustar su expresión regular.

    • Un registro de nivel WARNING indica un fallo de análisis que no interrumpe el trabajo.

    • Un registro de nivel ERROR interrumpe el trabajo. Identifique y resuelva el problema; luego, modifique la expresión regular hasta que el trabajo pueda analizar todos los tipos de registros de errores.

Paso 3: Analizar datos de registros de errores

Después de transformar los registros de errores sin procesar, puede analizar los datos estructurados. El siguiente ejemplo utiliza registros de errores de Java de Simple Log Service.

  1. En la sección Projects, haga clic en el proyecto deseado.

    image

  2. En la pestaña Log Storage > Logstores, haga clic en el logstore deseado.

    image

  3. En el cuadro de búsqueda, introduzca una instrucción de consulta.

    • Cuente el número de errores por cada método.

      * | SELECT COUNT(method) as m_ct, method GROUP BY method
    • Encuentre el mensaje de error más común para el método PutLogs.

      * | SELECT error_message,COUNT(error_message) as ct_msg, method WHERE method LIKE 'PutLogs' GROUP BY error_message,method
    • Cuente las apariciones de cada código de error.

      * | SELECT error_code,COUNT(error_code) as count_code GROUP BY error_code
    • Cree una línea temporal de errores para ver la información de errores de llamadas a la API en tiempo real.

      * | SELECT date_format(data_time, '%Y-%m-%d %H:%m:%s') as date_time,status,product_exception,error_line, error_message,method ORDER BY date_time desc
  4. Haga clic en 15Minutes(Relative) para establecer el intervalo de tiempo de la consulta.

    Puede especificar una hora relativa, un marco de tiempo o un intervalo de tiempo personalizado.

    Nota

    El resultado de la consulta puede tener un margen de error de hasta un minuto.

  5. Haga clic en Search & Analyze para ver los resultados de la consulta y el análisis.