Como engenheiro(a) de operações (SRE, gerente de TI, DevOps), você está sempre na luta para saber como administrar a expansão da tecnologia e dos dados. O Kubernetes está se tornando cada vez mais difundido, e a maioria dessas implantações será no Amazon Elastic Kubernetes Service (EKS), no Google Kubernetes Engine (GKE) ou no Azure Kubernetes Service (AKS). Alguns de vocês podem estar usando uma única nuvem, enquanto outros terão o trabalho adicional de gerenciar clusters em vários serviços de nuvem do Kubernetes. Além da complexidade do provedor de serviços em nuvem, você também precisa gerenciar centenas de serviços implantados, gerando cada vez mais dados de observabilidade e telemetria.
As operações diárias de compreensão do status e da integridade de seus clusters do Kubernetes e das aplicações executadas neles, por meio dos logs, métricas e traces que eles geram, provavelmente serão seu maior desafio. Mas, como engenheiro(a) de operações, você precisará de todos esses dados importantes para ajudar a prevenir, prever e corrigir problemas. E certamente não precisa ter esse volume de métricas, logs e traces espalhado por várias ferramentas quando precisa visualizar e analisar dados de telemetria do Kubernetes para solução de problemas e suporte.
O Elastic Observability ajuda a gerenciar a expansão de métricas e logs do Kubernetes, fornecendo funcionalidades de observabilidade abrangentes e centralizadas, além do logging pelo qual somos conhecidos. O Elastic Observability fornece insights granulares e contexto sobre o comportamento dos seus clusters do Kubernetes, juntamente com as aplicações executadas neles, unificando todos os seus dados de métricas, logs e traces por meio de agentes do OpenTelemetry e de APM.
Independentemente do local do cluster (EKS, GKE, AKS, autogerenciado) ou da aplicação, o monitoramento do Kubernetes fica mais simples com o Elastic Observability. Todas as métricas de nós, pods, containers, aplicações e infraestrutura (AWS, GCP, Azure), logs de infraestrutura e aplicações, juntamente com traces de aplicações, estão disponíveis no Elastic Observability.
Neste blog, mostraremos:
- Como o Elastic Cloud pode agregar e ingerir dados de métricas e logs por meio do Elastic Agent (facilmente implantado no seu cluster como um DaemonSet) para recuperar logs e métricas do host (métricas do sistema, estatísticas de container) junto com logs de todos os serviços executados no Kubernetes.
- Como o Elastic Observability pode trazer uma experiência de telemetria unificada (logs, métricas, traces) em todos os componentes do cluster do Kubernetes (pods, nós, serviços, espaços de nome e muito mais).

Se você planeja seguir este post, aqui estão alguns dos componentes e detalhes que usamos para configurar esta demonstração:
- Você deverá ter uma conta no Elastic Cloud e uma stack implantada (consulte as instruções aqui).
- Embora tenhamos usado o GKE, você pode usar qualquer local para seu cluster do Kubernetes.
- Usamos uma variante da popular aplicação de demonstração Hipster Shop. Ela foi originalmente desenvolvida pelo Google para demonstrar o Kubernetes em diversas variantes disponíveis, como o app de demonstração do OpenTelemetry. Para usar o app, clique aqui e siga as instruções para implantar. Você não precisa implantar o otelcollector para que as métricas do Kubernetes fluam — falaremos sobre isso mais adiante.
- A Elastic oferece suporte para a ingestão nativa do Prometheus e do FluentD, mas neste post mostramos uma ingestão direta do cluster do Kubernetes por meio do Elastic Agent. Posteriormente publicaremos um post mostrando como o Elastic também pode extrair telemetria do Prometheus ou do FluentD/bit.
O que você pode observar e analisar com o Elastic?
Antes de seguirmos as etapas de configuração do Elastic para ingerir e visualizar métricas e logs do cluster do Kubernetes, vamos dar uma olhada nos dashboards do Elastic.
Conforme observamos, executamos uma variante do Hipster Shop no GKE e implantamos o Elastic Agent com integração do Kubernetes como um DaemonSet no cluster do GKE. Após a implantação dos agentes, a Elastic começa a ingerir métricas do cluster do Kubernetes (especificamente de kube-state-metrics) e, adicionalmente, a Elastic extrairá todas as informações de log do cluster.


Além do dashboard de visão geral do cluster e do dashboard do pod, a Elastic tem vários dashboard úteis que vêm prontos para uso:
- Dashboard de visão geral do Kubernetes (veja acima)
- Dashboard do pod do Kubernetes (veja acima)
- Dashboard de nós do Kubernetes
- Dashboard de implantações do Kubernetes
- Dashboard de DaemonSets do Kubernetes
- Dashboards de StatefulSets do Kubernetes
- Dashboards de CronJob e trabalhos do Kubernetes
- Dashboards de serviços do Kubernetes
- Outros serão adicionados regularmente
Além disso, você pode customizar esses dashboards ou criar os seus.

Como você pode ver nas telas acima, posso obter as métricas de cluster do Kubernetes e também todos os logs do Kubernetes simplesmente usando o Elastic Agent no meu cluster do Kubernetes.
Além de ajudar a gerenciar métricas e logs, a Elastic pode ajudar você a detectar e prever anomalias na telemetria do cluster. Basta ativar o Machine Learning no Elastic em relação aos seus dados e observar como ele ajuda a aprimorar seu trabalho de análise. Como você pode ver abaixo, o Elastic não é apenas um local unificado de observabilidade para os logs e métricas do cluster do Kubernetes, mas também fornece amplas funcionalidades reais de machine learning para aprimorar sua análise e gerenciamento.


No gráfico superior, você vê a detecção de anomalia nos logs, e ele mostra algo potencialmente errado no período de 21 a 23 de setembro. Aprofunde-se nos detalhes do gráfico inferior analisando uma única métrica kubernetes.pod.cpu.usage.node que mostra problemas de CPU no início de setembro e novamente no final do mês. Você pode fazer análises mais complicadas na sua telemetria do cluster com o Machine Learning usando análise multimétrica (em vez do problema de métrica única que estou mostrando acima) junto com a análise populacional.
A Elastic oferece melhores funcionalidades de machine learning para aprimorar sua análise da telemetria do cluster do Kubernetes. Na próxima seção, veremos como é fácil transferir seus dados de telemetria para o Elastic.
Vamos examinar os detalhes de como transferir métricas, logs e traces para o Elastic de uma aplicação Hipster Shop implantada no GKE.
Primeiro, escolha sua versão favorita do Hipster Shop — como observamos acima, usamos uma variante do OpenTelemetry-Demo porque ela já tem o OTel. No entanto, reduzimos o tamanho para este post (menos serviços com alguns idiomas variados).
Siga as instruções para começar a usar o Elastic Cloud.

Coloque o app em um cluster do Kubernetes no serviço de nuvem de sua preferência ou na plataforma do Kubernetes local. Depois que o app estiver em execução no Kubernetes, você terá os pods a seguir (ou alguma variante) em execução no espaço de nome default.
NAME READY STATUS RESTARTS AGE
adservice-8694798b7b-jbfxt 1/1 Running 0 4d3h
cartservice-67b598697c-hfsxv 1/1 Running 0 4d3h
checkoutservice-994ddc4c4-p9p2s 1/1 Running 0 4d3h
currencyservice-574f65d7f8-zc4bn 1/1 Running 0 4d3h
emailservice-6db78645b5-ppmdk 1/1 Running 0 4d3h
frontend-5778bfc56d-jjfxg 1/1 Running 0 4d3h
jaeger-686c775fbd-7d45d 1/1 Running 0 4d3h
loadgenerator-c8f76d8db-gvrp7 1/1 Running 0 4d3h
otelcollector-5b87f4f484-4wbwn 1/1 Running 0 4d3h
paymentservice-6888bb469c-nblqj 1/1 Running 0 4d3h
productcatalogservice-66478c4b4-ff5qm 1/1 Running 0 4d3h
recommendationservice-648978746-8bzxc 1/1 Running 0 4d3h
redis-cart-96d48485f-gpgxd 1/1 Running 0 4d3h
shippingservice-67fddb767f-cq97d 1/1 Running 0 4d3h
Etapa 2. Ativar o kube-state-metrics
Em seguida, você precisará ativar o kube-state-metrics.
Primeiro:
git clone https://github.com/kubernetes/kube-state-metrics.git
Em seguida, no diretório kube-state-metrics sob o diretório de exemplos, basta aplicar a configuração padrão.
kubectl apply -f ./standard
Isso ativará o kube-state-metrics, e você verá um pod semelhante a este em execução no espaço de nome kube-system.
kube-state-metrics-5f9dc77c66-qjprz 1/1 Running 0 4d4h
Adicionar a integração do Kubernetes:
- No Elastic, vá para Integrations (Integrações), selecione Kubernetes Integration (Integração do Kubernetes) e selecione Add Kubernetes (Adicionar Kubernetes).
- Selecione um nome para a integração do Kubernetes.
- Ative o kube-state-metrics na tela de configuração.
- Dê um nome à configuração na caixa de texto new-agent-policy-name.
- Salve a configuração. A integração com uma política foi criada.
Você pode ler sobre as políticas do agente e como elas são usadas no Elastic Agent aqui.


- Adicione a integração do Kubernetes.
- Selecione a política que você acabou de criar na segunda etapa.
- Na terceira etapa das instruções para adicionar o agente, copie e cole ou baixe o manifesto.
- Adicione o manifesto ao shell onde você tem o kubectl em execução, salve-o como elastic-agent-owned-kubernetes.yaml e execute o comando a seguir.
kubectl apply -f elastic-agent-managed-kubernetes.yaml
Você deverá ver vários agentes surgirem como parte de um DaemonSet no espaço de nome kube-system.
NAME READY STATUS RESTARTS AGE
elastic-agent-qr6hj 1/1 Running 0 4d7h
elastic-agent-sctmz 1/1 Running 0 4d7h
elastic-agent-x6zkw 1/1 Running 0 4d7h
elastic-agent-zc64h 1/1 Running 0 4d7h
No meu cluster, tenho quatro nós e quatro elastic-agents iniciados como parte do DaemonSet.
Etapa 4. Ver os dashboards prontos para uso da Elastic para métricas do Kubernetes e começar a descobrir logs do Kubernetes
É isso. Você deverá ver as métricas fluindo para todos os dashboards. Para visualizar logs de pods específicos, basta acessar o Discover no Kibana e buscar o nome de um pod específico.


Além disso, você pode navegar por todos os logs de pod diretamente no Elastic.

No exemplo acima, fiz uma busca dos logs frontendService e cartService.

Espero que você tenha gostado de saber como o Elastic Observability pode ajudar você a gerenciar os clusters do Kubernetes junto com a complexidade dos dados de métricas, logs e traces que eles geram, mesmo para uma implantação simples.
Fazendo uma rápida recapitulação das lições, aprendemos o seguinte:
- Como o Elastic Cloud pode agregar e ingerir dados de telemetria por meio do Elastic Agent, que é facilmente implantado no seu cluster como um DaemonSet e recupera métricas do host, como métricas do sistema, estatísticas do container e métricas de todos os serviços executados no Kubernetes
- O que a Elastic traz de uma experiência de telemetria unificada (logs, métricas, traces do Kubernetes) em todos os componentes do cluster do Kubernetes (pods, nós, serviços, espaços de nome e muito mais).
- É interessante explorar as funcionalidades de machine learning da Elastic, que reduzirão seu MTTHH (tempo médio até o happy hour)
Tudo pronto para começar? Cadastre-se e experimente os recursos e funcionalidades que descrevi acima.