Atualmente, o Couchbase Server tem uma infinidade de estatísticas, desde a taxa de transferência de acesso a dados em KV e consulta a recursos do sistema, como E/S de disco e CPU, até serviços mais recentes, como eventos. Existem vários Prometheus Exporters criados pela comunidade para o Couchbase, bem como o exportador para monitorar o Sync Gateway e estamos aproveitando esse impulso para adicioná-lo oficialmente ao Kubernetes e ao OpenShift.
Com o lançamento do Autonomous Operator 2.0, oferecemos suporte às estatísticas do Prometheus em conjunto com as implantações gerenciadas do Operator. Embora não ainda oficialmente suportado, há também configurações alternativas de tempo de execução para atingir os mesmos objetivos. Falaremos mais sobre isso no final.
Esta postagem do blog explicará como configurar o exportador junto com o Prometheus e o Grafana, além de fornecer uma breve visão geral de como monitorar um Banco de dados NoSQL.
Histórico
O Couchbase Server já expõe as métricas em um formato JSON por meio de uma interface de repouso, de modo que o trabalho do exportador é pegar essas métricas e produzi-las em um formato compatível com o Prometheus.
Ele transforma as estatísticas do endpoint REST do Couchbase Server como estas, encontradas em bucket info -
1 2 3 4 5 6 7 8 9 10 11 |
Estatísticas básicas: { quotaPercentUsed: 24.55603790283203, opsPerSec: 0, diskFetches: 0, itemCount: 7303, diskUsed: 28024334, dadosUsados: 19720703, memUsado: 25748872, vbActiveNumNonResident: 0 }, |
Em um formato como este
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# AJUDA CBBucketInfo_basic_dataused_bytes basic_dataused # TYPE CBBucketInfo_basic_dataused_bytes gauge CBBucketInfo_basic_dataused_bytes{bucket="beer-sample"} 1.9720703e+07 CBBucketInfo_basic_dataused_bytes{bucket="tester"} 8.435712e+06 # AJUDA CBBucketInfo_basic_diskfetches basic_diskfetches # TYPE CBBucketInfo_basic_diskfetches gauge CBBucketInfo_basic_diskfetches{bucket="beer-sample"} 0 CBBucketInfo_basic_diskfetches{bucket="tester"} 0 # HELP CBBucketInfo_basic_diskused_bytes basic_diskused # TYPE CBBucketInfo_basic_diskused_bytes gauge CBBucketInfo_basic_diskused_bytes{bucket="beer-sample"} 2.8024334e+07 CBBucketInfo_basic_diskused_bytes{bucket="tester"} 8.463402e+06 # HELP CBBucketInfo_basic_itemcount basic_itemcount # TYPE CBBucketInfo_basic_itemcount gauge CBBucketInfo_basic_itemcount{bucket="beer-sample"} 7303 CBBucketInfo_basic_itemcount{bucket="tester"} 0 |
Que pode ser usado para criar painéis como este.
Em um nível de componente, é assim que funciona:
Vamos entrar em um pouco mais de detalhes sobre cada componente.
Exportador do Couchbase
Em sua essência, o Couchbase Exporter fornece o primeiro bloco de construção nesse fluxo de trabalho, fornecendo endpoints do Prometheus que são extraídos em um intervalo definido pelo servidor Prometheus. Ele faz isso e, ao mesmo tempo, oferece opções de segurança de rede com TLS e mTLS e proteção de quaisquer dados confidenciais em potencial do exportador por meio de um token de portador.
Durante a execução no Operador Autônomo, o Couchbase Exporter funciona como um sidecar em cada pod do Kubernetes, maximizando a rede local quando se trata de estatísticas específicas do nó e reduzindo a quantidade de tráfego intracluster. Além de fornecer um grau de redundância; se um pod cair, as estatísticas gerais do cluster e as estatísticas dos pods ativos persistem.
Isso significa que cada nó que estiver executando o Couchbase deverá executar uma cópia do exportador para que essas estatísticas por nó estejam disponíveis. Cada cópia do exportador só extrairá estatísticas por nó do nó em que estiver sendo executada. Cada um desses exportadores executará um ponto de extremidade disponível para qualquer servidor Prometheus para fazer o scrape, uma vez configurado.
Prometeu
O Prometheus é um kit de ferramentas de monitoramento e alerta de sistemas de código aberto e o segundo projeto a se juntar ao CNCF depois do Kubernetes, portanto, é uma opção natural para ambientes Kubernetes e amplamente adotado.
É mais um protocolo e um kit de ferramentas para preencher um banco de dados de séries temporais e não uma ferramenta de painel. Há uma capacidade leve de criar gráficos de estatísticas, mas é mais comum usar o Grafana.
Grafana
Para visualizar os dados coletados pelo Prometheus, podemos usar o incrivelmente flexível Grafana, que consome a API do Prometheus para criar painéis personalizáveis. O Grafana é uma plataforma de alerta e visualização de dados de código aberto, usada principalmente para criar painéis incrivelmente abrangentes e personalizáveis pelo usuário.
Os painéis podem ser bastante específicos para o que lhe interessa como usuário, portanto, convém personalizá-los de acordo. Se você quiser um ponto de partida, há alguns exemplos de painéis do Grafana na seção exportador de couchbase repositório do GitHub que será aprimorado com o tempo. As contribuições são bem-vindas!
Instalação
Para que tudo funcione, você precisará configurar os quatro principais componentes desse pipeline de monitoramento: o próprio Couchbase Server, o Couchbase Exporter, o Prometheus e o Grafana.
O exportador é compatível com as versões 5.5.x do Couchbase Server em diante, mas recomendamos o uso da versão 6.0.4 ou mais recente, devido à futura EOL da versão 5.x.
Configuração do Grafana
Para instalar e configurar o Grafana, escolha sua plataforma relevante e siga as instruções de instalação guia. Quando isso estiver em execução, quando carregarmos o Grafana pela primeira vez em http://localhost:3000 ele solicitará um nome de usuário e uma senha, que é "admin" para ambos. Em seguida, ele solicitará que você defina uma nova senha.
A próxima etapa é adicionar o Prometheus como uma fonte de dados. Dependendo de onde você estiver executando o Prometheus, o endereço de URL HTTP será localhost ou o endereço onde você o hospedou ou expôs, com a porta 9090. Abaixo está um exemplo do Prometheus em execução no Docker.
Em seguida, podemos importar um de nossos painéis de amostra para visualizar nossos dados. Para importar o painel de sua escolha, passe o mouse sobre o ícone de mais na barra lateral esquerda e selecione "Import" (Importar). Como ponto de partida, copie e cole o JSON fornecido na pasta Grafana do exportador e, em seguida, pressione Load.
Talvez seja necessário acessar Settings -> Variables -> bucket e pressionar Update para que os buckets corretos sejam carregados e os dados sejam exibidos.
Segurança
O exportador oferece suporte à comunicação por TLS e mTLS, além de restringir quem vê as informações de métricas por meio do uso de um sinalizador de token de portador. Em conjunto com o Operador do Couchbase, o token de portador é fornecido como um segredo do Kubernetes. O TLS e o mTLS são ativados ao habilitá-los na seção agrupamento geral. Um exemplo de um token ao portador como um segredo:
1 2 3 4 5 6 7 |
Versão da API: v1 gentil: Secreto metadados: nome: cb-métricas-token tipo: Opaco stringData: token: seu-simples-texto-portador-token-aqui |
No modo autônomo, forneça o local de um arquivo de token usando o sinalizador "-token" e semelhante para qualquer recurso de PKI usando os sinalizadores "-key", "-cert" e "-ca", em que "-key" se refere à chave privada a ser usada, "-cert" à cadeia de certificados e "-ca" à autoridade de certificação de nível superior.
Execução autônoma
Embora ainda não seja oficialmente suportado, como mencionado, é certamente possível executá-lo como um processo ou como um contêiner do Docker junto com os nós do Couchbase Server.
Para o exportador, baixe o código-fonte do site couchbase/couchbase-exporter Repositório do GitHub.
1 |
git clone https://github.com/couchbase/couchbase-exporter.git |
Como alternativa, você pode obter a imagem oficial do Dockerhub encontrada aqui.
1 |
doca puxar couchbase/exportador |
No entanto, isso pode nem sempre estar atualizado, enquanto o repositório git estará.
Para executar o exportador localmente, basta usar o comando
1 |
doca executar --nome couchbase-exportador -d -p 9091:9091 couchbase-exportador:1.0.0 |
Siga as instruções encontradas no LEIAME para quaisquer configurações mais avançadas.
Você pode executar o Prometheus localmente e por meio do Docker, da mesma forma que o exportador.
Faça o download e execute o Prometheus localmentee, em seguida, use nosso prometheus.yml que contém o trabalho scrape_config que inclui uma pesquisa para localhost:9091 - que é onde as métricas do exportador devem ser servidas se estiverem sendo executadas localmente. Caso contrário, edite o arquivo adequadamente, se necessário, para que o trabalho scrape_config inclua o endereço IP correto do exportador.
- nome_do_trabalho: 'couchbase'
# ambos os valores podem ser definidos para uma granularidade mínima de 1s se essa precisão for necessária
scrape_interval: 60s
scrape_timeout: 55s
metrics_path: /metrics
static_configs:
- alvos: ['localhost:9091']
Para executar por meio do Docker, verifique se o arquivo prometheus.yml está correto e, em seguida, execute um dos seguintes comandos:
1 2 3 4 |
doca executar \ -p 9090:9090 \ -v /caminho/para/configuração/prometeu.yml:/etc/prometeu/prometeu.yml \ baile/prometeu |
1 2 3 4 |
doca executar \ -p 9090:9090 \ -v /caminho/para/configuração:/etc/prometeu \ baile/prometeu |
Com a bandeira -d se você quiser executar a imagem desvinculada em segundo plano.
Fonte: https://prometheus.io/docs/prometheus/latest/installation/#using-docker
Execute o prometheus e o exportador que hospeda as métricas em localhost:9091/metrics, e o URL do exportador deve aparecer na lista de destinos do Prometheus em localhost:9090/targets e reportar como UP.
Se você estiver executando o exportador e o Prometheus no Docker, a configuração será um pouco mais complicada. Use os comandos lista de redes da plataforma e inspeção de rede do docker para encontrar o endereço IPv4 do contêiner do Couchbase Exporter e substituir esse valor por localhost na lista de alvos de raspagem.
O que vem a seguir
Um dos objetivos deste projeto é fornecer um Prometheus Exporter oficial para o Couchbase. Devido à natureza de código aberto do Prometheus e dos exportadores que existiam antes, queremos incentivar ativamente as contribuições da comunidade para o projeto.
Para quaisquer bugs, problemas ou solicitações de recursos, use nosso JIRA.
Uma menção especial a Carlos Becker e ao restante da equipe de colaboradores no projeto do exportador couchbase da TOTVS Labs, bem como no exportador couchbase da Leansys, por fornecerem a inspiração básica para este projeto!
Recursos adicionais
Com o lançamento do Autonomous Operator 2.0, Um tutorial é fornecido na documentação.
No momento da redação deste artigo, uma das maneiras mais simples de configurar o Prometheus e o Grafana é usar o Prometheus Operator. O tutorial vinculado aborda o projeto kube-prometheus do GitHub e seu gráfico Helm correspondente.
https://github.com/coreos/kube-prometheus
https://github.com/helm/charts/tree/master/stable/prometheus-operator
https://github.com/coreos/prometheus-operator