Todos os produtos
Search
Central de documentação

Simple Log Service:,

Última atualização: Oct 22, 2026

O Log Service (SLS) permite enviar dados de log para o MaxCompute (ODPS) para armazenamento e análise. Crie uma tarefa de envio de dados para o MaxCompute (nova versão) para configurar o pipeline de dados.

Pré-requisitos

Observações de uso

  • Para obter informações sobre as regiões que suportam o envio de dados para o MaxCompute (ODPS), consulte Supported regions.

  • Se o valor de um campo do tipo char ou varchar exceder o comprimento especificado, a parte excedente será truncada durante o envio para o MaxCompute (ODPS).

    Por exemplo, se o limite de comprimento for 3 e o valor do campo for 012345, o valor se tornará 012 após o envio para o MaxCompute (ODPS).

  • Caso o valor de um campo do tipo string, char ou varchar seja uma string vazia, seu valor se tornará Null após o envio para o MaxCompute (ODPS).

  • O valor de um campo do tipo datetime deve estar no formato YYYY-MM-DD HH:mm:ss. Múltiplos espaços são permitidos entre DD e HH. Um formato inválido não causa erro de envio, mas o valor se tornará Null após o envio para o MaxCompute (ODPS).

  • Se o valor de um campo do tipo date estiver em um formato inválido, a tarefa de envio de dados não reportará erro, porém o valor se tornará Null após o envio para o MaxCompute (ODPS).

  • Para um campo decimal, se o valor exceder a escala definida, o sistema fará o arredondamento. Se o valor exceder a precisão definida, o sistema descartará todo o log como dados incorretos e incrementará a contagem de erros.

  • Por padrão, o sistema descarta dados incorretos durante o envio de dados.

  • Quando um campo especificado na configuração de envio não existe em um log, seu valor no MaxCompute (ODPS) assume o valor padrão ou Null.

    • Se você definiu um valor padrão ao criar a tabela do MaxCompute (ODPS), o campo receberá esse valor padrão.

    • Caso nenhum valor padrão tenha sido definido, mas a coluna aceite valores Null, o valor do campo se tornará Null.

  • Devido às limitações do MaxCompute (ODPS), a concorrência máxima de envio de dados é de 64 operações de escrita. O throughput máximo para uma única partição é de 10 MB/s.

Procedimento

  1. Faça login no Simple Log Service console.

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

  3. Na aba Log Storage > Logstores, clique em no ícone > à esquerda do logstore alvo e escolha Data Processing > Export > MaxCompute (ODPS).

  4. Passe o ponteiro do mouse sobre MaxCompute (ODPS) e clique em no ícone +.

  5. No painel Data Shipping to MaxCompute, configure os parâmetros a seguir e clique em OK.

    Descrição dos parâmetros

    Parâmetro

    Descrição

    Job name

    Nome exclusivo da tarefa de envio de dados.

    Display name

    Nome de exibição da tarefa de envio de dados.

    Job description

    Descrição da tarefa de envio de dados.

    Destination region

    Região onde está localizada a tabela de destino do MaxCompute (ODPS).

    MaxCompute endpoint

    O endpoint do serviço MaxCompute (ODPS) na região de destino.

    Nota

    O painel do endpoint do MaxCompute fica recolhido por padrão. Clique em no ícone image para expandi-lo.

    No campo Cross-service EndPoint, clique em na seta suspensa à direita para expandir e visualizar os detalhes.

    Tunnel endpoint

    O tunnel endpoint do serviço MaxCompute (ODPS) na região de destino.

    Nota

    O painel do endpoint do MaxCompute fica recolhido por padrão. Clique em no ícone image para expandi-lo.

    No campo Cross-service EndPoint, clique em na seta suspensa à direita para expandir e visualizar os detalhes.

    Project name

    Projeto do MaxCompute (ODPS) que contém a tabela de destino.

    MaxCompute table name

    Nome da tabela do MaxCompute (ODPS).

    Read Log Service authorization

    Permissões para a tarefa de envio de dados ler dados do logstore.

    • Default role: Permite que a tarefa de envio de dados assuma a função de sistema da Alibaba Cloud AliyunLogDefaultRole para ler dados do logstore. Para mais informações, consulte Grant permissions to a default role.

    • Custom role: Permite que a tarefa de envio de dados assuma uma função personalizada do RAM para ler dados do logstore.

      Primeiro, conceda à função personalizada as permissões necessárias para ler dados do logstore. Em seguida, na seção Read Log Service authorization, insira o ARN (Alibaba Cloud Resource Name) da sua função personalizada. Para mais informações, consulte Authorize a RAM role to read data from a logstore.

    Write MaxCompute authorization

    Permissões para a tarefa de envio de dados gravar dados na tabela do MaxCompute (ODPS).

    • Default role: Permite que a tarefa de envio de dados assuma a função de sistema da Alibaba Cloud AliyunLogDefaultRole para gravar dados na tabela do MaxCompute (ODPS). Para mais informações, consulte Authorize a default role to write data to MaxCompute (for data shipping within the same account).

    • Custom role: Permite que a tarefa de envio de dados assuma uma função personalizada do RAM para gravar dados na tabela do MaxCompute (ODPS).

      Primeiro, conceda à função personalizada as permissões necessárias para gravar dados na tabela do MaxCompute (ODPS). Depois, na seção Write MaxCompute authorization, insira o ARN da sua função personalizada.

    Automatic Authorization

    Clique em Authorize para conceder automaticamente permissões à função do RAM para gravar dados no MaxCompute (ODPS).

    Importante
    • Se você estiver usando um usuário do RAM, esse usuário deve ter permissões para gerenciar a conta do MaxCompute (ODPS).

    • Caso a autorização automática falhe, copie os quatro comandos fornecidos para o console do MaxCompute (ODPS) e conceda as permissões manualmente. Para mais informações, consulte Grant permissions by using the command-line tool.

      USE xxxxx;
      ADD USER RAM$xxxxx:`role/xxxxx`;
      GRANT CreateInstance ON PROJECT xxxxx TO USER RAM$xxxxx:`role/xxxxx`;
      GRANT Describe, Alter, update ON TABLE xxxxx TO USER RAM$xxxxx:`role/xxxxx`;

    MaxCompute data columns

    Mapeie campos de log para colunas de dados na tabela do MaxCompute (ODPS). Insira o nome do campo de log na caixa de texto à esquerda e o nome da coluna de dados correspondente na caixa de texto à direita. Para mais informações, consulte Data model mapping.

    Importante
    • Os dados são enviados mapeando campos de log para colunas da tabela na ordem especificada. Alterar nomes de colunas no MaxCompute (ODPS) não afeta o envio. No entanto, se você alterar o esquema da tabela, será necessário reconfigurar esses mapeamentos.

    • O nome do campo de log na caixa de texto à esquerda não pode conter aspas duplas (""), aspas simples ('') ou espaços.

    • Se seus logs contiverem nomes de campos duplicados (por exemplo, dois campos chamados request_time), o Log Service poderá exibir um deles como request_time_0 no console. O nome armazenado subjacente permanece request_time. Use o nome de campo original request_time ao configurar a regra de envio.

      Com nomes de campos duplicados, o sistema envia apenas um valor aleatoriamente. Evite nomes de campos duplicados para garantir resultados previsíveis.

    MaxCompute partition columns

    Mapeie campos de log para colunas de chave de partição na tabela do MaxCompute (ODPS). Insira o nome do campo de log na caixa de texto à esquerda e o nome da coluna de chave de partição correspondente na caixa de texto à direita. Para mais informações, consulte Data model mapping.

    Nota
    • Campos cujos valores não podem ser enumerados não são suportados. Os seguintes campos não podem ser usados como campos de partição: _extract_others_, __extract_others__ e __extract_others_all__.

    • Recomendamos usar __receive_time__ (o momento em que um log chega ao servidor) como campo de partição para evitar perda de dados causada por excesso de partições.

    • Para mais informações sobre as diferenças entre os dois campos, consulte MaxCompute partition columns: __partition_time__ and __receive_time__.

    Time partition format

    Formato da partição de tempo. Para exemplos de configuração e detalhes, consulte Time partition format.

    Nota
    • Este parâmetro só entra em vigor quando o nome do campo de log em MaxCompute partition columns estiver definido como __receive_time__ ou __partition_time__.

    • Não use um formato de data com precisão de segundos. Isso pode fazer com que o número de partições em uma única tabela exceda o limite de 60.000.

    Time zone

    Fuso horário usado para formatar valores de tempo e partições de tempo. Para mais informações, consulte Time zone format.

    Shipping mode

    Escolha entre envio em tempo real ou envio em lote.

    • Real-time shipping: Lê e envia dados do logstore para o MaxCompute (ODPS) em tempo real.

    • Batch shipping: Lê e envia dados do logstore em lotes, processando dados com 5 a 10 minutos de antiguidade.

    Start time range

    Intervalo de tempo dos dados a serem enviados, com base no horário de recebimento do log. As seguintes opções estão disponíveis:

    • From Specific Time: A tarefa começa a enviar dados a partir de um horário inicial especificado e continua até ser interrompida manualmente.

    • Specific Time Range: A tarefa envia dados dentro de um intervalo de início e fim especificados. A tarefa é interrompida automaticamente ao atingir o horário final.

    Nota

    Se as colunas de partição incluírem __partition_time__, o horário inicial não pode ser anterior a 24 horas do horário atual, pois dados históricos podem ser distribuídos por muitas partições e acionar limites de slot e QPS do MaxCompute (ODPS). Se as colunas de partição usarem apenas __receive_time__, você poderá especificar qualquer horário inicial histórico. Para mais informações, consulte Start time limits.

    Após criar uma tarefa de envio de dados, uma nova tarefa geralmente envia dados para o MaxCompute em aproximadamente 10 minutos. Em seguida, você pode consultar os dados no MaxCompute (ODPS). Para mais informações, consulte How do I check the integrity of data after it is shipped from Log Service to MaxCompute?

    | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status |
    +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+
    | 10.10.*.* | 1642942213 | | 24/Jan/2022:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2022_01_23_20_50 | 200 |
    +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+

Mapeamento de modelo de dados

Para enviar logs do Log Service (SLS) para uma tabela do MaxCompute (ODPS), é necessário mapear os modelos de dados dos dois serviços. A seção a seguir descreve as regras de mapeamento e fornece exemplos.

  • Uma tabela do MaxCompute (ODPS) deve conter pelo menos uma coluna de dados e uma coluna de chave de partição.

  • Recomendamos o uso dos seguintes campos reservados do Log Service (SLS): __partition_time__, __source__ e __topic__.

  • Uma tabela do MaxCompute (ODPS) pode ter no máximo 60.000 partições. Se esse limite for excedido, não será possível gravar dados na tabela.

  • O campo reservado do sistema __extract_others__ era anteriormente denominado _extract_others_. O nome antigo ainda é suportado para fins de compatibilidade.

  • Os valores das colunas de chave de partição do MaxCompute (ODPS) não podem ser palavras reservadas ou palavras-chave do MaxCompute (ODPS). Para mais informações, consulte Reserved words and keywords.

  • As partições em uma tabela particionada do MaxCompute (ODPS) não podem estar vazias. É necessário mapear um campo específico, como um campo reservado do sistema ou um campo de log, para uma coluna de chave de partição. O valor do campo mapeado não pode estar vazio ou nulo. Se um campo de log for do tipo string, ele deve ser conversível para o tipo de dados da coluna de chave de partição. Se a conversão falhar e resultar em uma chave de partição vazia, o sistema descartará o log durante o envio.

  • No Log Service (SLS), um campo de log pode ser mapeado para apenas uma coluna em uma tabela do MaxCompute (ODPS), seja uma coluna de dados ou uma coluna de chave de partição. A redundância de campos não é suportada.

A tabela a seguir mostra um exemplo da relação de mapeamento entre colunas do MaxCompute (ODPS) e campos do Log Service (SLS). Para mais informações sobre campos reservados do Log Service (SLS), consulte Reserved fields.

Tipo de coluna do MaxCompute

Nome da coluna (MaxCompute)

Tipo de dados (MaxCompute)

Nome do campo de log (Log Service)

Tipo de campo (Log Service)

Descrição

Coluna de dados

log_source

string

__source__

Campo reservado

Origem do log.

log_time

bigint

__time__

Campo reservado

Horário do log no formato de timestamp Unix. Corresponde ao campo de tempo no modelo de dados.

log_topic

string

__topic__

Campo reservado

Tópico do log.

time

string

time

Campo de log

Campo analisado a partir do conteúdo do log, correspondendo a um par chave-valor no modelo de dados. Em muitos casos, o valor do campo __time__ coletado pelo Logtail é igual ao valor do campo time.

ip

string

ip

Campo de log

Campo analisado a partir do conteúdo do log.

thread

string

thread

Campo de log

Campo analisado a partir do conteúdo do log.

log_extract_others

string

__extract_others__

Campo reservado

O sistema serializa outros campos de log não mapeados em um objeto JSON chave-valor plano. Objetos JSON aninhados não são suportados.

Coluna de chave de partição

log_partition_time

string

__partition_time__

Campo reservado

O Log Service (SLS) calcula este valor a partir do campo __time__ do log e depois o alinha. A granularidade da partição é configurável.

status

string

status

Campo de log

Campo analisado a partir do conteúdo do log. Os valores deste campo podem ser enumerados para garantir que o número de partições não exceda o limite.

Formato de partição de tempo

O envio de dados para o MaxCompute (nova versão) suporta dois formatos de partição de tempo: StrfTimeFormat e SimpleDateFormat. O formato de partição de tempo só entra em vigor quando o campo na coluna de chave de partição do MaxCompute estiver definido como __receive_time__ ou __partition_time__.

StrfTimeFormat

strftime é uma função padrão da biblioteca C do UNIX que formata datas e horas. Ela usa códigos de formato iniciados com o caractere % para converter uma partição de tempo em uma string. Por exemplo, %Y_%m_%d representa o ano, mês e dia.

Nota

Ao criar uma nova tarefa de envio de dados para o MaxCompute (ODPS), você deve usar StrfTimeFormat.

Formato de partição de tempo

Exemplo de partição de tabela

%Y_%m_%d_%H_%M_00

2024_12_27_20_30_00

%Y_%m_%d_%H_%M

2024_12_27_20_30

%Y_%m_%d_%H

2024_12_27_20

%Y_%m_%d

2024_12_27

%Y_%m

2024_12

%Y

2024

%Y%m%d%H%M

202412272030

%Y%m%d%H

2024122720

%Y%m%d

20241227

%Y%m

202412

SimpleDateFormat

Formato de tempo na sintaxe SimpleDateFormat do Java, como yyyy-MM-dd HH:mm. Para mais informações, consulte Class SimpleDateFormat.

Nota

O SimpleDateFormat é suportado para compatibilidade com versões anteriores durante a migração de uma versão mais antiga. Para novas tarefas do MaxCompute, use StrfTimeFormat.

Tarefas de migração legada suportam os seguintes formatos de partição:

Formato de tempo de partição

Exemplo de partição de tabela

yyyy-MM-ddHH:mm

2024-12-2720-30

yyyy_MM_dd_HH_mm

2024_12_27_20_30

yyyy_MM_dd_HH

2024_12_27_20

yyyy-MM-dd HH:mm

2024-12-27 20:30

yyyyMMddHHmm

202412272030

yyyyMMddHH

2024122720

yyyyMMdd

20241227

yyyy_MM-dd_HH_mm

2024_12-27_20_30

yyyy-MM-dd

2024-12-27

Informações de referência

Nota

Recomenda-se o uso de __receive_time__ como campo de particionamento. Se os requisitos de negócio exigirem particionamento estrito pelo horário do log, __partition_time__ pode ser usado; no entanto, você deve aceitar explicitamente os riscos associados, incluindo dados atrasados sobrescrevendo partições mais antigas, timestamps anômalos gravando em partições futuras e atrasos na completude das partições.

  • O campo __partition_time__

    Uma forma comum de filtrar dados no MaxCompute é usar o horário do log como coluna de chave de partição.

    • Formato

      O campo __partition_time__ é derivado do campo __time__ no Log Service (SLS). Ele gera uma string de tempo com base no fuso horário e no formato de tempo da partição. Para evitar exceder o limite de partições de uma única tabela do MaxCompute, o valor da chave de partição de data é alinhado em intervalos de 1.800 segundos (meia hora).

      Por exemplo, se o horário do log no Log Service for 27/Jan/2022 20:50:13 +0800, o SLS calcula o campo reservado __time__ como 1643287813 (timestamp Unix). A tabela a seguir mostra os valores da coluna de chave de partição de tempo para diferentes configurações.

      Formato de tempo de partição

      __partition_time__

      %Y_%m_%d_%H_%M_00

      2022_01_27_20_30_00

      %Y_%m_%d_%H_%M

      2022_01_27_20_30

      %Y%m%d

      20220127

    • Uso

      Usar __partition_time__ para filtrar dados evita uma varredura completa da tabela. Por exemplo, para consultar dados de log de 26 de dezembro de 2024:

      select * from {ODPS_TABLE_NAME} where log_partition_time >= "2024_12_26" and log_partition_time < "2024_12_27";
  • O campo __receive_time__

    Uma maneira comum de filtrar dados no MaxCompute é usar o horário de chegada do log como coluna de chave de partição.

    • Formato

      Formato de tempo de partição

      __receive_time__

      %Y_%m_%d_%H_%M_00

      2022_01_27_20_30_00

      %Y_%m_%d_%H_%M

      2022_01_27_20_30

      %Y%m%d

      20220127

  • Os campos __extract_others__ e __extract_others_all__

    • O campo __extract_others__ contém todos os campos não mapeados dos campos de log, excluindo __topic__, __tag__:* e __source__.

    • O campo __extract_others_all__ contém todos os campos não mapeados dos campos de log, incluindo __topic__, __tag__:* e __source__.

Exemplos de SDK

export_odps_sink_demo.py