Engenharia

Monitoramento de infraestrutura e microsserviços com o Elastic Observability

As tendências no espaço de infraestrutura e software mudaram a maneira como desenvolvemos e executamos o software. Como resultado, começamos a tratar nossa infraestrutura como código, o que nos ajudou a reduzir custos e colocar nossos produtos no mercado mais rapidamente. Essas novas arquiteturas também nos dão a capacidade de testar nosso software com mais rapidez em implantações semelhantes à de produção e, geralmente, oferecem implantações mais estáveis e reproduzíveis. No entanto, o outro lado dessas melhorias é o aumento da complexidade dos nossos ambientes, especialmente quando se trata de monitorar nossas novas infraestruturas de forma eficaz

Neste post, discutiremos o que é “imprescindível” para monitorar toda a sua stack de aplicações, incluindo aplicações customizadas, serviços e a infraestrutura em que tudo isso é executado. Também mostraremos como a solução Elastic Observability e o Elastic Stack podem ajudar a atender a essas necessidades e construir a plataforma de monitoramento definitiva para aumentar a observabilidade e reduzir o tempo de inatividade. Quando estiver pronto(a), você poderá iniciar uma avaliação gratuita no Elastic Cloud ou baixar a versão mais recente do nosso website para começar.

Arquiteturas em evolução: a jornada para containers e microsserviços

Então, como nós chegamos aqui? O espaço do software de infraestrutura está evoluindo em um ritmo muito rápido. Do ponto de vista do hardware, passamos das máquinas físicas ao uso de várias ferramentas de virtualização (ou hipervisores). Depois, vimos o surgimento das infraestruturas de nuvem pública que nos deram uma maneira de terceirizar a parte de manutenção e provisionamento de servidores e redes, o que, por sua vez, nos ajudou a reduzir o tempo para a obtenção de valor. Ainda me lembro da época em que tínhamos de esperar semanas até que um novo servidor fosse provisionado para que pudéssemos continuar com nossos projetos. Talvez isso ainda aconteça para alguns hoje em dia, mas já é um problema resolvido. Hoje são as plataformas de containers — orquestradores de containers como Docker e Kubernetes — que estão ganhando a preferência de muitas organizações. Obviamente, muitas dessas mesmas organizações também usam a virtualização em hosts bare metal.

Infraestruturas de software em evolução

No lado do software dessa linha do tempo, passamos da construção de monólitos ao desmembramento deles em várias camadas (apresentação, aplicação, dados etc.). Então, as arquiteturas orientadas por serviços (SOAs) se tornaram o padrão de design dominante e, por sua vez, evoluíram, com diferentes vertentes: serviços da Web, arquiteturas orientadas por eventos e, é claro, sua encarnação mais recente, os microsserviços. Hoje, se você quiser criar uma nova aplicação, ela provavelmente será baseada em microsserviços executados em pods no Kubernetes, em algum lugar da nuvem. Provavelmente, sua organização hoje tem uma ou mais iniciativas para quebrar monólitos antigos em microsserviços e usar um orquestrador para implantá-los.

Como consequência, nossas stacks agora têm mais componentes para monitorar, e nossas ferramentas de monitoramento precisam manter um controle das aplicações que estão em constante movimento, com containers aparecendo e desaparecendo em uma velocidade impressionante. O monitoramento dos ambientes modernos criou a necessidade de uma abordagem totalmente nova.

Monitoramento da infraestrutura: requisitos para complexidades modernas 

Quando falamos sobre os ambientes de implantação de hoje, temos alguns aspectos a considerar. Temos a infraestrutura na qual as coisas são executadas, sejam datacenters locais, infraestrutura de nuvem pública ou uma combinação híbrida. Qualquer ambiente típico hoje tem uma camada de orquestração (por exemplo, Kubernetes) que automatiza a implantação e a ampliação das aplicações. Temos as coisas nas quais as nossas aplicações são executadas, como containers, VMs ou bare metal. Quando desenvolvemos aplicações, introduzimos dependências de sistemas de terceiros, como serviços externos, bancos de dados ou componentes escritos por outras equipes em nossa organização. E, é claro, as próprias aplicações — tanto os componentes internos quanto a experiência do usuário final.

Ambientes de implantação abstratos

Para garantir que nossas aplicações estejam sendo executadas como deveriam, precisamos monitorar todos esses diferentes componentes, e todos eles produzem muitos dados de monitoramento: não apenas logs e métricas, mas também dados de APM e tempo de funcionamento

Para obtermos visibilidade total dessas implantações, uma solução de monitoramento deve:

  • Dar suporte a toda a infraestrutura e à stack, desde os hosts até as aplicações.
  • Ingerir facilmente dados de diferentes fontes, como VMs, containers, orquestradores, plataformas de nuvem, bancos de dados e muito mais (isso geralmente é caracterizado pelas integrações com outros sistemas que uma solução de monitoramento fornece).
  • Lidar com as implantações cada vez mais dinâmicas à medida que os ambientes de infraestrutura fazem a transição para containers e, ao mesmo tempo, lidar com partes da nossa infraestrutura tradicional mais antiga.
  • Fornecer maneiras poderosas de interagir com esses dados operacionais e criar visualizações que sejam otimizadas para todos na organização, desde equipes de DevOps até os donos da empresa e os responsáveis pelos produtos.
  • Avisar-nos quando algo estiver errado. O alerta é um dos componentes básicos de qualquer solução de monitoramento e deve abranger totalmente qualquer infraestrutura.
  • Fornecer armazenamento confiável de longo prazo para logs e métricas para análise histórica ou requisitos regulatórios. Essa solução de armazenamento também deve fornecer a capacidade de gerenciar o ciclo de vida dos dados com granularidade e taxas de retenção totalmente controláveis.
  • Ser adequada para observabilidade total da infraestrutura e das aplicações. A maioria das ferramentas de monitoramento geralmente se especializa em um tipo de dados: muitos bancos de dados de série temporal (TSDBs) populares funcionam apenas com métricas. Mas qualquer ambiente de implantação típico produz todos os tipos de dados — logs, métricas, APM e disponibilidade. Esses fluxos de dados fornecem perspectivas diferentes sobre o desempenho dos nossos ambientes. Então, por que tratar esses dados separadamente e manter ferramentas diferentes com curvas de aprendizado, modelos de licença ou níveis de suporte diferentes?
  • Ter todos os itens acima em uma única solução de monitoramento.
Essa lista pode ser resumida em dois requisitos principais: uma solução de monitoramento de infraestrutura deve ser capaz de obter dados operacionais de todas as partes da infraestrutura e deve torná-los utilizáveis.

O Elastic Stack (ELK Stack) para monitoramento de infraestrutura

A evolução contínua e o aumento do poder de monitoramento necessários para observar com eficácia as infraestruturas da atualidade exigem uma solução que seja rápida, ampliável e flexível. Vamos dar uma olhada em como a Elastic atende a esses requisitos.

Ingestão de logs e métricas

A Elastic fornece integrações para ingestão de dados de logs e métricas de centenas de plataformas e serviços. Além de proporcionarem uma maneira fácil de adicionar novas fontes de dados, essas integrações também vêm com ativos prontos para uso, como dashboards, múltiplas visualizações e pipelines pré-criados que podem, por exemplo, extrair campos específicos dos logs. A Elastic fornece o Metricbeat e o Filebeat para o envio de dados de logs e métricas ao Elastic Stack. Todas as integrações compatíveis com o Metricbeat e o Filebeat têm instruções fáceis de seguir diretamente no Kibana.

Etapas de configuração de integração com o CoreDNS

Conforme for se expandindo para outras áreas de observabilidade (e talvez de segurança), você se deparará com ainda mais shippers e agentes. Configurar e gerenciar uma frota de agentes pode se tornar complicado, especialmente em grandes ambientes empresariais: você precisará gerenciar implantações de agentes, atualizar arquivos de configuração e gerenciar os dados (o que muitas equipes já fazem hoje). Nós queríamos melhorar isso. Na versão 7.8, introduzimos dois novos componentes: o Elastic Agent e o Fleet, que proporcionam uma grande melhoria no envio de dados operacionais para a Elastic.

  • O Elastic Agent é um único agente para coleta de logs, métricas e outros tipos de dados. Ele é muito mais fácil de instalar e gerenciar do que manter integrações distintas manualmente.
  • O Fleet é um novo app do Kibana que ajuda com duas coisas: habilitar rapidamente integrações para plataformas e serviços de sua escolha e gerenciar centralmente uma frota inteira de Elastic Agents.

Fleet

E quanto às suas ferramentas de monitoramento existentes? Se você está usando serviços de monitoramento de nuvem nativos como Stackdriver e Azure Monitor ou ferramentas como Prometheus ou statsd e decide consolidar suas métricas com logs e outros dados, a Elastic também fornece integrações dedicadas para essas ferramentas de monitoramento geral, permitindo que você fique com sua instrumentação existente (por exemplo, exportadores do Prometheus) e ainda armazene suas métricas junto com seus outros dados operacionais para melhor observabilidade.

Mencionei anteriormente que a mudança para implantações em containers exige que repensemos como monitoramos nossos sistemas em geral. Isso é especialmente verdadeiro para ferramentas de monitoramento tradicionais, projetadas para lidar com hosts físicos ou máquinas virtuais e infraestruturas estáticas. No mundo dos containers, essa abordagem não é mais suficiente porque tudo está em movimento constante, os containers entram e saem, os serviços são implantados com mais frequência e seus endereços IP são instáveis e não confiáveis — coisas para as quais muitas ferramentas de monitoramento não foram feitas. Quando executamos nossas aplicações em containers, elas efetivamente se tornam alvos móveis para um sistema de monitoramento, criando assim a necessidade de detectar automaticamente alterações nesses ambientes, como serviços recém-implantados, instâncias ampliadas ou atualizações. A boa notícia é que tanto o Metricbeat quanto o Filebeat têm recursos de descoberta automática que podem controlar suas implantações, detectar alterações e adaptar a configuração para monitorar os serviços conforme eles começam a ser executados. 

Todos os dados coletados com as integrações da Elastic estão em conformidade com o Elastic Common Schema (ECS), que é usado como referência em todas as soluções Elastic Observability e Elastic Security. Como o ECS difere de outros modelos de dados existentes? Por design, o ECS é otimizado para uso no Elasticsearch. É open source e foi criado com contribuições da nossa comunidade global. E considerou uma ampla gama de casos de uso desde o início, como logs e métricas de infraestrutura, APM, segurança e muitos outros. Pense no ECS como um tecido conjuntivo que é usado em todas as soluções da Elastic para correlacionar, visualizar e também analisar os diferentes fluxos de dados de maneira unificada. 

O ECS não é usado apenas na Elastic; vemos um número crescente de empresas adotando o ECS e enriquecendo-o com seus próprios esquemas específicos do domínio para seus casos de uso. Algumas organizações estão até usando o ECS como modelo de dados comum em seus projetos entre equipes. É ótimo ver esses exemplos nos quais as soluções da Elastic são usadas para quebrar silos organizacionais e reunir equipes!

Armazenamento de logs e métricas

Quando se trata de armazenamento de dados, o Elasticsearch é provavelmente mais conhecido como um sistema de armazenamento para logs. Não é nenhuma surpresa: o logging foi praticamente o primeiro caso de uso do Elasticsearch. Entretanto, com o tempo, vimos muitos usuários armazenando dados de série temporal junto com seus logs, o que faz sentido. Se você armazena logs de infraestrutura e aplicações, por que não armazenar também as métricas que informam quando você deve examinar seus logs?

Logo no início, começamos a investir no Elasticsearch como um armazenamento de dados de série temporal para permitir tais casos de uso, introduzindo um armazenamento colunar. Em seguida, adicionamos o framework de agregações, que permite agrupar e filtrar em diferentes dimensões para métricas. Para melhorar nossa capacidade de lidar com dados geo e numéricos, introduzimos árvores BKD, bem como uma série de outros recursos para gerenciar dados de série temporal de forma eficiente — recursos como rollups de dados, que permitem reduzir a granularidade dos dados históricos (ou seja, redução da amostragem), e gestão de ciclo de vida do índice, que permite controlar diferentes períodos de retenção para diferentes fases dos dados, como hot, warm, cold e exclusão.

Tornar os dados de monitoramento utilizáveis

Visualizações

Digamos que a ingestão esteja funcionando e, agora, os logs e as métricas estejam sendo transmitidos para a Elastic. A primeira coisa que queremos fazer é visualizar esses dados de maneira significativa. Algumas ferramentas de monitoramento deixam a tarefa de criar ou buscar visualizações de dados para o usuário, mas nós achamos que tais visualizações são essenciais. Por isso, a Elastic fornece visualizações e dashboards pré-criados com todas as integrações compatíveis. Isso significa que, assim que você começar a coletar logs ou métricas, poderá rapidamente abrir um dashboard e ver o que está acontecendo com seus sistemas e serviços num instante. 

Dashboard de visão geral do sistema

Todas as visualizações que compõem o dashboard predefinido são reutilizáveis, o que significa que você pode escolher aquelas que considera particularmente úteis e construir dashboards customizados para suas necessidades específicas, fazendo combinações com diferentes integrações para obter respostas para as perguntas que você tem. Além disso, você também pode criar menus suspensos customizados para filtrar ou detalhamentos para navegar de um dashboard para outro sem perder o contexto, o que é bastante interessante, pois realmente ajuda a otimizar seus fluxos de trabalho de resolução de problemas.

Além de dashboards e visualizações, a Elastic fornece apps selecionados para logs, métricas e disponibilidade, todos desenvolvidos para aumentar a visibilidade na sua infraestrutura.

O app Metrics lhe oferece a capacidade de ver toda a sua infraestrutura em um só lugar. Não importa se você tem datacenters distribuídos geograficamente, se está executando o Kubernetes em várias nuvens ou se tem uma configuração onde tudo isso entrou na composição. O Metrics fornece um único painel de visualização para todos os seus recursos, que podem ser agrupados por provedor de infraestrutura, zona geográfica ou praticamente qualquer campo de tags customizadas que você possa estar usando para distinguir entre seus ambientes provisório e de produção. Nessa visualização, você pode ver métricas mais detalhadas e verificar logs, desempenho de aplicações ou informações de tempo de funcionamento de qualquer recurso. O que torna isso possível é o fato de a Elastic ser usada como um único armazenamento de dados para todos os dados operacionais, o que nos permite construir visualizações selecionadas, vinculá-las para simplificar a navegação e tornar o monitoramento da infraestrutura uma experiência mais ágil e tranquila. 

UI do Metrics: infraestrutura do Kubernetes 

O app Metrics também fornece um Metrics Explorer, que é útil para solucionar problemas, pois permite sobrepor diferentes métricas para ver se há alguma correlação entre elas. A partir daqui, você também pode criar novas visualizações ou alertas de limite.

O app Logs é basicamente um tail -f para toda a sua infraestrutura — ele consolida todos os fluxos de log e mostra os logs históricos e em tempo real em uma única visualização. Nos bastidores, os logs são correlacionados às métricas, o que torna muito mais fácil seguir as pistas durante a investigação de problemas. Nesse app, você pode ver os detalhes de cada linha de log e também o que aconteceu antes e depois de a linha ter sido escrita. E, assim como qualquer outro app de observabilidade no Kibana, ele vai além de apenas visualizações somente leitura, permitindo que você analise e aja em qualquer coisa suspeita com o poder do alerta e do machine learning.

Alerta

Essencialmente, o alerta é um dos componentes básicos de todos os casos de uso de monitoramento porque ajuda a detectar e responder a quaisquer problemas em toda a infraestrutura. Graças ao novo framework de alerta da Elastic, agora fornecemos vários tipos de alertas que são otimizados para diferentes fluxos de dados. 

  • Os alertas de métricas podem ser facilmente configurados para qualquer tipo de implantação, seja física ou em container, o que significa que esses alertas podem automaticamente cobrir recursos recém-criados. Os filtros permitem controlar quais partes da infraestrutura um alerta deve cobrir. Você também pode configurar um alerta uma vez e dividi-lo automaticamente por campo de sua escolha, como disparar um alerta para cada host ou para cada disco em cada host.
  • Os alertas de log são otimizados para os dados de log e permitem que você crie alertas com base nos campos que correspondem a uma frase ou com base na frequência com que um determinado campo aparece no log.

Alertas de métrica

Todos os alertas podem ser criados e gerenciados a partir de um local central no Kibana, mas eles também estão incorporados nos respectivos apps, o que os torna realmente fáceis de usar nas operações do dia a dia.

Machine learning e detecção de anomalia

Atualmente, as infraestruturas produzem muitos dados operacionais que estão crescendo o tempo todo, tornando praticamente impossível analisar diferentes fluxos de dados manualmente. Na verdade, isso está se tornando um problema sério para as organizações que buscam maneiras de automatizar a detecção de problemas. Portanto, uma parte importante de uma solução de monitoramento moderna é a capacidade de detectar automaticamente qualquer comportamento anormal nos ambientes de implantação antes que algo ruim aconteça.

A boa notícia é que, uma vez que seus dados operacionais estejam no Elasticsearch, eles estarão prontos para análise. Os trabalhos de machine learning predefinidos para detecção de anomalia já estão otimizados para logs e métricas, e estão integrados aos apps do Kibana onde você precisa. Por exemplo, eles podem detectar automaticamente se há alguma anomalia com as taxas nas quais os logs de infraestrutura são gerados ou encontrar padrões e agrupar automaticamente seus logs em categorias.

Analítica de log com machine learning

Os recursos de machine learning da Elastic não se limitam à detecção de anomalia. Você pode usar outros algoritmos como classificação, detecção de outlier e muito mais em uma ampla variedade de casos de uso envolvendo dados de infraestrutura.

Multiplicação do valor com o Elastic Stack

Como tudo é apenas mais um índice na Elastic, você pode usar qualquer recurso da Elastic com seus dados de monitoramento. Com diferentes visualizações no Kibana, você pode criar visualizações que sejam significativas para todos na sua organização, como dashboards flexíveis e densos, criados com o Lens e o TSVB (antes chamado Time Series Visual Builder, uma ferramenta poderosa para construir visualizações de métricas e histogramas anotáveis) valiosos para suas equipes de engenharia ou infográficos ao vivo com o Canvas, que traduzem dados complexos em tendências valiosas para os donos de empresas. 

lens.png

Kibana Lens

Tudo o que você armazena na Elastic pode ser acessado na UI ou na API com uma linguagem de consulta familiar, como SQL ou PromQL. O PromQL está se tornando popular e, graças à integração com o Prometheus, você pode gravar os resultados das suas consultas do PromQL na Elastic. Isso é especialmente útil se você não quer armazenar métricas brutas e tem interesse apenas nos dados já processados.

Você também pode combinar o monitoramento da infraestrutura com a segurança. A linha entre observabilidade e segurança está desaparecendo porque, essencialmente, os dados que usamos para monitorar nossas infraestruturas também são relevantes para protegê-las. A solução Elastic Security, assim como o Observability, foi desenvolvida sobre o Elastic Stack e permite detectar e prevenir facilmente ameaças de segurança nas suas infraestruturas.

Conclusão

Neste post, listamos as necessidades de soluções de monitoramento modernas e mostramos como a Elastic pode atendê-las. A solução Elastic Observability e o Elastic Stack podem ajudar a construir a plataforma de monitoramento definitiva, na qual você e suas equipes podem ingerir com segurança todos os seus dados operacionais, interagir com eles e ter sucesso.

Mas não saia confiando na nossa palavra; experimente e comprove.  Crie um cluster em uma avaliação gratuita do Elastic Cloud ou baixe a versão mais recente do nosso website e diga-nos o que você achou.