Todos os produtos
Search
Central de documentação

Simple Log Service:Como verificar a completude dos dados enviados do Simple Log Service para o MaxCompute?

Última atualização: Jun 23, 2026

Após o Simple Log Service (SLS) enviar dados para uma tabela do MaxCompute, verifique a completude dos dados no nível da partição. Use os métodos a seguir para determinar se uma partição contém todos os dados esperados.

Verificar a completude usando __partition_time__ como chave de partição

O campo de tempo do log determina o valor de __partition_time__. O sistema arredonda o timestamp para baixo até a hora mais próxima para gerar o valor da partição. Esse valor não corresponde ao horário de envio ou gravação do log no SLS.

Por exemplo, um log com timestamp 2017-05-19 10:43:00, no formato yyyy_MM_dd_HH_mm, com envio a intervalos de 1 hora, entra na partição 2017_05_19_10_00, independentemente de quando foi gravado no SLS. Para detalhes do cálculo, consulte Enviar logs para o MaxCompute (legado).

Para ingestão de logs em tempo real (sem backfill histórico), use uma das abordagens a seguir:

  • Opção 1 (recomendado): Verificar o status da tarefa de envio pela API, SDK ou console

    Use operações de API, SDKs ou o console do SLS para recuperar tarefas de envio de um projeto ou Logstore. O exemplo a seguir mostra uma resposta de API. O console apresenta os mesmos dados visualmente.

    {
      "count" : 10,
      "total" : 20,
      "statistics" : {
          "running" : 0,
          "success" : 20,
          "fail" : 0 
      }
      "tasks" : [
          ...
          {
              "id" : "abcdefghijk",
              "taskStatus" : "success",
              "taskMessage" : "",
              "taskCreateTime" : 1448925013,
              "taskLastDataReceiveTime" : 1448915013,
              "taskFinishTime" : 1448926013
          },
          {
              "id" : "xfegeagege",
              "taskStatus" : "success",
              "taskMessage" : "",
              "taskCreateTime" : 1448926813,
              "taskLastDataReceiveTime" : 1448930000,
              "taskFinishTime" : 1448936910
          }
      ]
    }

    taskLastDataReceiveTime indica o timestamp do último dado recebido pelo SLS. Use esse valor para determinar se todos os dados recebidos antes de um horário-alvo T foram enviados ao MaxCompute.

    • Se taskLastDataReceiveTime for anterior a T mais 300s e todas as tarefas concluídas antes de T mais 300s tiverem o status success, todos os dados recebidos antes de T foram enviados. O deslocamento de 300 segundos considera novas tentativas transitórias de entrega.

    • Se alguma tarefa tiver o status ready ou running, o envio ainda está em andamento. Aguarde a conclusão da tarefa antes de tirar conclusões.

    • Se uma tarefa tiver o status failed, diagnostique a falha e tente novamente. Se a falha for causada por um problema de configuração, atualize a configuração de envio.

  • Opção 2: Inferir a completude pela existência da partição (aproximado)

    Se a tabela do MaxCompute for particionada em intervalos de 30 minutos com intervalos de envio de 30 minutos e a tabela contiver:

    2017_05_19_10_00
    2017_05_19_10_30

    a presença da partição 2017_05_19_11_00 confirma que as partições 10_00 e 10_30 estão completas.

    Essa abordagem não exige chamadas de API, mas os resultados podem ser imprecisos. Use a Opção 1 para verificação confiável.

Verificar a completude usando um campo de log personalizado como chave de partição

Se você configurou um campo de log personalizado (por exemplo, um campo date com valores como 20170518 ou 20170519) como coluna de chave de partição, observe que o valor do campo pode diferir do horário em que o log foi gravado no SLS. Considere essa diferença e aplique a mesma lógica de verificação da Opção 1, usando o horário de gravação do log como ponto de referência.

Para as etapas de verificação, consulte a seção acima.

A tarefa de envio foi bem-sucedida, mas os dados no MaxCompute estão incompletos

O status success indica que o SLS concluiu a tarefa de envio, mas não garante que todos os logs chegaram ao MaxCompute. O SLS ignora logs com erros de mapeamento de partição e continua enviando o restante, de modo que uma tarefa pode ser concluída com sucesso mesmo com dados omitidos silenciosamente.

Dois erros de mapeamento de partição causam esse comportamento:

  • Campo ausente: o campo do SLS mapeado para a coluna de chave de partição não existe no log. O valor da partição fica nulo, e o MaxCompute o rejeita.

  • Caracteres reservados: o valor do campo contém barras (/) ou outros caracteres reservados no MaxCompute que não podem ser usados em uma coluna de chave de partição.

Para corrigir esse problema, atualize a configuração da coluna de chave de partição. Usar o campo reservado __partition_time__ como chave de partição evita ambos os problemas. Para detalhes de configuração, consulte Limitações.