Kubernetes

Operador autônomo 2.0 do Couchbase com o Prometheus - Parte 2

Pré-requisitos

Conforme mencionado em Parte 1 do blog, precisamos executar o Prometheus e o Grafana no ambiente Kubernetes em nosso Amazon EKS. A maneira recomendada é usar o Kube-Prometheusum projeto de código aberto. Isso não apenas simplificará a implantação, mas também adicionará muito mais componentes, como o Exportador de nós do Prometheus que monitora as métricas do host Linux e é normalmente usado em um ambiente Kubernetes. 

Clonar o https://github.com/coreos/kube-prometheus do Github, mas não crie nenhum manifesto ainda.

Componentes incluídos neste pacote:

Observação:

Este tutorial funciona com base no fato de que os manifestos que trazem os recursos relevantes para o Prometheus Operator ainda estão localizados na pasta manifestos.

Caso tenham sido feitas alterações, faça os devidos ajustes, pois o repositório é experimental e está sujeito a alterações.

 

Criar o Couchbase ServiceMonitor

O ServiceMonitor diz ao Prometheus para monitorar um recurso de serviço que define os pontos de extremidade que o Prometheus coleta para obter métricas de entrada fornecidas pelo couchbase-exporter. Esse arquivo,couchbase-serviceMonitor.yamldeve ser kube-prometheus/manifests diretório. 

Legenda:

  1. Talvez você queira incluir nosso Couchbase Monitor de serviço no monitoramento juntamente com o outro namespace Monitores de serviço. Para os exemplos deste tutorial, deixamos apenas no padrão para facilitar o uso.
  2. O porto pode ser um valor de cadeia de caracteres e funcionará para diferentes números de porta do serviço, desde que o nome corresponda.
  3. intervalo informa ao Prometheus a frequência com que o endpoint deve ser analisado. Aqui, queremos fazer a correspondência com o namespace do Serviço que estaremos criando na próxima etapa,
  4. Observe que o namespace our Serviço será executado deve ser o mesmo namespace do cluster do Couchbase do qual desejamos extrair métricas.
  5. Semelhante ao namespaceSelector, este é um simples labelSelector que selecionará o serviço que estaremos criando.

Criar o serviço de métricas do Couchbase

O Serviço definirá a porta que descrevemos em nosso ServiceMonitor em spec.endpoint[0].port anteriormente. seu arquivo,couchbase-service.yamldeve ser kube-prometheus/manifests diretório. 

Legenda:

  1. Conforme mencionado anteriormente, certifique-se de que o Serviço esteja no mesmo namespace que o cluster do Couchbase do qual você deseja extrair métricas; caso contrário, nenhum pod será selecionado e nenhum endpoint será exibido no Prometheus Targets. Certifique-se também de que esse valor corresponda a spec.namespaceSelector no Monitor de serviço.
  2. Mantenha essa porta como seu valor padrão de 9091, pois essa é a porta para a qual o Couchbase Exporter exportará.
  3. Um nível adicional de granularidade ao seu seletor pode ser adicionado no caso de você ter mais de um cluster do Couchbase em execução no mesmo namespace.

Descoberta do Prometheus Dynamic Service

O Prometheus descobre os pontos de extremidade de monitoramento dinamicamente, fazendo a correspondência entre os rótulos no ServiceMonitor e os serviços que especificam o cluster e os pontos de extremidade, a porta 9091 em nosso caso.

Criar os Manifestos

Siga o comando específico fornecido no LEIAME do Github para exibir nossos recursos criados junto com os outros manifestos padrão fornecidos.

Componentes como Prometheus, AlertManager, NodeExporter e Grafana devem então ser inicializados e podemos confirmar isso inspecionando os pods no namespace monitoramento.

Vamos começar.

Crie o namespace e os CRDs do Kubernetes

Aguarde alguns minutos antes da próxima etapa, mas pode ser necessário executar o comando várias vezes para que todos os componentes sejam criados com êxito.

Criar os recursos restantes

Verificar os namespaces de monitoramento

Componentes como Prometheus, AlertManager, NodeExporter e Grafana devem então ser inicializados e podemos confirmar isso inspecionando os pods no namespace monitoramento.

Verifique se o ServiceMonitor foi criado.

Verifique se o nosso serviço foi criado.

Na saída acima, vemos não apenas os serviços, mas também as portas. Usaremos essas informações para encaminhar essas portas, como fizemos com a interface do usuário de administração do Couchbase, para acessar esses serviços.

Para verificar se tudo está funcionando corretamente com a implantação do Prometheus Operator, execute o seguinte comando para visualizar os registros:

Encaminhamento de portas

Já encaminhamos a porta 8091 da interface de usuário de administração do Couchbase de um nó do Couchbase anteriormente, mas estou apresentando isso novamente, desta vez do ponto de vista do serviço. 

Além dessa porta, na verdade precisamos apenas do acesso ao serviço Grafana, a porta 3000. No entanto, vamos acessar a porta 9090 do serviço Prometheus também. Em seguida, podemos dar uma olhada em todas as métricas dos diferentes exportadores e experimentar um pouco de PromQL, a Prometheus Query Language. 

Agora, os três itens acima devem ser suficientes. No entanto, há algumas vantagens adicionais em dar uma olhada nas métricas de cada serviço individual também. O exportador do Couchbase expõe as métricas do Couchbase na porta 9091. Portanto, podemos encaminhar essas portas também. Observe que você realmente precisa apenas de acesso ao Grafana.

Confira os alvos da Prometheus

Acesso: http://localhost:9090/targets

Todos os alvos do Prometheus devem ser UP. Há muitos deles, pois o Kube-Prometheus implantou vários exportadores.

Confira as métricas brutas do Couchbase

Acesso: http://localhost:9091/metrics

Essa saída é útil porque você pode pesquisar rapidamente na lista.

Experimente uma consulta PromQL básica

Na interface do usuário acima, clique em Gráfico Primeiro.

A caixa suspensa fornece a lista de métricas extraídas. Essa é a lista completa de todos as métricas coletadas por todos os exportadores e essa é uma lista bastante assustadora. Um método para restringir a lista apenas às métricas do Couchbase é, obviamente, acessar o endpoint 9091, conforme descrito anteriormente.

Confira o Grafana

Acesso: http://localhost:3000

O nome de usuário e a senha são: admin/admin

A implantação do Grafana no kube-prometheus tem a fonte de dados do Prometheus definida e um grande conjunto de Painéis padrão. Vamos dar uma olhada no Painel de controle do nó padrão

Criar um painel Grafana de amostra para monitorar as métricas do Couchbase

Não criaremos um painel completo, mas uma pequena amostra com alguns painéis para mostrar como isso é feito. Esse painel monitorará o número de itens em um bucket e o número de operações GET e SET.

Observação: Tenha o aplicativo pillow-fight em execução, conforme descrito na Parte 1. Isso gerará as operações que estamos interessados em monitorar.

Métricas da Prometheus

Acesso: http://localhost:9091/gráfico

Estamos interessados nos itens atuais em um bucket. Há duas métricas que fornecem isso: por cluster e por nó. Vamos usar a métrica por nó. Assim, permitiremos que o Prometheus manipule todas as agregações, de acordo com as práticas recomendadas. Outra vantagem é que podemos até mesmo mostrar os itens atuais no bucket, por nó, apenas para verificar se nosso conjunto de dados está distorcido.

Vamos dar uma olhada em um elemento:

No exemplo acima, estamos interessados nesses rótulos: balde, parte de (a parte do meio, cb-exemplo que é o nome do cluster, e cápsula. Também estamos interessados em serviço para filtrar. Isso nos ajudará a projetar um painel no qual poderemos visualizar as métricas por bucket, nó ou cluster.

O painel de amostra

Vamos criar um novo painel de amostra em branco.

Adição de variáveis

Como queremos as métricas por bucket, nó e cluster, vamos adicionar essas variáveis para que possam ser selecionadas em uma caixa suspensa.

O exemplo acima cria a variável bucket. Observe a expressão Query e Regex. 

Vamos criar mais 2 para que tenhamos 3 variáveis:

A consulta não muda para esses 3, mas aqui estão as expressões Regex:

Criando um painel

Criar 3 painéis para itens atuais, GETs e SETs

Você pode duplicar cada painel e editá-los. Estas são as consultas:

Painel de itens: sum(cbpernodebucket_curr_items{bucket=~"$bucket",pod=~"$node"}) by (bucket)

GETs Panel: sum(cbpernodebucket_cmd_get{bucket=~"$bucket",pod=~"$node"}) by (bucket)

SETs Panel: sum(cbpernodebucket_cmd_set{bucket=~"$bucket",pod=~"$node"}) by (bucket)

A amostra completa do painel do Grafana

Esta é a aparência do nosso painel de amostra final.

Limpeza

Por fim, limpe sua implantação:

Recursos:

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Prasad Doddi

Prasad é gerente de produto sênior de suporte, gerenciabilidade e ferramentas do Couchbase. Antes do Couchbase, ele trabalhou na IBM em vários departamentos, incluindo desenvolvimento, controle de qualidade, suporte e vendas técnicas. Prasad tem mestrado em Engenharia Química pela Clarkson University. Eng. pela Clarkson University, NY.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.