Gerenciamento eficiente de logs com fluxos de dados do Amazon OpenSearch Service


Cargas de trabalho de dados de série temporal no Amazon OpenSearch Service podem apresentar desafios únicos para as organizações, especialmente ao lidar com conjuntos de dados em constante crescimento. Muitos clientes enfrentam índices únicos muito carregados que levam a alta latência de consulta, desempenho degradado e custos desnecessários. Neste publish, mostramos como implementar fluxos de dados com Gerenciamento de estado de índice (ISM) no Amazon OpenSearch Service. Essa abordagem gerencia automaticamente o ciclo de vida dos dados de série temporal e otimiza o desempenho e os custos. Os fluxos de dados distribuem os dados recebidos por vários índices de apoio, ajudando a reduzir gargalos de índice único, enquanto as políticas ISM automatizam a rolagem, a retenção e a classificação em níveis de armazenamento para ajudar a gerenciar os custos.

O desafio

Embora o Amazon OpenSearch Service forneça há muito tempo ferramentas como Index State Administration (ISM) para gerenciamento de dados de séries temporais, muitas organizações ainda lutam para implementar padrões ideais para seus conjuntos de dados em constante crescimento. Os desafios comuns incluem:

  • Degradação do desempenho devido ao crescimento do índice: À medida que os índices únicos crescem de forma ilimitada, a latência da consulta aumenta, você pode achar os tamanhos dos fragmentos mais difíceis de gerenciar e pode sentir pressão nos recursos do cluster.
  • Sobrecarga de gerenciamento de índice handbook: sem automação, você deve investir um esforço operacional significativo para gerenciar os ciclos de vida, a substituição e a retenção do índice.
  • Configuração complexa: A coordenação handbook de modelos de índice, aliases e políticas ISM pode ser propensa a erros.
  • Utilização ineficiente de recursos: Todos os dados que residem em armazenamento quente, independentemente dos padrões de acesso, acarretam custos desnecessariamente elevados.

Visão geral da solução

Conforme ilustrado na Figura 1, nossa solução usa fluxos de dados do Amazon OpenSearch Service combinados com Index State Administration para distribuir automaticamente dados em vários índices e gerenciar o ciclo de vida dos dados. UM fluxo de dados é uma camada de abstração que simplifica a ingestão de dados de séries temporais. Ele fornece um endpoint único e consistente para gravações enquanto gerencia automaticamente vários índices de apoio nos bastidores. Em vez de gravar diretamente em índices individuais, os aplicativos gravam no fluxo de dados, que roteia os dados para o índice de apoio apropriado.

Veja como funciona:

  • Os fluxos de dados fornecem um único índice de gravação quando os dados são ingeridos pela primeira vez, o que pode ajudar a agilizar a ingestão de dados de séries temporais.
  • Quando o índice de apoio envelhece ou cresce para atender aos critérios definidos, o ISM executa automaticamente a operação de rollover.
  • Você pode usar políticas ISM para fazer a transição automática de seus dados antigos para diferentes níveis de armazenamento com base nas regras que você outline e configura.
  • Você pode automatizar todo o processo por meio de regras definidas no modelo de índice e nas políticas ISM.

Gerenciamento eficiente de logs com fluxos de dados do Amazon OpenSearch Service

Figura 1 — Fluxo de trabalho de dados de série temporal usando fluxos de dados do Amazon OpenSearch Service

Os dados são ingeridos em um índice de acordo com a configuração do modelo de índice. Com o tempo, um fluxo de dados cria novos índices automaticamente. O Amazon OpenSearch Service gerencia o ciclo de vida, fazendo a transição dos dados do armazenamento quente para o armazenamento quente de acordo com a configuração da política ISM que você definir.

Quando usar esta solução

Essa abordagem é very best quando:

Etapas de implementação

Pré-requisitos

Antes de começar, certifique-se de ter o seguinte:

As etapas a seguir explicam a implementação de uma solução de dados de série temporal, usando um banco de dados de logs de servidor net como exemplo. Você pode executar essas etapas usando qualquer um dos seguintes:

Para esta postagem, usamos o Dev Instruments Console nos painéis OpenSearch. Para acessá-lo:

  • Faça login nos painéis do OpenSearch.
  • Navegue até Dev Instruments (geralmente encontrado no menu em Administration).
  • Use o console interativo para executar os comandos.

Seção 1: Criar fluxo de dados

  1. Crie uma política ISM

Primeiro, crie uma política ISM que defina as regras para substituição de índice e transições de nível de armazenamento. A política a seguir outline dois estados (quente e quente) e outline regras para quando os índices fazem a transição entre eles. A política aciona um rollover quando a contagem de documentos atinge 1.000 e transfer os índices para armazenamento quente após 2 minutos.

Observação: As configurações de rollover e transições são apenas para fins de demonstração.

PUT _plugins/_ism/insurance policies/ds-ism-policy
{
"coverage": {
"description": "rollover coverage when index is massive",
"default_state": "sizzling",
"ism_template": (
{
"index_patterns": ("webserver-logs-data-stream*"),
"precedence": 300
}
),
"states": (
{
"title": "sizzling",
"actions": (
{
"rollover": {
"min_doc_count": 1000
}
}
),
"transitions": (
{
"state_name": "heat",
"situations": {
"min_index_age": "2m"
}
}
)
},
{
"title": "heat",
"actions": (
{
"retry": {
"rely": 3,
"backoff": "exponential",
"delay": "1m"
},
"warm_migration": {}
}
)
}
)
}
}

  1. Crie um modelo de índice para o fluxo de dados

Um modelo de índice corresponde aos índices por um padrão regex e aplica configurações e esquemas predefinidos na criação do índice. O modelo a seguir mapeia o campo de carimbo de knowledge/hora obrigatório para o fluxo de dados e associa índices correspondentes à política ISM que criamos.

PUT _index_template/webserver-logs-data-stream-template
{
"index_patterns": ("webserver-logs-data-stream*"),
"data_stream": {
"timestamp_field": {
"title": "timestamp"
}
},
"template": {
"settings": {
"plugins.index_state_management.policy_id": "ds-ism-policy"
},
"mappings": {
"properties": {
"timestamp": {
"kind": "date"
}
}
}
}
}

  1. Criar fluxo de dados

Nesta etapa, você cria o fluxo de dados que manipula os dados da série temporal. O fluxo de dados fornece um destino de gravação único e unificado para ingestão de dados enquanto gerencia vários índices de apoio nos bastidores.

PUT _data_stream/webserver-logs-data-stream

  1. Validar mapeamento de políticas ISM

Verifique se a política ISM está corretamente associada ao fluxo de dados criado na etapa anterior. Esta etapa de validação confirma que o gerenciamento automático do ciclo de vida funciona conforme o esperado.

GET _plugins/_ism/clarify/webserver-logs-data-stream

Saída

Confirme se policy_id corresponde ao nome da política ISM que você criou anteriormente e que habilitado está definido para verdadeiro.

Saída explicativa do OpenSearch mostrando o ISM policy_id mapeado para o fluxo de dados com habilitado definido como verdadeiro

Seção 2: Ingestão de dados no fluxo de dados

Em cenários reais, os dados de log normalmente são coletados e transmitidos diretamente para fluxos de dados do Amazon OpenSearch Service. No entanto, para demonstrar cenários de rollover e migração nesta postagem, adotamos uma abordagem diferente. Primeiro carregamos dados de log de amostra em um índice padrão do OpenSearch Service e, em seguida, reindexamos e migramos esses dados para um fluxo de dados.

Para começar, execute o comandos no console do Dev Instruments para criar um índice e preenchê-lo com dados de log de amostra.

  1. Reindexar dados existentes

Esta etapa mostra como migrar dados existentes em um índice tradicional para o novo fluxo de dados. A operação de reindexação inclui um script que confirma que cada documento possui um campo de carimbo de knowledge/hora válido (timestamp). Documentos sem campo de carimbo de knowledge/hora são ignorados pela operação de reindexação para manter a integridade dos dados.

POST _reindex
{
"supply": {
"index": "webserver-logs"
},
"dest": {
"index": "webserver-logs-data-stream",
"op_type": "create"
},
"script": {
"supply": """
strive {
// Validate timestamp discipline exists and has a price
if (ctx._source.timestamp == null || ctx._source.timestamp.empty) {
ctx.op = 'noop';
}
} catch (Exception e) {
// Skip this doc on any error
ctx.op = 'noop';
}
"""
},
"conflicts": "proceed"
}

  1. Monitorar a substituição do índice

Conforme mostrado na Figura 2, após a reindexação, monitore a criação de índices de apoio. A política ISM avalia os índices a cada 5 minutos por padrão. A rolagem ocorre com base nas condições definidas (1.000 documentos ou 2 minutos de idade). Verifique isso usando o seguinte comando.

GET _cat/indices/.ds-*?v&h=index,standing,well being,pri,rep,docs.rely,retailer.measurement,creation.date&s=index

A saída deve ser semelhante a esta:

Saída _cat/indices listando os índices de apoio .ds com seu status, integridade e contagem de documentos

Você também pode validar isso no OpenSearch Dashboards navegando até Index Administration, Information streams, webserver-logs-data-stream.

Página OpenSearch Dashboards Index Management mostrando o webserver-logs-data-stream e seus índices de apoio

*Figura 2 — Visualização combinada da saída CLI _cat/indices e detalhes do fluxo de dados do OpenSearch Dashboards, mostrando uma substituição de índice bem-sucedida em vários índices de apoio*

  1. Validar transição quente

Verifique se os índices estão fazendo a transição correta do armazenamento quente para o armazenamento quente com base nas condições da política ISM. Você pode monitorar isso por meio de painéis OpenSearch ou consultas de API no console Dev Instruments.

GET _plugins/_ism/clarify/webserver-logs-data-stream

Saída explicativa do OpenSearch mostrando índices de apoio em transição do estado quente para o estado quente

  1. Verifique os dados ingeridos

Execute uma pesquisa no fluxo de dados para confirmar se seus documentos foram indexados com sucesso:

GET webserver-logs-data-stream/_search
{
"measurement": 1
}

Saída

Você deverá ver seus documentos assimilados retornados no hits.hits matriz, com o carimbo de knowledge/hora campo e outros campos definidos no modelo de índice. Um diferente de zero hits.whole.valor confirma que os dados estão fluindo corretamente através do fluxo de dados.

Resultados da pesquisa mostrando um documento assimilado com o campo @timestamp e hits.total.value diferente de zero

  1. Limpar

Se necessário, estes comandos removem o fluxo de dados e seu modelo.

DELETE _data_stream/webserver-logs-data-stream
DELETE _index_template/ webserver-logs-data-stream-template

Exclua os dados de amostra.

Conclusão

Os fluxos de dados do OpenSearch com ISM oferecem recursos para gerenciar dados de séries temporais em escala. As organizações que implementam essa abordagem podem obter um melhor desempenho de consulta por meio de carga distribuída e índices de apoio menores e baseados em tempo que suportam consultas eficientes de intervalo de tempo. O gerenciamento automatizado de índices reduz a sobrecarga operacional. A divisão em níveis de armazenamento transfer automaticamente os dados antigos para o armazenamento UltraWarm, o que reduz significativamente os custos sem sacrificar o acesso aos dados históricos. Combinada com melhor escalabilidade para conjuntos de dados crescentes, esta solução simplifica o gerenciamento de índices e, ao mesmo tempo, oferece melhor desempenho e uma infraestrutura mais econômica e de fácil manutenção.


Sobre os autores

Praveen Krishnamoorthy Ravikumar

Praveen Krishnamoorthy Ravikumar

Praveen é arquiteto de soluções especialista em análise na AWS. Ele ajuda os clientes a projetar e implementar plataformas modernas de dados e análises que aproveitam a escalabilidade, a flexibilidade e a inovação da nuvem. Ele é apaixonado por resolver desafios complexos de dados e permitir que as organizações obtenham insights acionáveis ​​a partir de seus dados.

JP Tédio

JP Tédio

JP é arquiteto de soluções sênior na Amazon Net Companies, com sede em San Diego, Califórnia. Ele trabalha com clientes ISV no segmento de segurança, ajudando-os a arquitetar e otimizar suas cargas de trabalho na AWS. A JP é especializada em IA/ML, contêineres e infraestrutura em nuvem, com foco em permitir que os clientes criem soluções escalonáveis ​​e econômicas. Ele está na AWS há mais de quatro anos.

Aswin Vasudevan

Aswin Vasudevan

Aswin é arquiteto de soluções sênior para segurança, ISV na AWS. Ele é um grande fã de IA generativa e arquitetura sem servidor e gosta de colaborar e trabalhar com clientes para criar soluções que gerem valor comercial.

Kevin Fallis

Kevin é líder, arquiteto e desenvolvedor experiente, com experiência em vários setores e disciplinas do setor, como agricultura, tecnologia de publicidade, serviços financeiros, redes, segurança, telecomunicações e, claro, tecnologias de pesquisa. Sua paixão ajuda outras pessoas a aproveitar a combinação correta de serviços da AWS e soluções de código aberto para alcançar o sucesso em suas metas de negócios. Suas atividades pós-trabalho incluem família, projetos DIY, carpintaria, cavalos, tocar bateria e tudo relacionado à música.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *