Observabilidade para o Kubernetes com o Metricbeat
Tags: docker, kubernetes, elasticsearch, metricbeat
Published: 2020-05-01 12:41:03

## O que é o Kubernetes (K8s)?

É uma plataforma Open Source, criada por engenheiros da Google, que foi lançada em 2014. Através dela, é possível fazer a criação, escalonamento e gerenciamento de aplicações em containers. O K8s usa o Docker para criar os containers nos nodes que compõem o cluster.

O Kubernetes é amplamente utilizado no mercado de tecnologia por grandes empresas como [Spotify](https://kubernetes.io/case-studies/spotify/), [Adidas](https://kubernetes.io/case-studies/adidas/) e [IBM](https://kubernetes.io/case-studies/ibm/) por exemplo.

## Porque K8s?

O K8s é um "trocadilho" com o nome K+ 8 letras + s, que juntas formam a palavra Kubernetes :)

## Porque monitorar o Kubernetes?

Como foi citado anteriormente, o Kubernetes é muito utilizado por grandes empresas e vem crescendo muito ao longo dos anos a quantidade de organizações que utilizam essa ferramenta como um meio de provisonar uma infra para suas aplicações, por isso, quanto maior o uso, maior a necessidade de ter visāo de como tudo funciona, para evitar que você fique sem a visibilidade de problemas que podem impactar a sua aplicaçāo e consequentemente o seu usuário.

## Como monitorar o Kubernetes utilizando o Metricbeat?

O [Metricbeat](https://www.elastic.co/pt/beats/metricbeat) é um agente da Elastic que tem como principal funçāo, coletar métricas e enviar elas para o Elasticsearch. É possível utilizar o Metricbeat para coletar métricas de vários tipos de aplicações, pois ele possui diversos módulos, incluindo um para o Kubernetes.
De acordo com a [documentaçāo](https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-kubernetes.html) oficial da Elastic, é possível coletar métricas dos principais componentes do Kubernetes:

- [Kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/)
- [Kube-state-metrics](https://github.com/kubernetes/kube-state-metrics)
- [Apiserver](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/)
- [Controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)
- [Scheduler](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/)
- [Proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/)

## Passo a passo

Para executar os passos abaixo, é necessário que você já tenha instalado e configurado um ambiente com o Elastic Stack (Elasticsearch e Kibana) e um com o Kubernetes. Esse lab é voltado para ser executado no SO CentOS.

1: Faça o download do Metricbeat para CentOS, utilizando o comando: 
`curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.2.0-x86_64.rpm
`
2: Instale o Metricbeat com o comando: `sudo rpm -vi metricbeat-7.2.0-x86_64.rpm`

3: Edite o arquivo de configuração, que fica no diretório `/etc/metricbeat/metricbeat.yml` e insira as seguintes informações:

`output.elasticsearch:
  hosts: ["endpont_do_elasticsearch:9200"]
setup.kibana:
  host: "<endpoint_do_kibana>"`

4: Durante o processo de instalação, habilite o módulo do Kubernetes utilizando o comando: `sudo metricbeat modules enable kubernetes`

5: Use o comando de setup para subir os dashboards com as métricas pré definidas do metricbeat para cada módulo, incluindo o kubernetes: `sudo metricbeat setup`

Depois de instalar e configurar o módulo do Kubernetes, você terá métricas similares a do exemplo abaixo:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/dssilsjx669brcqaz290.png)

Para obter mais informações sobre esse módulo do Metricbeat, acesse a [documentação](https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-kubernetes.html) oficial.