Se os modelos de funções integrados do Log Service não atenderem às suas necessidades, desenvolva uma função personalizada para o Function Compute consumir dados de log.
Evento da função
Um evento de função é uma string serializada em JSON que contém os parâmetros de execução. Para obter mais informações, consulte Usar o Function Compute para consumir dados de log.
-
Parâmetros
Parâmetro
Descrição
jobName
Nome do trabalho de extração, transformação e carga (ETL) no Log Service. Cada trabalho ETL corresponde a um gatilho do Function Compute.
taskId
Identificador exclusivo de uma invocação de função no trabalho ETL.
cursorTime
Timestamp UNIX da última entrada de log recebida durante a invocação da função.
source
Intervalo de dados da invocação atual da função. O Log Service gera esse valor regularmente para cada invocação.
-
endpoint: endpoint da região do projeto. Endpoints.
-
projectName: nome do projeto.
-
logstoreName: nome do Logstore.
-
shardId: ID de um shard no Logstore.
-
beginCursor: posição inicial para consumo de dados no shard.
-
endCursor: posição final para consumo de dados no shard.
NotaO intervalo de consumo é fechado à esquerda e aberto à direita, no formato [beginCursor,endCursor).
parameter
Valor de Function Configuration especificado na criação do gatilho. A função ETL personalizada analisa esse objeto JSON em tempo de execução. Consulte Gatilhos do Simple Log Service.
-
-
Exemplo
{ "source": { "endpoint": "http://cn-shanghai-intranet.log.aliyuncs.com", "projectName": "fc-****************", "logstoreName": "demo", "shardId": 0, "beginCursor": "MTUwNTM5MDI3NTY1ODcwNzU2Ng==", "endCursor": "MTUwNTM5MDI3NTY1ODcwNzU2OA==" }, "parameter": { ... }, "jobName": "fedad35f51a2a97b466da57fd71f315f539d2234", "taskId": "9bc06c96-e364-4f41-85eb-b6e579214ae4", "cursorTime": 1511429883 }Para depurar uma função personalizada, chame a operação GetCursor para obter cursores e construa um evento no formato anterior para testar a função.
Desenvolvimento da função
O Log Service fornece SDKs para Java, Python, Node.js e outras linguagens para desenvolvimento de funções personalizadas. Referência de SDK.
O exemplo a seguir usa JRE 8 para demonstrar o desenvolvimento de funções ETL. Guia de programação Java para Function Compute.
-
Modelo de função Java
O Log Service oferece um modelo de função personalizada baseado em JRE 8 como ponto de partida para sua lógica personalizada.
Recursos integrados:
Analisa os campos
source,taskIdejobNamedos eventos.Usa o Log Service SDK for Java para recuperar dados com base no parâmetro
sourcee chamaprocessDatapara processá-los.
Personalizações necessárias:
Analise o campo
parameterdos eventos usando o arquivoUserDefinedFunctionParameter.java.Defina a lógica de negócio personalizada no método
processDatado arquivoUserDefinedFunction.java.Renomeie
UserDefinedFunctionpara um nome descritivo que identifique sua função ETL.
-
Método processData
O método
processDatagerencia o consumo, a transformação e a entrega de dados. Por exemplo, LogstoreReplication.java lê dados de um Logstore e os grava em outro.NotaprocessDataretornatrueem caso de sucesso oufalseem caso de falha. Se retornarfalse, a função ETL continuará em execução, o Log Service considerará a tarefa bem-sucedida e ignorará os dados de exceção.Se um erro fatal ou exceção de lógica acionar
throw Exception, a função ETL será interrompida. O Log Service marcará a função como falha e a reinvocará com base na regra de nova tentativa do trabalho ETL.Para shards de alto throughput, aloque memória suficiente para evitar erros de falta de memória (OOM).
Em funções demoradas ou shards de alto throughput, defina um intervalo de gatilho curto e um período de timeout longo.
Conceda as permissões necessárias ao Function Compute. Por exemplo, conceda permissão de gravação no OSS se a função gravar dados nesse serviço.
Logs de ETL
-
Logs de agendamento de ETL
Os logs de agendamento de ETL registram a hora de início, a hora de término, o status de sucesso e as informações de retorno de cada tarefa ETL. Erros geram entradas de log e disparam alertas por e-mail ou SMS para o administrador do sistema. Ao criar um gatilho, especifique um Logstore para os logs de gatilho e ative índices. Consulte Criar índices.
Use a função
outputStreamno JRE 8 para recuperar resultados de execução. O modelo de função gera uma string serializada em JSON registrada no log de agendamento para consulta e análise. -
Logs de processamento de ETL
Os logs de processamento de ETL registram informações essenciais e erros de cada etapa, incluindo hora de início, hora de término, status de inicialização e detalhes de erros. Use esses logs para monitorar e solucionar problemas nas funções ETL.
Registre logs de processamento com o método
context.getLogger(). Os logs são armazenados em um Logstore dentro de um projeto especificado. Recomendamos ativar a indexação para esse Logstore.