Estou procurando há dias para encontrar uma boa explicação sobre como os índices são usados pelo Graylog/Elasticsearch e quando criar um novo. Há muitas informações sobre índices de fragmentação, mas não muito sobre os próprios índices, além de serem um conjunto de configurações de quantos dados reter e como gerenciá-los, mas não por quê. (Ou é o que me parece)
Fundo:
Estamos usando Graylog 4.0 com Elasticsearch 7.10 e MongoDB 3.
Tentamos centralizar os logs de 6 locais de armazenamento (todos a algumas centenas de quilômetros de distância um do outro). Cada um tem 6 a 20 portas RFID, cada uma com um log. Cada porta tem seu middleware de conector ligado a um middleware de controlador central e todos eles possuem logs. Em seguida, há o controlador do armazém automatizado 'AWMS', servidor WMS, servidor ERP e seus frontends. Também consideramos coletar pelo menos alguns dos eventos do Windows Eventlog dos servidores em que esses serviços são executados.
Normalmente, precisamos analisar um problema em um subsistema, portanto, precisamos pesquisar um desses logs. Ocasionalmente, precisamos olhar para todo o fluxo do portão RFID para AWMS, WMS e ERP.
No momento, considero ter um fluxo para cada um desses logs e usar os fluxos relevantes na pesquisa. (ou essa abordagem já é falha, se sim, por quê?)
Perguntas:
- Um índice definido no Graylog é apenas as configurações sobre a estratégia de retenção?
- Que impacto tem se eu tiver muitos ou poucos índices?
- no Elasticsearch Index Model , parece que os tamanhos dos fragmentos e sua distribuição têm o principal impacto no desempenho da pesquisa, e os índices são apenas uma estrutura para gerenciar os fragmentos
- Quantos conjuntos de índices devo ter para meu caso de uso?
- Múltiplos por stream?
- Um por stream?
- Um por local?
- Um por subsistema?
- Um por tempo de retenção ou intervalo de tamanho?
- Um global?
- Isso importa do ponto de vista do desempenho?
- Onde posso encontrar mais informações sobre essas coisas, que expliquem o 'Porquê', não apenas o 'Como' para gerenciar índices? (Eu estive olhando para o modelo de índice Graylog , modelo de índice Elasticsearch , modelos de índice Elasticsearch )
Um índice definido no Graylog é apenas as configurações sobre a estratégia de retenção?
Não esqueça que um Index Set tem um impacto direto nos índices na infraestrutura subjacente do ElasticSearch, você deve levar isso em consideração porque o ElasticSearch tem tudo a ver com índices e seus fragmentos (distribuição de dados, réplica,...).
Tipo de dados e campos também são uma coisa: você não pode (não deve) ter o mesmo campo com tipo de dados misto no mesmo conjunto de índices (por exemplo, se o campo
device
existeInteger
porque System1 usa um número de dispositivo, mas System2 requer o tipoText
para este campo porque o identificador do dispositivo é uma string, então você deve armazenar tudo como string ou criar um conjunto de índices separado para manter ambos os tipos de dados e seus respectivos benefícios sob o mesmo nome de campo).Essa é geralmente a razão pela qual você provavelmente não deseja armazenar os logs do Windows no mesmo conjunto de índices que qualquer outra coisa (aplicar isso ao seu caso de uso, isso pode ser verdade para suas fontes de dados ERP/WMS?...) porque eles podem levam facilmente a centenas de campos diferentes (e é recomendado evitar exceder o limite de 1000 campos por índice ).
Então, não, não se trata apenas da estratégia de retenção. Como ponto de partida para sua reflexão eu recomendo que você considere agrupar vários tipos de fonte de dados em seu Index Set (Um Index Set para Windows Log, outro para servidores Linux, outro para firewalls por exemplo, pois faz sentido a partir de um datatype ponto de vista).
Que impacto tem se eu tiver muitos ou poucos índices?
Depende da sua infraestrutura do ElasticSearch, e "muito" é indefinido... dê uma olhada em Sizing ElasticSearch e Size your shards . Ter em mente que tipo de consultas você realizará e em qual intervalo de tempo pode ajudar a encontrar o equilíbrio certo entre o tamanho do índice e o número de índices que o ElasticSearch terá que consultar para atender à sua solicitação.
Quantos conjuntos de índices devo ter para meu caso de uso?
O fluxo está configurado com um conjunto de índices, você não pode definir vários conjuntos de índices para um fluxo. Quanto aos outros pontos, já respondi acima.
No entanto, observe que você pode configurar vários Streams no mesmo Index Set, isso é muito útil se você quiser usar esses fluxos com os mesmos dados subjacentes e apenas quiser restringir o acesso a um subconjunto de logs para determinados usuários: você pode rotear mensagens com base nas condições que você deseja entre vários fluxos e se todos esses fluxos compartilharem o mesmo Conjunto de Índices, você não duplicará as mensagens.