Todos os produtos
Search
Central de documentação

DataWorks:LogHub (SLS)

Última atualização: Jun 27, 2026

A fonte de dados LogHub (SLS) permite ler e gravar dados no Simple Log Service (SLS). Este tópico descreve o suporte do DataWorks à sincronização de dados para o LogHub (SLS).

Recursos

O Simple Log Service (SLS) atende aos seguintes cenários de sincronização de dados:

  • Entre regiões diferentes.

  • Entre contas distintas da Alibaba Cloud.

  • Na mesma conta da Alibaba Cloud.

  • Entre contas de nuvem pública e financeira.

Limitações

Durante a gravação offline no LogHub (SLS) pelo Data Integration, pode ocorrer duplicação de dados se uma tarefa for reexecutada após um failover, pois o LogHub (SLS) não é idempotente.

Tipos de campo suportados

O Data Integration suporta a leitura e a gravação dos seguintes tipos de campo do LogHub (SLS).

Tipo de campo

Leitura offline (LogHub (SLS) Reader)

Gravação offline (LogHub (SLS) Writer)

Leitura em tempo real

STRING

Suportado

Suportado

Suportado

Detalhes:

  • Ao gravar dados no LogHub (SLS) no modo offline

    Todos os tipos de dados suportados são convertidos para STRING antes da gravação no LogHub (SLS). A tabela a seguir lista as conversões de tipo de dados para o writer do LogHub (SLS).

    Tipo interno do Data Integration suportado

    Tipo de dados ao gravar no LogHub (SLS)

    LONG

    STRING

    DOUBLE

    STRING

    STRING

    STRING

    DATE

    STRING

    BOOLEAN

    STRING

    BYTES

    STRING

  • Ao ler dados do LogHub (SLS) no modo em tempo real

    Os seguintes campos de metadados são incluídos por padrão.

    Campo de sincronização em tempo real do LogHub (SLS)

    Tipo de dados

    Descrição

    __time__

    STRING

    Campo reservado do SLS: __time__. Horário do log especificado durante a gravação dos dados. Trata-se de um timestamp UNIX em segundos.

    __source__

    STRING

    Campo reservado do SLS: __source__. Dispositivo de origem do log.

    __topic__

    STRING

    Campo reservado do SLS: __topic__. Nome do tópico.

    __tag__:__receive_time__

    STRING

    Horário de chegada do log ao servidor. Se o recurso de registro de endereços IP públicos estiver ativado, o servidor anexa este campo ao log bruto após o recebimento. Trata-se de um timestamp UNIX em segundos.

    __tag__:__client_ip__

    STRING

    Endereço IP público do dispositivo de origem do log. Se o recurso de registro de endereços IP públicos estiver ativado, o servidor anexa este campo ao log bruto após o recebimento.

    __tag__:__path__

    STRING

    Caminho do arquivo de log coletado pelo Logtail. O Logtail anexa automaticamente este campo ao log.

    __tag__:__hostname__

    STRING

    Nome da máquina da qual o Logtail coleta dados. O Logtail anexa automaticamente este campo ao log.

Criar uma fonte de dados

Configurar a fonte de dados

Antes de desenvolver uma tarefa de sincronização de dados, crie a fonte de dados correspondente no DataWorks. Para mais informações, consulte Gerenciar fontes de dados. A interface de configuração fornece descrições detalhadas dos parâmetros como dicas na tela.

Criar uma fonte de dados entre contas

Este exemplo mostra como sincronizar dados de um serviço LogHub na Conta A para um serviço MaxCompute na Conta B usando uma tarefa configurada na Conta B. Observe os seguintes pontos para sincronização de dados entre contas:

  1. Crie uma fonte de dados LogHub (SLS) usando o AccessKey ID e o AccessKey secret da Conta A.

    Essa configuração permite que a Conta B sincronize dados de todos os projetos do Simple Log Service (SLS) na Conta A.

  2. Crie uma fonte de dados LogHub (SLS) usando o AccessKey ID e o AccessKey secret de um usuário RAM (por exemplo, A1) na Conta A.

    • A Conta A concede permissões gerais do Simple Log Service (SLS) ao usuário RAM A1, como AliyunLogFullAccess e AliyunLogReadOnlyAccess. Para mais informações, consulte Criar um usuário RAM e conceder permissões.

      Nota

      Conceder as políticas de sistema AliyunLogFullAccess e AliyunLogReadOnlyAccess permite que o usuário RAM consulte todos os recursos do Simple Log Service na conta principal.

    • A Conta A concede uma política de permissão personalizada do Simple Log Service (SLS) ao usuário RAM A1.

      Acesse a página RAM console > Permissions > Policies na Conta A e clique em Create Policy.

      Para mais informações sobre autorização, consulte Introdução ao RAM e Visão geral.

      Após conceder permissões com base na seguinte política, a Conta B poderá sincronizar dados apenas dos projetos project_name1 e project_name2 no Simple Log Service (SLS) usando o usuário RAM A1.

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "log:Get*",
                      "log:List*",
                      "log:CreateConsumerGroup",
                      "log:UpdateConsumerGroup",
                      "log:DeleteConsumerGroup",
                      "log:ListConsumerGroup",
                      "log:ConsumerGroupUpdateCheckPoint",
                      "log:ConsumerGroupHeartBeat",
                      "log:GetConsumerGroupCheckPoint"
                  ],
                  "Resource": [
                      "acs:log:*:*:project/project_name1",
                      "acs:log:*:*:project/project_name1/*",
                      "acs:log:*:*:project/project_name2",
                      "acs:log:*:*:project/project_name2/*"
                  ],
                  "Effect": "Allow"
              }
          ]
      }

Desenvolver uma tarefa de sincronização de dados

Para obter informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os guias a seguir.

Nota

Quando o LogHub for usado como origem, filtre dados usando a sintaxe de consulta do LogHub ou instruções Structured Process Language (SPL). Para mais informações sobre a sintaxe, consulte Apêndice 2: Sintaxe SPL para filtragem.

Configurar uma tarefa de sincronização offline de tabela única

Configurar uma tarefa de sincronização em tempo real de tabela única

Para o procedimento, consulte Configurar uma tarefa de sincronização em tempo real de tabela única.

Configurar uma tarefa de sincronização em tempo real de banco de dados completo

Para mais informações, consulte Configurar uma tarefa de sincronização em tempo real de banco de dados completo.

Perguntas frequentes

Para mais perguntas frequentes sobre o Data Integration, consulte Perguntas frequentes sobre o Data Integration.

Apêndice 1: Exemplos de script e descrições de parâmetros

Configurar uma tarefa de sincronização em lote usando o editor de código

Para configurar uma tarefa de sincronização em lote usando o editor de código, defina os parâmetros relacionados no script conforme os requisitos unificados de formato de script. Para mais informações, consulte Configuração no modo de script. As informações a seguir descrevem os parâmetros obrigatórios para as fontes de dados ao utilizar o editor de código para tarefas de sincronização em lote.

Exemplo de script do Reader

{
 "type":"job",
 "version":"2.0",// Version number.
 "steps":[
     {
         "stepType":"LogHub",// Plug-in name.
         "parameter":{
             "datasource":"",// Data source.
             "column":[// Fields.
                 "col0",
                 "col1",
                 "col2",
                 "col3",
                 "col4",
                 "C_Category",
                 "C_Source",
                 "C_Topic",
                 "C_MachineUUID", // Topic.
                 "C_HostName", // Hostname.
                 "C_Path", // Path.
                 "C_LogTime" // Event time.
             ],
             "beginDateTime":"",// The start time for data consumption.
             "batchSize":"",// The number of data entries to query from Simple Log Service at a time.
             "endDateTime":"",// The end time for data consumption.
             "fieldDelimiter":",",// Column delimiter.
             "logstore":""// The name of the destination Logstore.
         },
         "name":"Reader",
         "category":"reader"
     },
     { 
         "stepType":"stream",
         "parameter":{},
         "name":"Writer",
         "category":"writer"
     }
 ],
 "setting":{
     "errorLimit":{
         "record":"0"// The number of error records.
     },
     "speed":{
         "throttle":true,// If throttle is set to false, the mbps parameter does not take effect, and the data rate is not limited. If throttle is set to true, the data rate is limited.
            "concurrent":1, // The number of concurrent jobs.
            "mbps":"12"// The maximum data rate. 1 mbps = 1 MB/s.
     }
 },
 "order":{
     "hops":[
         {
             "from":"Reader",
             "to":"Writer"
         }
     ]
 }
}

Parâmetros do script do Reader

Parâmetro

Descrição

Obrigatório

Valor padrão

endPoint

Endpoint do Simple Log Service. É a URL usada para acessar um projeto e seus dados de log. Depende da região da Alibaba Cloud onde o projeto está localizado e do nome do projeto. Para ver os endpoints de cada região, consulte Endpoints.

Sim

Nenhum

accessId

AccessKey ID usado para acessar o Simple Log Service. Identifica o usuário.

Sim

Nenhum

accessKey

AccessKey secret usado para acessar o Simple Log Service. Autentica o usuário.

Sim

Nenhum

project

Nome do projeto de destino no Simple Log Service. Um projeto é uma unidade de gerenciamento de recursos no Simple Log Service usada para isolar e controlar recursos.

Sim

Nenhum

logstore

Nome do Logstore de destino. Um Logstore é a unidade para coleta, armazenamento e consulta de dados de log no Simple Log Service.

Sim

Nenhum

batchSize

Número de entradas de dados a serem consultadas do Simple Log Service por vez.

Não

128

column

Nomes das colunas em cada entrada de dados. Configure metadados do Simple Log Service como colunas de sincronização. O Simple Log Service suporta metadados como tópicos, identificadores exclusivos de grupo de máquinas, nomes de host, caminhos e horários de log.

Nota

Os nomes das colunas diferenciam maiúsculas de minúsculas. Para obter informações sobre como escrever metadados, consulte Grupos de máquinas do Simple Log Service.

Sim

Nenhum

beginDateTime

Deslocamento inicial para consumo de dados. Representa o momento em que os dados de log chegam ao LogHub (SLS). Este parâmetro especifica o início do intervalo de tempo (inclusivo). O horário deve ser uma string no formato yyyyMMddHHmmss, como 20180111013000. Use este parâmetro com os parâmetros de agendamento do DataWorks.

Por exemplo, na aba Scheduling Configuration no lado direito da página de configuração do nó, defina Parameter como beginDateTime=${yyyymmdd-1}. Em seguida, defina Log Start Time como ${beginDateTime}000000. Isso define o horário de início do log para 00:00:00 na data de negócio. Para mais informações, consulte Formatos suportados de parâmetros de agendamento.

Nota
  • Os parâmetros beginDateTime e endDateTime devem ser usados juntos.

  • Para sincronizar todos os dados, defina beginDateTime como o horário de início dos dados e endDateTime como o dia atual. Isso pode consumir muitos recursos se o volume de dados for grande. Ajuste as especificações do grupo de recursos conforme necessário.

Sim

Nenhum

endDateTime

Deslocamento final para consumo de dados. Este parâmetro especifica o fim do intervalo de tempo (exclusivo). O horário deve ser uma string no formato yyyyMMddHHmmss, como 20180111013010. Use este parâmetro com os parâmetros de agendamento do DataWorks.

Por exemplo, na aba Scheduling Configuration no lado direito da página de configuração do nó, defina Parameter como endDateTime=${yyyymmdd}. Em seguida, defina Log End Time como ${endDateTime}000000. Isso define o horário de término do log para 00:00:00 no dia seguinte à data de negócio. Para mais informações, consulte Formatos suportados de parâmetros de agendamento.

Importante
  • O horário definido para endDatetime deve ser anterior a 2038-01-19 11:14:07 +08:00. Caso contrário, a extração de dados pode falhar.

  • O endDateTime da época anterior deve ser igual ou posterior ao beginDateTime da próxima época. Caso contrário, a extração de dados de algumas regiões pode falhar.

Sim

Nenhum

query

Filtra dados no LogHub usando a sintaxe de consulta do LogHub ou instruções SPL. SPL (Structured Process Language) é a sintaxe usada pelo SLS para processar logs.

Sim

Nenhum

Nota

Se houver dados ausentes após a leitura do LogHub, acesse o console do LogHub e verifique se o campo de metadados receive_time está dentro do intervalo de tempo configurado para a tarefa.

Exemplo de script do Writer

{
    "type": "job",
    "version": "2.0",// Version number.
    "steps": [
        { 
            "stepType": "stream",
            "parameter": {},
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "LogHub",// Plug-in name.
            "parameter": {
                "datasource": "",// Data source.
                "column": [// Fields.
                    "col0",
                    "col1",
                    "col2",
                    "col3",
                    "col4",
                    "col5"
                ],
                "topic": "",// Select a topic.
                "batchSize": "1024",// The number of records in a batch submission.
                "logstore": ""// The name of the destination Simple Log Service Logstore.
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "errorLimit": {
            "record": ""// The number of error records.
        },
        "speed": {
            "throttle":true,// If throttle is set to false, the mbps parameter does not take effect, and the data rate is not limited. If throttle is set to true, the data rate is limited.
            "concurrent":3, // The number of concurrent jobs.
            "mbps":"12"// The maximum data rate. 1 mbps = 1 MB/s.
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Parâmetros do script do Writer

Nota

O writer do LogHub (SLS) recupera dados do reader por meio da estrutura do Data Integration. Em seguida, converte os tipos de dados suportados pelo Data Integration para STRING. Quando o número de registros atinge o batchSize especificado, os dados são enviados ao LogHub (SLS) em um único lote usando o SDK Java do Simple Log Service.

Parâmetro

Descrição

Obrigatório

Valor padrão

endpoint

Endpoint do Simple Log Service. É a URL usada para acessar um projeto e seus dados de log. Depende da região da Alibaba Cloud onde o projeto está localizado e do nome do projeto. Para ver os endpoints de cada região, consulte: Endpoints.

Sim

Nenhum

accessKeyId

AccessKey ID para acessar o Simple Log Service (SLS).

Sim

Nenhum

accessKeySecret

AccessKeySecret usado para acessar o Simple Log Service.

Sim

Nenhum

project

Nome do projeto de destino no Simple Log Service.

Sim

Nenhum

logstore

Nome do Logstore de destino. Um Logstore é a unidade para coleta, armazenamento e consulta de dados de log no Simple Log Service.

Sim

Nenhum

topic

Nome do topic no Simple Log Service de destino.

Não

String vazia

batchSize

Número de entradas de dados a serem sincronizadas com o LogHub (SLS) por vez. O valor padrão é 1.024. O valor máximo é 4.096.

Nota

O tamanho dos dados sincronizados com o LogHub (SLS) em um único lote não pode exceder 5 MB. Ajuste o número de entradas a serem enviadas por vez com base no tamanho de uma única entrada de dados.

Não

1.024

column

Nomes das colunas em cada entrada de dados.

Sim

Nenhum

Apêndice 2: Sintaxe SPL para filtragem

Quando o LogHub for usado como origem, filtre dados usando a sintaxe de consulta do LogHub ou instruções Structured Process Language (SPL). A tabela a seguir descreve a sintaxe.

Nota

Para mais informações sobre SPL, consulte Sintaxe SPL.

Cenário

Instrução SQL

Instrução SPL

Filtragem de dados

SELECT * WHERE Type='write'

  • Filtragem condicional.

    | where Type='write'
  • Consulta difusa.

    | where Type like '%write%'
  • Expressão regular.

    | where regexp_like(server_protocol, '\d+')
  • Mais (expressão SQL).

    | where <sql-expr> 

Processamento e filtragem de campos

Selecionar campos específicos e renomeá-los:

SELECT "__tag__:node" AS node, path
  • Selecionar campos específicos e renomeá-los.

    | project node="__tag__:node", path
  • Selecionar campos por padrão.

    | project -wildcard "__tag__:*"
  • Renomear alguns campos sem afetar outros.

    | project-rename node="__tag__:node"
  • Excluir campos por padrão.

    | project-away -wildcard "__tag__:*"

Limpeza de dados

(chamando funções SQL)

Converter tipos de dados, analisar tempo, etc.:

SELECT 
  CAST(Status AS BIGINT) AS Status, 
  date_parse(Time, '%Y-%m-%d %H:%i') AS Time

Converter tipos de dados, analisar tempo, etc.:

| extend Status=cast(Status as BIGINT), extend Time=date_parse(Time, '%Y-%m-%d %H:%i')

Extração de campos

Extração por expressão regular:

SELECT 
  CAST(Status AS BIGINT) AS Status, 
  date_parse(Time, '%Y-%m-%d %H:%i') AS Time

Extração JSON:

SELECT 
      CAST(Status AS BIGINT) AS Status, 
      date_parse(Time, '%Y-%m-%d %H:%i') AS Time
  • Extração por expressão regular: correspondência única.

    | parse-regexp protocol, '(\w+)/(\d+)' as scheme, version
  • Extração JSON: expandir tudo.

    | parse-json -path='$.0' content
  • Extração CSV.

    | parse-csv -delim='^_^' content as ip, time, host