Todos os produtos
Search
Central de documentação

Simple Log Service:Analisar logs de erro Java

Última atualização: Jul 03, 2026

A análise de logs de erro Java em cenários de big data e alta concorrência ajuda a reduzir custos de O&M. O Simple Log Service coleta logs de erro Java de serviços da Alibaba Cloud e os analisa por meio de transformação de dados.

Pré-requisitos

Os logs de erro Java do SLS, OSS, SLB e ApsaraDB RDS foram coletados e armazenados em um Logstore chamado cloud_product_error_log. Para mais informações, consulte Usar o Logtail para coletar logs.

Casos de uso

Por exemplo, suponha que você tenha desenvolvido uma aplicação Java chamada Aplicação A utilizando vários serviços da Alibaba Cloud, como OSS e SLS. Você criou um Logstore chamado cloud_product_error_log na região China (Hangzhou) para armazenar logs de erro Java gerados por chamadas de API a esses serviços. Para corrigir erros Java com eficiência, analise os logs de erro em intervalos regulares usando o Simple Log Service.

Para atender a esses requisitos, extraia dos logs coletados as seguintes informações: horário do log, código de erro, código de status, informações do serviço, mensagem de erro, método de requisição e número da linha do erro. Em seguida, armazene os logs analisados no Logstore de cada serviço para analisar os erros.

Veja abaixo um exemplo de log bruto:

__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)

Fluxo de trabalho

O Logtail coleta logs de erro da Aplicação A e os envia para um Logstore chamado cloud_product_error_log. Os logs são então processados por meio de transformação de dados e entregues aos respectivos Logstores para análise. O fluxo de trabalho geral é o seguinte:

image
  1. Elaborar uma instrução de transformação de dados: analise os dados e escreva a instrução de transformação.

  2. Crie um job de transformação de dados: distribua os logs para os Logstores com base no serviço para análise de erros.

  3. Consultar e analisar dados: examine os logs de erro no Logstore de cada serviço.

Etapa 1: Elaborar uma instrução de transformação de dados

Transformation process

Para analisar logs de erro:

  1. Extraia o carimbo de data/hora, código de erro, código de status, informações do serviço, mensagem de erro, método de requisição e número da linha do erro do campo message.

  2. Armazene os logs de erro no Logstore de cada serviço.

etl-needs

Transformation logic

Analise o carimbo de data/hora, código de erro, código de status, informações do serviço, mensagem de erro, método de requisição e número da linha do erro nos logs brutos. Em seguida, crie uma expressão regular para extrair esses campos.etl_logic

Syntax reference

  1. Utilize a função regex_match para verificar se uma entrada de log contém LogException. Para mais informações, consulte regex_match.

  2. Caso um log corresponda a LogException, ele será processado conforme as regras de análise para logs de erro do SLS. Se corresponder a OSSException, seguirá as regras para logs de erro do OSS. Para mais detalhes, veja e_switch.

  3. Aplique a função e_regex para analisar os logs de erro correspondentes com uma expressão regular. Consulte e_regex para mais informações.

  4. Exclua o campo message original e entregue os dados analisados ao Logstore do serviço apropriado. Veja e_drop_fields e e_output para detalhes adicionais.

  5. Para saber mais sobre grupos em expressões regulares, consulte Grupos em expressões regulares.

Syntax analysis

O exemplo a seguir demonstra como analisar um log de erro do SLS usando uma expressão regular:

A sintaxe completa de transformação é a seguinte:

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"),
    ),
)

Etapa 2: Crie um job de transformação de dados

  1. Acesse a página de transformação de dados.

    1. Na seção Projects, clique em no projeto desejado.

    2. Na aba Log Storage > Logstores, clique em no Logstore desejado.

    3. Na página de consulta e análise, clique em Data Transformation.

  2. No canto superior direito da página, selecione um intervalo de tempo para os dados de log.

    Certifique-se de que haja logs disponíveis na aba Raw Logs.

  3. No editor, insira a instrução de transformação de dados.

    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. Clique em 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. Crie o job de transformação de dados.

    1. Clique em Save as Transformation Job.

    2. No painel Create Data Transformation Job, configure os parâmetros a seguir e clique em OK.

      Parâmetro

      Descrição

      Job name

      Nome do job de transformação de dados. Por exemplo, insira test.

      Authorization method

      Selecione Default Role para conceder permissões de leitura de dados do Logstore de origem.

      Storage target

      Target name

      Nome do destino de armazenamento. Por exemplo, insira sls-error e oss-error.

      Target region

      Região do projeto de destino. Por exemplo, selecione China (Hangzhou).

      Target project

      Projeto de destino para os dados transformados.

      Target store

      Logstore de destino para os dados transformados. Por exemplo, insira sls-error e oss-error.

      Authorization method

      Selecione default role para conceder permissões de escrita dos resultados da transformação de dados no Logstore de destino.

      Processing range

      Time range

      Selecione All para o intervalo de tempo.

    Após criar o job de transformação de dados, o Simple Log Service gera automaticamente um painel para monitoramento. Nesse painel, visualize as métricas do job.

    O gráfico Exception Detail exibe quais entradas de log falharam na análise, auxiliando no ajuste da expressão regular.

    • Um log de nível WARNING indica uma falha de análise que não interrompe o job.

    • Um log de nível ERROR interrompe o job. Identifique e resolva o problema e modifique a expressão regular até que o job consiga analisar todos os tipos de logs de erro.

Etapa 3: Analisar dados de logs de erro

Depois que os logs de erro brutos forem transformados, analise os dados estruturados. Esta seção utiliza logs de erro Java do Simple Log Service como exemplo.

  1. Na seção Projects, clique em no projeto desejado.

    image

  2. Na aba Log Storage > Logstores, clique em no Logstore desejado.

    image

  3. Na caixa de pesquisa, insira uma instrução de consulta.

    • Conte o número de erros por método.

      * | SELECT COUNT(method) as m_ct, method GROUP BY method
    • Identifique a mensagem de erro mais comum para o método PutLogs.

      * | SELECT error_message,COUNT(error_message) as ct_msg, method WHERE method LIKE 'PutLogs' GROUP BY error_message,method
    • Conte as ocorrências de cada código de erro.

      * | SELECT error_code,COUNT(error_code) as count_code GROUP BY error_code
    • Crie uma linha do tempo de erros para visualizar informações de erros de chamadas de API em tempo 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. Clique em 15Minutes(Relative) para definir o intervalo de tempo da consulta.

    É possível especificar um tempo relativo, um período fixo ou um intervalo de tempo personalizado.

    Nota

    O resultado da consulta pode apresentar uma margem de erro de até um minuto.

  5. Clique em Search & Analyze para visualizar os resultados da consulta e análise.