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:
-
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.
-
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
AliyunLogFullAccesseAliyunLogReadOnlyAccess. Para mais informações, consulte Criar um usuário RAM e conceder permissões.NotaConceder as políticas de sistema
AliyunLogFullAccesseAliyunLogReadOnlyAccesspermite 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 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_name1eproject_name2no 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.
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
-
Para mais informações, consulte Usar a interface sem código e Usar o editor de código.
NotaAo configurar uma tarefa de sincronização na interface sem código, garanta que o formato do parâmetro corresponda ao formato descrito em Apêndice 1: Exemplos de script e descrições de parâmetros.
Para informações sobre todos os parâmetros e um exemplo de script para o editor de código, consulte Apêndice 1: Exemplos de script e descrições de parâmetros.
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
Dados existem em um campo de origem do LogHub, mas estão vazios após a sincronização.
Os campos lidos do LogHub durante o mapeamento de campos não correspondem ao esperado.
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 Nota
|
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
|
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 |
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
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.
Para mais informações sobre SPL, consulte Sintaxe SPL.
Cenário | Instrução SQL | Instrução SPL |
Filtragem de dados | |
|
Processamento e filtragem de campos | Selecionar campos específicos e renomeá-los: |
|
Limpeza de dados (chamando funções SQL) | Converter tipos de dados, analisar tempo, etc.: | Converter tipos de dados, analisar tempo, etc.: |
Extração de campos | Extração por expressão regular: Extração JSON: |
|