O Couchbase Mobile 2.5 A versão introduziu uma extensa relatórios de estatísticas recursos no Gateway de sincronizaçãoAs estatísticas fornecem informações importantes sobre a integridade da implantação do Couchbase Mobile e constituem uma parte integrante de qualquer implantação.
Nesta postagem, discutiremos como você pode usar o Prometeuuma plataforma de monitoramento e alerta de código aberto para monitorar seus nós do Sync Gateway e Grafana para visualizar as estatísticas. Em um próximo post relacionado, discutiremos como você pode configurar o monitoramento com o Prometheus em um Cluster Kubernetes do Couchbase Mobile.
Histórico
Relatório de estatísticas do gateway de sincronização
As estatísticas do Sync Gateway são relatadas no formato JSON e estão disponíveis por meio do _expvar por meio do Sync Gateway Administrador REST interface.
Essas são as categorias de estatísticas que são relatadas.
Prometeu
Prometeu é uma plataforma de monitoramento e alerta de sistemas de código aberto, hospedada pela Fundação para computação nativa em nuvem. No centro de tudo isso está o Servidor Prometheus que é responsável por sondar os "alvos do Prometheus" para obter estatísticas e armazená-las como dados de série temporal. Os alvos do Prometheus são configurados estaticamente ou podem ser descobertos pelo Prometheus.
Grafana
Grafana é uma plataforma de alerta e visualização de dados de código aberto. Ela é compatível com o Prometheus como fonte de dados e pode ser usada para criar painéis abrangentes.
Apresentando o Prometheus Sync Gateway Exporter
Para que o Prometheus monitore o Sync Gateway, precisamos de um "alvo do Prometheus" correspondente ao Sync Gateway. Esse destino é o Exportador do gateway de sincronização, aqui denominada "o Exportador". Em termos simples, o Exportador é responsável por exportar as estatísticas do Sync Gateway para as métricas do Prometheus.

Arquitetura de implantação
Juntando tudo isso, uma implantação típica teria o seguinte aspecto

- Exportador do gateway de sincronização A API REST do Sync Gateway Admin é, por padrão, apenas exposto no localhost. Essa configuração também é altamente recomendada em ambientes de produção. Como resultado, uma vez que o Exporter pesquisa a API de administração do Sync Gateway para obter estatísticas, o Exporter precisaria estar no mesmo host/nó que o Sync Gateway. Além disso, as estatísticas do Sync Gateway são relatadas por nó. Portanto, em um cluster de dois ou mais nós do Sync Gateway, cada nó do Sync Gateway deve ter seu próprio exportador.
- Servidor Prometheus pesquisa continuamente as estatísticas do exportador, que, por sua vez, pesquisa o ponto de extremidade REST do Sync Gateway. O servidor usa as regras definidas na seção rules.yaml para enviar alertas para o Gerenciador de alertas.
- Grafana pesquisa estatísticas no Prometheus Server e as representa graficamente em um painel de controle baseado na Web que pode ser acessado pelo navegador da Web.
Instalação
No restante da postagem, examinaremos as etapas para configurar um cluster do Couchbase Mobile para monitoramento com o Exporter, o Prometheus Server e o Grafana. Embora as instruções sejam destinadas a um ambiente de desenvolvimento, você pode personalizá-las facilmente para um ambiente de produção.
Estaremos usando docaO que tornará extremamente simples o início das atividades.
Download do código-fonte do exportador
O Sync Gateway Exporter é de código aberto couchbaselabs e está disponível no GitHub. Ele é compatível com o Couchbase Sync Gateway 2.5. Para isso, embora nos esforcemos para mantê-lo atualizado com a versão mais recente do Sync Gateway, não podemos garantir isso. Mas a boa notícia é que ele é de código aberto e inclui instruções sobre como você pode estendê-lo para suportar estatísticas adicionais.
Faça o download da fonte do Exporter no github
1 |
git clone https://github.com/couchbaselabs/couchbase-sync-gateway-exporter |
Implantação do cluster do Couchbase Mobile
Todos os comandos nesta seção devem ser executados a partir da pasta raiz do repositório clonado do github.
1 |
cd /caminho/para/exportador/clonado/repo |
Se você já tiver um cluster do Couchbase Mobile em execução no Docker, poderá pular esta etapa e passar para a etapa "Implantação do Sync Gateway Exporter". Lembre-se apenas de substituir o nome da rede da janela de encaixe correspondente à sua configuração existente nas instruções abaixo.
Criação de uma rede docker
Ao usar o docker, é recomendável executar todos os componentes na mesma rede do docker.
Crie uma rede docker com o nome "demo"
1 |
doca rede criar demonstração |
Implantação do Couchbase Server
Usaremos uma imagem especial do docker do Couchbase Server v6.0.1 que inclui um bucket de amostra pré-instalado chamado "TravelSample", bem como um usuário RBAC pré-configurado com "Application Access" que permitiria que o Sync Gateway se conectasse ao Couchbase Server.
Se preferir, você pode instalar o imagem de docker vanilla da versão mais recente do Couchbase Server e configurar manualmente com um bucket e um usuário RBAC do Sync Gateway.
1 |
doca executar -d -nome cb -rede demonstração -p 8091-8094:8091-8094 -p 11210:11210 conectav/servidor:6.0.1-empresa |
Implementação do Sync Gateway
O Sync Gateway será iniciado com o arquivo de configuração denominado sync-gateway-config.json que está localizado na pasta "testdata" do repositório clonado.
1 |
doca executar -p 4984-4985:4984-4985 -rede demonstração -nome sincronização-portal -d -v `pwd`/dados de teste/sincronização-portal-configuração.json:/etc/portais de sincronização/portais de sincronização.json couchbase/sincronização-portal:2.5.0-empresa -adminInterface :4985 /etc/portais de sincronização/portais de sincronização.json |
Experimente
Confirme se o Sync Gateway está em funcionamento e se o ponto de extremidade _expvar está acessível, executando o seguinte enrolar
comando. Se as coisas estiverem funcionando conforme o esperado, você verá uma grande quantidade de estatísticas no console.
1 |
enrolar OBTER http://localhost:4985/_expvar |
Implementação do Sync Gateway Exporter
A imagem do docker do Sync Gateway Exporter está disponível em couchbasesamples/sync-gateway-prometheus-exporter:latest
.
O sgw.url
config é de particular interesse. Ela aponta para o servidor Sync Gateway. Se estiver trabalhando com uma implantação existente do Couchbase Mobile, certifique-se de definir a opção sgw.url
para apontar para o nó do Sync Gateway em sua configuração.
O exportador se vincula a 0.0.0.0
por padrão. Você pode substituir isso usando --web.listen-address
opção.
1 |
doca executar -p 9421:9421 -rede demonstração -nome exportador -d amostras de bases de sofá/sincronização-portal-prometeu-exportador:mais recente --registro.nível=depurar --sgw.url=http://sync-gateway:4985 |
Experimente
Confirme se o exportador está funcionando com o seguinte enrolar
comando.
1 |
enrolar http://localhost:9421/metrics |
Se tudo estiver funcionando, haverá várias métricas exibidas no console. Confirme que o "sgw_up 1".

Implantação do Prometheus Server
Agora que temos o Exporter exportando estatísticas do Sync Gateway, configuraremos o Prometheus para pesquisar métricas no Exporter.
Explorando o arquivo prometheus.yml
O prometheus.yml
especifica a configuração com a qual o servidor Prometheus é iniciado. Ele está localizado na pasta "testdata" do repositório clonado. Vamos examinar o conteúdo desse arquivo.
1 2 3 |
global: intervalo de raspagem: 5s evaluation_interval: 5s |
1 2 3 4 5 6 7 8 |
rule_files: - &lificador;apos;/etc/prometeu/regras/*&lificador;apos; scrape_configs: - nome_do_emprego: swg static_configs: - alvos: - exportador:9421</código></pré> |
- O
intervalo de raspagem
especifica o intervalo de sondagem. Você pode ajustá-lo de acordo com suas necessidades - O
rule_files
especifica o local do arquivo de regras do Prometheus. O arquivo de regras do Prometheus,sync-gateway.rules.yml
está localizado emtestdata/rules/
no repositório clonado. As regras são usadas pelo Prometheus para acionar alertas. Fornecemos um conjunto básico de regras como ponto de partida. Você pode personalizar as regras conforme necessário. O arquivo de regras é montado em/etc/prometheus/rules
quando o contêiner do docker é iniciado. - O
alvos
especifica os destinos do Prometheus que são o exportador. Você pode ter vários exportadores se tiver vários Sync Gateways. Nesse caso, você pode especificar estaticamente todos os endpoints do Exporter ou configurar Prometheus para descobrir os alvos.
Instalação da imagem da plataforma
Implantaremos a imagem oficial do Docker prom/prometheus
com o prometheus.yml
incluído no repositório clonado.
1 |
doca executar -p 9090:9090 -rede demonstração -nome prometeu -d -v `pwd`/dados de teste/prometeu.yml:/etc/prometeu/prometeu.yml -v `pwd`/dados de teste/regras:/etc/prometeu/regras baile/prometeu |
Experimente
Abrir a URL http://localhost:9090/graph
em um navegador da Web.
- Clique no botão "Insert metric at Cursor" (Inserir métrica no cursor) para ver a lista de métricas disponíveis do Sync Gateway.
- Clique em "Status"->"Targets" para ver a lista de exportadores e suas estatísticas
- Clique no botão de menu "Alerts" (Alertas) para ver o status dos alertas
Implementação do Grafana
Embora você possa usar a interface do usuário da Web do Prometheus para visualizar as estatísticas, usaremos o Grafana, pois é possível criar alguns painéis muito atraentes com ele, e o Grafana se integra bem ao Prometheus.
- Instalaremos a versão oficial do
grafana/grafana:6.2.0
imagem do docker. Ografana/data
no repositório clonado contém a pastagrafana.db
que é usado para manter o painel e outros metadados. Esse volume é montado emvar/lib/grafana
1 |
doca executar -p 3000:3000 -rede demonstração -nome grafana -d grafana/grafana:6.2.0 -v `pwd`/grafana/dados:/var/lib/grafana |
- Um painel padrão do "Couchbase Sync Gateway" chamado
dashboard.jsonnet
está disponível no repositório clonado como um jsonnet arquivo. Faça ografana
para gerar o correspondentedashboard.json
que pode então ser importado para o Grafana. O painel apresenta graficamente todas as métricas exportadas pelo Exporter. Você pode personalizá-lo de acordo com suas necessidades.
1 2 3 4 5 6 7 8 |
# Inclua os submódulos relevantes de que o jsonnet precisa git submódulo atualização -inicial -rebase -remoto -recursivo # Crie o destino do grafana para gerar o arquivo dashboard.json fazer grafana |
Experimente
- Abrir a URL
http://localhost:3000
em um navegador da Web. Você deverá ver a tela de login. Faça login com as credenciais padrão de "admin" e a senha de "admin". Você pode alterá-las após o login inicial.

- A próxima etapa seria adicionar o "Prometheus" como a "Fonte de dados" e importar o arquivo json "Sync Gateway dashboard" que foi gerado anteriormente. Você poderia fazer isso manualmente seguindo as opções do menu. Simplificamos esse processo e fornecemos um script que fará tudo isso para você!
Execute o script a partir da raiz do seu repositório clonado usando o comando abaixofazer
nografana-dev
alvo. Isso faz o seguinte
-
- (Re)Gera o
dashboard.json
painel de controle dodashboard.jsonnet
arquivo - Usa a API do Grafana para adicionar o Prometheus como fonte de dados
- Usa a API do Grafana para carregar o
dashboard.json
gerado na etapa anterior
- (Re)Gera o
1 |
fazer grafana-dev |
- Depois que o script for executado com êxito, você deverá atualizar a interface do usuário da Web do Grafana em seu navegador da Web. Você verá o "Couchbase Sync Gateway Dashboard" na lista de painéis disponíveis. O painel apresenta graficamente todas as estatísticas relatadas pelo Sync Gateway. Você pode personalizar o painel.

- Clique em "Couchbase Sync Gateway Dashboard" para ver as estatísticas. Você pode filtrá-las por Sync Gateway (se tiver mais de um) ou banco de dados

É isso aí! Você configurou com sucesso o monitoramento com o Prometheus e o Grafana. Agora você pode conduzir replicações com clientes do Couchbase Lite e monitorá-las. O painel padrão do Sync Gateway é um ponto de partida. Você pode personalizar o painel, editando o arquivo dashboard.jsonnet
ou diretamente pela interface do usuário do Grafana.
TL;DR
Em vez de executar cada contêiner de forma independente, você pode fazer um lançamento de vários contêineres usando docker-compose.
O repositório inclui um docker-compose.yml
que pode ser usado para iniciar todos os contêineres, inclusive o Couchbase Server, o Sync Gateway, o Exporter, o Prometheus e o Grafana. Há algumas ressalvas. Você pode saber mais sobre isso aqui
1 |
doca-compor para cima |
O que vem a seguir
Usando o Sync Gateway Exporter, você pode exportar as estatísticas do Sync Gateway para o Prometheus e visualizá-las usando ferramentas de visualização como o Grafana. Isso simplifica muito o monitoramento dos seus clusters do Couchbase Mobile. Além do Exporter, fornecemos um painel padrão do Grafana que você pode personalizar. Ao personalizar o próprio painel, você também pode personalizar as regras para alertas. Embora tenhamos discutido a instalação usando contêineres do docker, você também pode instalar os binários diretamente.
No próximo blog, discutiremos como você pode implantar o Exporter em um cluster que executa o Kubernetes. Portanto, fique atento a isso!
Se tiver dúvidas ou comentários, deixe um comentário abaixo ou entre em contato comigo pelo Twitter @rajagp ou envie-me um e-mail priya.rajagopal@couchbase.com. O Fóruns do Couchbase são outro bom lugar para entrar em contato com perguntas.
Agradecimentos
Gostaria de agradecer a Carlos Becker por seu trabalho na criação da primeira versão do Sync Gateway Exporter.