Para melhorar a acessibilidade de nossas estatísticas, o Couchbase Lançamento do Sync Gateway 2.8 integra o Exportador Prometheus diretamente no Sync Gateway, reduzindo as etapas necessárias para configurar uma pilha de monitoramento. Nesta publicação, discutiremos o histórico de onde vêm as estatísticas e as etapas para configurar o Prometheus Server e o painel do Grafana para monitoramento nativo da nuvem e visualização de estatísticas.
Esse recurso estava disponível em Visualização do desenvolvedor na versão 2.8, mas depois se tornou um recurso totalmente compatível, ativado por padrão na versão 2.8.2.
Em geral, esta postagem do blog segue o mesmo formato da versão anterior do "Monitoramento do Couchbase Sync Gateway com o Prometheus e o Grafana" que discutiu o monitoramento do Sync Gateway usando um sistema autônomo Exportador do Prometheus do Sync Gateway.
Histórico
Relatório de estatísticas do gateway de sincronização
As estatísticas do Sync Gateway são publicadas em JSON e podem ser facilmente acessadas por meio do ponto de extremidade _expvar que, antes da versão 2.8, era exposto apenas na interface REST do administrador. Como parte da versão 2.8, um novo métricas foi adicionada, expondo as estatísticas do Sync Gateway em uma porta dedicada e garantindo que a interface de administração continue protegida. A nova métricas também expõe uma nova interface /_metrics que expõe as estatísticas em Formato compatível com o Prometheus. Veja abaixo um exemplo de todas as categorias de estatísticas disponíveis.
Prometeu
O Prometheus é uma plataforma de monitoramento e alerta de sistemas de código aberto, hospedada pela Cloud Native Computing Foundation. No centro da plataforma está o servidor Prometheus, responsável por sondar os "alvos do Prometheus" para obter estatísticas e armazená-las como dados de séries temporais. Os alvos do Prometheus são configurados estaticamente ou podem ser descobertos pelo Prometheus.
Grafana
O Grafana é uma plataforma de alerta e visualização de dados de código aberto. Ele suporta o Prometheus como fonte de dados e pode ser usado para criar painéis abrangentes.
Gateway de sincronização Prometheus
Conforme declarado anteriormente, o Prometheus precisa de um alvo para pesquisar as estatísticas. Antes do Sync Gateway 2.8, havia um exportador autônomo que ficava fora do Sync Gateway. Tratava-se de um aplicativo separado que, quando pesquisado, obtinha as métricas expvar JSON do Sync Gateway e as convertia no formato do Prometheus. Para melhorar a experiência no futuro, isso não é mais necessário, pois o exportador agora foi integrado diretamente ao Sync Gateway, acessível no endpoint /_metrics. Isso significa que, uma vez que a configuração tenha sido definida, o Sync Gateway pode ser usado diretamente como um destino para o Prometheus.
Arquitetura de implantação
- Sync Gateway - A interface de métricas pode ser exposta em qualquer porta escolhida. Os únicos dados disponíveis nessa porta são as estatísticas expvar e as estatísticas do Prometheus.
- O Prometheus Server pesquisará continuamente as instâncias do Sync Gateway para obter estatísticas. O servidor usa os arquivos yaml para descobrir as instâncias do Sync Gateway a serem pesquisadas e as regras yaml para enviar alertas ao gerenciador de alterações.
- O serviço Grafana se comunica com o Prometheus Server e o consulta usando a linguagem de consulta do Prometheus (promQL) e apresenta graficamente as estatísticas em um painel baseado na Web.
Configuração
No restante desta postagem, examinarei as etapas para configurar um cluster do Sync Gateway com monitoramento em vigor usando o Prometheus e o Grafana. Essas instruções são destinadas a um ambiente de desenvolvimento, mas podem ser facilmente modificadas para serem adequadas em um ambiente de produção.
Para facilitar a configuração, usaremos Docker para configurar o ambiente, no entanto, todas as etapas devem ser relativamente fáceis de traduzir em instalações diretas.
Criar uma rede Docker
Como há vários componentes e, portanto, vários contêineres envolvidos nesse processo, é recomendável executar todos os componentes na mesma rede do Docker. Portanto, criaremos uma rede do Docker chamada sgmonitoring usando o seguinte comando:
1 |
doca rede criar sgmonitoramento |
Configuração do servidor Couchbase
Uma instância do Couchbase Server também deve ser configurada para que o Sync Gateway se comunique com ela. Para facilitar o processo de configuração, usaremos uma imagem pré-configurada do Docker que contém o Couchbase Server v6.0.1 com o bucket de amostra de viagem e um usuário com a permissão "Application Access" que o Sync Gateway usará para se conectar.
Como alternativa, é possível instalar a imagem vanilla do Docker do Couchbase Server e configurar seu próprio bucket e usuário manualmente.
1 |
doca executar -d --nome couchbase --rede sgmonitoramento -p 8091-8094:8091-8094 -p 11210:11210 couchbase/servidor-caixa de areia:6.5.0 |
Configurar o Sync Gateway
Para configurar o Sync Gateway, primeiro precisamos definir uma configuração apropriada que o conecte à nossa instância do Couchbase Server e exponha a interface de métricas. A configuração usada será a seguinte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
{ "interface": ":4984", "adminInterface": ":4985", "metricsInterface": ":4986", "registro": { "console": { "habilitado": verdadeiro, "log_level": "info", "log_keys": ["*"], "color_enabled": verdadeiro }, "info": { "rotação": { "max_size": 1, "max_age": 30, "localtime": verdadeiro } } }, "bancos de dados": { "amostra de viagem": { "usuários": { "admin": { "senha": "senha", "admin_channels": [ "*" ] } }, "servidor": "http://couchbase:8091", "nome de usuário": "admin", "senha": "senha", "bucket" (balde): "amostra de viagem", "enable_shared_bucket_access": verdadeiro, "use_views": falso, "num_index_replicas": 0, "import_docs": verdadeiro } } } |
A maioria dessas opções de configuração deve ser relativamente familiar, sendo que a única nova opção é metricsInterface
. Conforme mencionado anteriormente, essa opção permitirá que os expvars JSON e as métricas formatadas do Prometheus sejam expostos em uma porta separada do restante das interfaces REST do Sync Gateway. Por padrão, a interface de métricas é exposta em "127.0.0.1:4986", o que significa que, por padrão, ela só está disponível no localhost. No exemplo de configuração acima, modificamos isso para ":4986", o que significa que ela será exposta em qualquer endereço na porta 4986. Essa configuração pode ser salva em qualquer lugar, mas o comando a seguir presumirá que ela está salva em seu diretório atual como "sync-gateway-config.json"
Em seguida, podemos abrir nossa instância do Sync Gateway com o seguinte:
1 |
doca executar -d --nome portais de sincronização --rede sgmonitoramento -p 4984-4986:4984-4986 -v `pwd`/sincronização-portal-configuração.json:/etc/portais de sincronização/portais de sincronização.json` couchbase/sincronização-portal:2.8.0-empresa /etc/portais de sincronização/portais de sincronização.json |
Para confirmar que o Sync Gateway está funcionando e que a metricsInterface está ativa, tente obter as estatísticas do Prometheus no endpoint acessível em http://localhost:4986/_metrics. Abaixo está um trecho da parte inferior das métricas no endpoint.
Obter configuração de amostra do Prometheus e do Grafana
Neste ponto da configuração, temos uma instância do Sync Gateway se comunicando com o Couchbase Server e essa instância tem seu endpoint de métricas do Prometheus exposto.
As próximas etapas configurarão os servidores Prometheus e Grafana. Temos arquivos de configuração do Prometheus pré-preparados e um exemplo de painel do Grafana que pode ser encontrado no diretório de exemplos do repositório do Sync Gateway no GitHub. Isso pode ser obtido simplesmente executando o comando abaixo em seu diretório de trabalho.
1 |
git clone https://github.com/couchbase/sync_gateway.git |
Prometeu
Agora precisamos configurar o Prometheus Server que lerá o nosso endpoint /_metrics.
Configurar o arquivo prometheus.yml
Isso prometheus.yml
configura a configuração básica do servidor Prometheus. Um exemplo prometheus.yml
está localizado no repositório do Sync Gateway baixado anteriormente, dentro da pasta examples/prometheus. Há vários parâmetros no arquivo, cada um deles explicado abaixo:
1 2 3 |
global: intervalo de raspagem: 5s evaluation_interval: 5s |
intervalo de raspagem
é um parâmetro que especifica a frequência com que o Prometheus Server pesquisará o endpoint de métricas.evaluation_interval
é um parâmetro que especifica a frequência com que as regras são avaliadas. As regras são explicadas com mais detalhes abaixo.
1 2 |
rule_files: - '/etc/prometheus/rules/*'' |
arquivos_regras
especifica o local do diretório do arquivo de regras do Prometheus. Preparamos previamente um arquivo de regras do Prometheus localizado, novamente, no diretório de exemplos em examples/prometheus/rules/sync-gateway.rules.yml, que deve ser montado no diretório /etc/prometheus/rules, conforme definido no arquivo de configuração acima. Essa montagem será mostrada como parte do comando de configuração do contêiner do docker. O arquivo de regras de exemplo contém alguns alertas e um registro que agregará a contagem de consultas em um novo registro chamado total_queries.
1 2 3 4 5 |
scrape_configs: - nome_do_emprego: swg static_configs: - alvos: - portais de sincronização:4986/_metrics |
- O scrape_configs
aqui está sendo usado para especificar os alvos com os quais o Prometheus se comunicará para coletar estatísticas. Isso especifica que o nome do alvo é "swg" e que esse alvo pode ser pesquisado em sync_gateway:4986/_metrics. Quando fazemos parte da mesma rede Docker, podemos nos comunicar com outros contêineres com seus nomes, e é por isso que sync_gateway pode ser usado para nos comunicarmos com nossa instância do Sync Gateway.
Configurar o contêiner do Docker
Navegue até o diretório clonado do sync_gateway e execute o comando abaixo. Essa navegação é necessária para acessar os arquivos yaml usados no comando abaixo; como alternativa, esses arquivos podem ser movidos para o diretório de trabalho de sua escolha.
1 |
doca executar -d --nome prometeu --rede sgmonitoramento -p 9090:9090 -v `pwd`/exemplos/prometeu/prometeu.yml:/etc/prometeu/prometeu.yml -v `pwd`/exemplos/prometeu/regras:/etc/prometeu/regras baile/prometeu |
Isso deve configurar um contêiner do Prometheus com a instância do Sync Gateway como destino. Isso pode ser explorado acessando http://localhost:9090 em um navegador da Web. Verifique se o destino foi configurado corretamente clicando nos botões "Status" e, em seguida, "Targets". Certifique-se de que o destino esteja (1/1 ativo)
Grafana
Agora vamos configurar o Grafana, que nos permitirá visualizar as estatísticas. Mais uma vez, conforme mencionado anteriormente, preparamos um painel do Grafana que mostra a maioria das estatísticas disponíveis de uma forma que consideramos útil; no entanto, ele é totalmente configurável na interface do usuário da Web para que você possa alterá-lo para melhor atender às suas necessidades.
Primeiro, é necessário instalar a imagem do Grafana Docker usando o comando abaixo:
1 |
doca executar -d --nome grafana --rede sgmonitoramento -p 3000:3000 -v `pwd`/grafana/dados:/var/lib/grafana grafana/grafana |
O sinalizador -v nesse comando vinculará o banco de dados do Grafana que é usado para persistir o painel e outros dados relevantes. No comando acima, estamos associando esse diretório ao seu diretório atual dentro de uma pasta grafana/data; no entanto, você pode associá-lo a outro lugar, se necessário.
O painel padrão está disponível como parte do repositório do Sync Gateway no diretório examples/grafana. Nesse diretório, você tem duas opções:
- Executar
criar grafana
isso gerará o arquivo dashboard.json do Grafana, que pode ser importado para o Grafana. Há dois métodos para fazer isso: upload via navegador ou upload via API. - Executar
fazer grafana-dev
que executará o comando acima para gerar o arquivo dashboard.json e, em seguida, tentará carregar o painel em uma instância do Grafana que deverá estar em execução no localhost:3000, bem como configurar a fonte de dados do Prometheus, que deverá estar em execução na porta 3000, cujo nome do contêiner é "prometheus".
Observe que esses comandos exigem Golang e Jsonnet deve ser instalado para que seja executado com êxito. Para obter mais informações sobre requisitos e possíveis etapas de solução de problemas, visite o site LEIAME.
Após uma execução bem-sucedida do script, o painel do Sync Gateway deverá estar disponível no Grafana. Para verificar, basta abrir o Grafana em seu navegador da Web e fazer login. As credenciais padrão serão o nome de usuário "admin" e a senha "admin".
Uma vez conectado, você deverá encontrar o "Couchbase Sync Gateway Dashboard" na lista de painéis disponíveis.
Clique nessa opção e você poderá ver todas as diferentes estatísticas que foram representadas graficamente no painel padrão:
Cada um dos painéis é totalmente configurável e, ao clicar neles, você poderá ver com relativa facilidade como esse gráfico específico ou outro componente é criado. O painel, embora totalmente funcional, não se destina realmente a ser usado na produção, mas sim como um exemplo do que é possível e de como você pode criar um painel para dar melhor suporte ao seu caso de uso específico.
Então, com isso, está tudo pronto! Configuramos com êxito o monitoramento do Sync Gateway usando o exportador integrado do Prometheus e o painel do Grafana.
Resumo
O novo ponto de extremidade de métricas no Sync Gateway simplifica muito o monitoramento da integridade e do status do cluster do Sync Gateway. Ao criar a funcionalidade do exportador do Prometheus diretamente no Sync Gateway, ele torna todo o processo relativamente fácil, eliminando a necessidade de um exportador separado. Isso é especialmente verdadeiro no caso de ambientes nativos da nuvem, onde é possível eliminar a necessidade de implantar e gerenciar um contêiner de exportador separado usando um carro lateral padrão.
Também fornecemos o painel do Grafana para mostrar facilmente os recursos das estatísticas fornecidas pelo Sync Gateway e o exportador do Prometheus. Ao personalizar esse painel, você pode ajustar os gráficos para monitorar melhor as estatísticas aplicáveis à sua configuração.
Se tiver alguma dúvida ou feedback, deixe um comentário abaixo ou entre em contato comigo pelo e-mail jacques.rascagneres@couchbase.com