O Simple Log Service (SLS) pode enviar dados de log de um LogStore para um bucket do Object Storage Service (OSS) para armazenamento de longo prazo e análise offline. Este tópico descreve como criar uma tarefa de envio de dados para o OSS (nova versão).
Pré-requisitos
Um projeto e um LogStore foram criados.
Os dados de log foram coletados.
Um bucket do OSS foi criado na região onde o projeto do SLS está localizado. Para mais informações, consulte Criar buckets.
A nova versão do envio de dados para o OSS está disponível apenas em regiões específicas. Certifique-se de que seu projeto esteja localizado em uma região suportada.
Regiões suportadas
O SLS envia dados para o OSS dentro da mesma região. O bucket do OSS deve estar localizado na mesma região do projeto do SLS.
A nova versão do envio de dados para o OSS é suportada apenas nas seguintes regiões: China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Ulanqab), China (Chengdu), China (Shenzhen), China (Heyuan), China (Guangzhou), China (Hong Kong), Singapura, Malásia (Kuala Lumpur), Indonésia (Jacarta), Filipinas (Manila), Tailândia (Bangkok), Japão (Tóquio), EUA (Vale do Silício), EUA (Virgínia), Arábia Saudita (Riade) e operadora de rede virtual saudita.
Criar uma tarefa de envio de dados
Faça logon no console do Simple Log Service.
Na guia Log Storage > Logstores, clique em > à esquerda do LogStore desejado e escolha Data Processing > Export > Object Storage Service.
Passe o ponteiro do mouse sobre Object Storage Service e clique em +.
-
No painel Data Shipping to OSS, configure os seguintes parâmetros e clique em OK.
Defina Shipping Version como New Version. A tabela a seguir descreve os principais parâmetros.
Depois de criar uma tarefa de envio de dados para o OSS, cada shard determina sua frequência de envio com base no Batch Size e no Batch Interval. O envio é acionado quando qualquer uma das condições é atendida.
Parâmetro
Descrição
Job Name
O nome exclusivo da tarefa de envio.
Display Name
O nome de exibição da tarefa de envio.
Job Description
A descrição da tarefa de envio para o OSS.
OSS Bucket
ImportanteO bucket do OSS já deve existir, deve ter o WORM (Write Once Read Many) desativado e deve estar localizado na mesma região do projeto do SLS.
Você pode enviar dados para buckets das classes de armazenamento Standard, Infrequent Access, Archive, Cold Archive e Deep Cold Archive. Por padrão, os objetos enviados usam a mesma classe de armazenamento do bucket.
As classes de armazenamento não standard possuem requisitos de duração mínima de armazenamento e tamanho mínimo faturável. Escolha a classe de armazenamento do bucket de destino com base nas suas necessidades.
OSS Write RAM Role
-
Concede à tarefa de envio de dados para o OSS as permissões para gravar dados no bucket do OSS. Se o LogStore e o bucket do OSS pertencem à mesma conta da Alibaba Cloud, selecione Default Role. Se pertencem a contas diferentes, selecione Custom Role. - Default Role: Autoriza a tarefa de envio de dados para o OSS a gravar dados no bucket do OSS como a função do sistema
AliyunLogDefaultRoleda Alibaba Cloud. Insira o ARN (Alibaba Cloud Resource Name) doAliyunLogDefaultRole. Para obter informações sobre como obter o ARN, consulte Acessar dados usando uma função padrão. - Custom Role: Autoriza a tarefa de envio de dados para o OSS a gravar dados no bucket do OSS como uma função personalizada. Conceda à função personalizada as permissões para gravar dados no bucket do OSS e insira o ARN da função personalizada em OSS Write RAM Role. Obtenha o ARN com base nos seguintes cenários: - Se o LogStore e o bucket do OSS pertencem à mesma conta da Alibaba Cloud, consulte Etapa 2: Conceder permissões de gravação para um bucket do OSS. - Se o LogStore e o bucket do OSS pertencem a contas diferentes da Alibaba Cloud, consulte Conceder permissões de gravação para um bucket do OSS entre contas.
LogStore Read RAM Role
Concede à tarefa de envio de dados para o OSS as permissões para ler dados do LogStore. Se o LogStore e o bucket do OSS pertencem à mesma conta da Alibaba Cloud, selecione Default Role. Se pertencem a contas diferentes, selecione Custom Role. - Default Role: Autoriza a tarefa de envio de dados para o OSS a ler dados do LogStore como a função do sistema
AliyunLogDefaultRoleda Alibaba Cloud. Insira o ARN doAliyunLogDefaultRole. Para obter informações sobre como obter o ARN, consulte Acessar dados usando uma função padrão. - Custom Role: Autoriza a tarefa de envio de dados para o OSS a ler dados do LogStore como uma função personalizada. Conceda à função personalizada as permissões para ler dados do LogStore e insira o ARN da função personalizada em LogStore Read RAM Role. Se o LogStore e o bucket do OSS pertencem à mesma conta da Alibaba Cloud, consulte Etapa 1: Conceder permissões de leitura para um Logstore. Se pertencem a contas diferentes, consulte Conceder permissões de leitura para um Logstore entre contas.Storage Format
Depois que os dados são enviados para o OSS, eles podem ser armazenados em diferentes formatos de arquivo.
Compress
O método de compressão usado para armazenar dados no OSS. - No Compress (none): não comprime os dados. - Compress (snappy): comprime os dados usando o algoritmo snappy para reduzir o espaço de armazenamento do bucket do OSS. - Compress (zstd): comprime os dados usando o algoritmo zstd para reduzir o espaço de armazenamento do bucket do OSS. - Compress (gzip): comprime os dados usando o algoritmo gzip para reduzir o espaço de armazenamento do bucket do OSS.
Ship Tags
O campo de tag é um campo reservado do SLS.
Batch Size
A quantidade de dados de log não comprimidos que deve acumular em um shard antes do início do envio. Valores válidos: 5 a 256. Unidade: MB. Este valor controla o tamanho aproximado de cada objeto do OSS. O Batch Size mede os dados acumulados após o início da leitura pelo SLS, não os dados já gravados no SLS. Os dados são lidos e enviados somente após a condição do Batch Interval também ser atendida.
Batch Interval
O tempo máximo que um shard aguarda antes de acionar uma operação de envio. O envio começa quando o tempo especificado tiver decorrido desde a chegada da primeira entrada de log no lote atual. Valor padrão: 300. Valores válidos: 300 a 900. Unidade: segundos.
Shipping Latency
O atraso antes do envio dos dados. Por exemplo, se você definir este parâmetro como 3600, os dados serão enviados uma hora depois. Os dados gerados às 10:00:00 de 5 de junho de 2023 não serão gravados no bucket do OSS especificado antes das 11:00:00 de 5 de junho de 2023.
Start Time Range
O intervalo de tempo da tarefa de envio de dados para o OSS. O intervalo de tempo é baseado no momento em que os logs são recebidos. Valores válidos: - All: envia dados desde o momento em que o LogStore recebeu o primeiro log até que a tarefa seja interrompida manualmente. - From Specific Time: envia dados desde o horário de início especificado até que a tarefa seja interrompida manualmente. - Specific Time Range: envia dados do horário de início especificado até o horário de término especificado. A tarefa é interrompida automaticamente no horário de término especificado. O intervalo de tempo é baseado no campo
__tag__:__receive_time__.Time Zone
O fuso horário usado para formatar valores de tempo. Se você configurar tanto o Time Zone quanto o Partition Format, os subdiretórios no bucket do OSS serão gerados com base nas suas configurações.
Depois que a tarefa for criada, verifique o status da tarefa e confirme que os dados aparecem no bucket do OSS de destino para garantir que a tarefa de envio esteja funcionando conforme o esperado.
Visualizar dados do OSS
Depois que os dados são enviados para o OSS, você pode acessá-los no console do OSS ou por meio da API do OSS, um SDK ou outros métodos. Para mais informações, consulte Visão geral do gerenciamento de objetos.
Formatos de partição
Cada operação de envio é mapeada para uma URL de objeto do OSS no seguinte formato. A tabela a seguir descreve os formatos de partição, com base em uma tarefa de envio criada às 19:50:43 de 20 de janeiro de 2022.
oss://OSS-BUCKET/OSS-PREFIX/PARTITION-FORMAT_RANDOM-ID
OSS-BUCKET é o nome do bucket do OSS. OSS-PREFIX é o prefixo do diretório. PARTITION-FORMAT é o formato da partição, que é calculado a partir do horário de envio usando a API strptime. RANDOM-ID é o identificador exclusivo de uma operação de envio.
|
Bucket do OSS |
Prefixo do OSS |
Formato da partição |
Sufixo do objeto |
URL do objeto do OSS |
|
test-bucket |
test-table |
%Y/%m/%d/%H/%M |
.suffix |
oss://test-bucket/test-table/2022/01/20/19/50_1484913043351525351_2850008.suffix |
|
test-bucket |
|
year=%Y/mon=%m/day=%d/log_%H%M |
.suffix |
oss://test-bucket/log_ship_oss_example/year=2022/mon=01/day=20/log_1950_1484913043351525351_2850008.suffix |
|
test-bucket |
|
ds=%Y%m%d/%H |
.suffix |
oss://test-bucket/log_ship_oss_example/ds=20220120/19_1484913043351525351_2850008.suffix |
|
test-bucket |
|
%Y%m%d/ |
.suffix |
oss://test-bucket/log_ship_oss_example/20220120/_1484913043351525351_2850008.suffix > Observação: Este formato pode causar falhas de análise em plataformas como o Hive. Recomendamos que você não use este formato. |
|
test-bucket |
|
%Y%m%d%H |
.suffix |
oss://test-bucket/log_ship_oss_example/2022012019_1484913043351525351_2850008.suffix |
Os dados são enviados para o OSS em lotes. Cada operação de envio grava um objeto que contém um lote de dados. O caminho do objeto é determinado pelo receive_time mais antigo (o momento em que os dados chegam ao SLS) no lote. Fique atento aos seguintes cenários:
Ao enviar dados em tempo real, por exemplo, uma vez a cada cinco minutos, uma operação de envio realizada às 00:00:00 de 22 de janeiro de 2022 envia os dados que foram gravados em um shard do SLS após as 23:55 de 21 de janeiro de 2022. Para analisar todos os dados de 22 de janeiro de 2022, verifique todos os objetos no subdiretório 2022/01/22 do bucket do OSS e verifique se os últimos objetos no subdiretório 2022/01/21 contêm dados de 22 de janeiro de 2022.
-
Ao enviar dados históricos, se a quantidade de dados no LogStore for pequena, uma única extração pode retornar dados de vários dias. Como resultado, os objetos no subdiretório 2022/01/22 podem conter todos os dados de 23 de janeiro de 2022, e nenhum objeto existe no subdiretório 2022/01/23.
Ao usar uma plataforma de big data como o Hive ou o
MaxCompute, ou o Alibaba Cloud Data Lake Analytics (DLA), para analisar dados do OSS, você pode definir o PARTITION-FORMAT no nome do objeto no formato chave=valor se desejar usar as informações de partição. Exemplo: oss://test-bucket/log_ship_oss_example/year=2022/mon=01/day=20/log_195043_1484913043351525351_2850008.parquet. Neste exemplo, três colunas de partição são configuradas: year, mon e day.