Olá pessoal! Hoje, continuamos a compartilhar material traduzido especificamente para os alunos do curso da
Plataforma de Infraestrutura baseado em Kubernetes . Boa leitura.

1. Introdução

Há já algum tempo que experimentei criar painéis da Grafana para administrar o Kubernetes. Como proprietário e administrador de vários clusters do Kubernetes, eu queria obter uma representação visual de algumas das métricas. Primeiro, preciso dos painéis normais da Grafana para os componentes Kubernetes Control Plane e Node:
kube-api, kube-scheduler, kube-controller-manager, assim como kubelet e kube-proxy . Em segundo lugar, gostaria de postar os painéis resultantes no GitHub para que outros possam deixar sugestões e relatórios de erros (problemas), enviar solicitações de alterações (solicitações de recebimento), atualizar painéis (git pull) e me ajudar a trabalhar neles.
Publicar painéis Grafana
Os painéis Grafana agora são publicados principalmente em
grafana.com/dashboards . Para obter o painel desejado, você precisa encontrá-lo na página, copiar o identificador e importá-lo para a instância local do Grafana. Embora a importação de painéis seja relativamente simples, a experiência mostra que a maioria dos usuários acha inconveniente trabalhar com eles. Existem várias razões para isso.
Primeiro, as pessoas usam seletores de tags diferentes para indicar metas de monitoramento no Prometheus. Em segundo lugar, nas novas versões dos exportadores do Prometheus e nos aplicativos para acessar métricas, os nomes das métricas são alterados e excluídos constantemente. Em terceiro lugar, é extremamente difícil encontrar painéis de alta qualidade - você nunca sabe o que obterá após a importação. Depois de selecionar o painel, você deve vasculhar todos os gráficos e editar as métricas, juntamente com os seletores das etiquetas - e isso é uma grande quantidade de trabalho manual.
Projeto Monitorando Mixins
Eu encontrei um projeto muito legal chamado
Monitoring Mixins. De fato, esse é um tipo de ecossistema projetado para superar todos os problemas do painel dolorido. A idéia veio de Frederic Branczyk, e foi ele quem escreveu o
documento de design original , que eu recomendo fortemente que você leia. Além disso, ele pensou em um mecanismo real para atualizar painéis e extraí-los de vários repositórios do GitHub. Esse mecanismo é muito parecido com o de
go get
, e eu realmente gostei.
Aqui você pode ler uma breve descrição do
gerenciador de pacotes
jsonnet-bundler usando esse mecanismo. Muito obrigado a
Frederick pelos desenvolvimentos úteis!
Pacote Kubernetes Grafana Mixin
Se você ler este lugar, poderá fazer uma pausa e apreciar as belas fotos.
Servidor API
Painel do servidor da API KubernetesGerente de controlador
Painel do Kubernetes Controller ManagerPlanejador
Painel do Agendador do KubernetesKublet (agente do nó)
Painel Kubernetes Cublet
Painel Kubernetes CubletProxy Kube
Painel Proxy do KubeUsando o Kubernetes Grafana Mixin
Primeiro você precisa instalar o
jsonnet
e o
jsonnet-bundler
.
Jsonnet
Se você estiver usando o macOS, poderá usar o
brew install jsonnet
. Caso contrário, é melhor compilar você mesmo esse componente.
git clone https:
Empacotador Jsonnet
go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb
Painéis de importação
Crie um novo diretório para o projeto e digite-o com o
cd
.
Instale o
mixin :
jb init jb install https:
Agora crie um novo arquivo
config.libsonnet
.
local kubedashboards = import 'kubernetes-grafana-mixin/mixin.libsonnet'; kubedashboards { _config+:: { kubeletSelector: 'job="kubernetes-nodes2"', kubeSchedulerSelector: 'job="kube-scheduler2"', kubeControllerManagerSelector: 'job="kube-controller-manager2"', kubeApiserverSelector: 'job="kube-apiserver2"', kubeProxySelector: 'job="kube-proxy2"', }, }
Depois disso, o painel de informações é importado e os seletores de trabalhos são substituídos.
Corrija os seletores de tags do Prometheus para se adequar ao seu ambiente.
Agora crie o diretório de
dashboards
. Por fim, execute o
jsonnet
para compilar o
config.libsonnet
:
jsonnet -J vendor -m dashboards -e '(import "config.libsonnet").grafanaDashboards'
Você verá a seguinte lista:
dashboards/kube-apiserver.json dashboards/kube-controller-manager.json dashboards/kube-proxy.json dashboards/kube-scheduler.json dashboards/kubelet.json
Resultado
Exiba o conteúdo do catálogo do painel.
ls -l dashboards
-rw-r--r-- 1 povilasv povilasv 35746 Apr 26 08:29 kube-apiserver.json -rw-r--r-- 1 povilasv povilasv 34790 Apr 26 08:29 kube-controller-manager.json -rw-r--r-- 1 povilasv povilasv 62845 Apr 26 08:29 kubelet.json -rw-r--r-- 1 povilasv povilasv 27673 Apr 26 08:29 kube-proxy.json -rw-r--r-- 1 povilasv povilasv 25650 Apr 26 08:29 kube-scheduler.json
Adicionando painéis ao Grafana
Eu já disse que recomendo colocar painéis nos arquivos de configuração. Você pode aprender mais sobre como isso é feito
na documentação do Grafana .
Por outro lado, nada impede que você abra
a interface Grafana e adicione painéis nela.
Atualizar painéis
Com o tempo, os painéis serão alterados. Para atualizá-los, o seguinte comando é suficiente:
jb update
Isso é tudo por hoje.
Espero que você goste dos meus painéis. Em um artigo separado, falarei sobre como os criei e por que os fiz dessa maneira, portanto, assine as atualizações. Os assinantes veem meu trabalho primeiro, mesmo antes da publicação.
Também estou extremamente interessado nos seus comentários. Se você usou meus painéis, avalie o quanto eles foram úteis para você ou compartilhe se eles o ajudaram em uma situação de trabalho real. Apenas deixe um comentário!
A propósito, se você quiser me agradecer por meus esforços, pode olhar para minha lista de desejos aberta e me comprar, por exemplo, um bom livro.
Eu realmente aprecio projetos de código aberto de qualidade. O pacote kubernetes-grafana-mixin está disponível sob uma licença de licenciamento Apache 2
. Se você gostou do projeto, confira no Github!