Serviços de aplicativos Capella é um backend como serviço (BaaS) totalmente gerenciado, especificamente adaptado a aplicativos móveis, de IoT e de borda. Ele permite que os desenvolvedores e as organizações se integrem perfeitamente com Couchbase Capella e sincronizar dados em vários aplicativos de borda utilizando Couchbase Lite

Embora o Capella App Services seja um ambiente gerenciado, o monitoramento fornece informações e controle valiosos. Ele permite que você rastreie as principais métricas sobre a utilização de recursos, a taxa de transferência, as taxas de erro e muito mais, auxiliando assim na identificação de gargalos de desempenho e problemas de escalabilidade. 

Além disso, a detecção proativa de problemas por meio de alertas minimiza o tempo de inatividade dos aplicativos de ponta a ponta e garante a operação contínua. O planejamento da capacidade também se torna mais eficaz com o monitoramento, pois você analisa os padrões de uso dos recursos e toma decisões informadas sobre o dimensionamento da infraestrutura e a otimização dos custos. 

Nesta postagem do blog, exploraremos como você pode monitorar facilmente o Capella App Services usando Prometeu métricas e Grafana. Orientaremos você no processo de configuração do Prometheus para coletar e armazenar métricas do Capella App Services. Além disso, demonstraremos como aproveitar o Grafana para criar painéis atraentes que fornecem insights em tempo real sobre o desempenho do comportamento de seus aplicativos. 

Pré-requisitos

Antes de se aprofundar no tutorial, verifique se você tem os seguintes pré-requisitos:

Histórico

Métricas de UI da Web dos Serviços de Aplicativos Capella

O Capella App Services oferece recursos de monitoramento prontos para uso por meio de sua UI da Web, consulte a Documentos sobre monitoramento de pontos de extremidade de aplicativos. A guia Monitoring (Monitoramento) na interface do usuário da Web oferece uma interface intuitiva para representar graficamente várias métricas relacionadas ao volume e à taxa de transferência de documentos que estão sendo sincronizados por meio do App Services e de um determinado App Endpoint. Essas métricas incluem:

    • Nível do nó dos serviços de aplicativos: 
      • Bytes enviados e recebidos pelo nó
      • Utilização da CPU e da memória
    • Nível do endpoint do aplicativo: 
      • Total de falhas e sucessos de autenticação
      • Delta syncs solicitados e enviados
      • Total de documentos importados, lidos, escritos e rejeitados
      • Número de ativos replicações pull-only

API de métricas dos serviços de aplicativos Capella

Embora a interface do usuário da Web forneça um conjunto abrangente de métricas, talvez você precise de informações mais granulares e personalizáveis para atender às suas necessidades específicas de monitoramento. Nesses casos, a API de métricas dos serviços de aplicativos pode ser utilizada. Essa API fornece dados no formato Prometheus, permitindo que você obtenha uma ampla variedade de métricas de forma programática.

O API de métricas dos serviços de aplicativos oferece uma maneira de acessar métricas em tempo real relacionadas ao Capella App Services. Ele fornece um conjunto abrangente de métricas em diferentes níveis para monitorar e analisar o desempenho do sistema. 

Essas métricas incluem estatísticas globais de utilização do cluster, que fornecem informações sobre o consumo geral de recursos de um nó do App Services. Uma instância do App Service consiste em vários nós. 

Para cada nó, a API também oferece métricas por ponto de extremidade de aplicativo, permitindo que os usuários examinem as características específicas de desempenho e os padrões de utilização de pontos de extremidade individuais em um nó. Essas métricas incluem utilização de cache, Delta Sync, importação, replicação do Couchbase Lite (push e pull) e métricas relacionadas a consultas.

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 métricas 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 suporta o Prometheus como fonte de dados e pode ser usada para criar painéis abrangentes.

Arquitetura de implantação

 

    • Servidor Prometheus pesquisa continuamente a API de métricas que retorna o formato Prometheus para métricas. O servidor usa as regras definidas na seção rules.yaml para enviar alertas para o Gerenciador de alertas.
    • Grafana pesquisa métricas no Prometheus Server e as representa graficamente em um painel baseado na Web que pode ser acessado pelo navegador da Web. 

Configurar os Serviços de Aplicativo Capella para Acesso às Métricas

Antes de prosseguir com esta etapa, é importante garantir que você tenha o Capella App Services configurado e em execução. Caso ainda não tenha feito isso, você pode seguir o procedimento detalhado de tutoriais fornecido pela Capella para configurar um banco de dados de amostra, importar dados relevantes e criar um endpoint de aplicativo. Isso garantirá que você tenha a base necessária para seguir com eficácia este tutorial. 

Em primeiro lugar, vá para a seção Conectar tela de um Ponto de extremidade do aplicativo:

Configuração de credenciais de administrador: Configure as credenciais de administrador para seu endpoint de aplicativo. Isso garante que somente usuários autenticados com privilégios de administrador possam acessar os endpoints de administração e de métricas. A implementação da autenticação é altamente recomendada, pois aumenta a segurança do acesso aos dados por meio da API de métricas.

Configurar endereços IP permitidos: Para permitir que o host extraia métricas da API de métricas do Capella App Services, você precisa adicionar seu endereço IP à configuração "Allow IP Addresses" (Permitir endereços IP). Certifique-se de fornecer o endereço IP no formato CIDR. Essa etapa garante que o host designado tenha permissão para acessar e recuperar métricas da API.

Validar o acesso ao URL das métricas: Experimente o endpoint da API de métricas localmente usando cURL para verificar se você tem acesso às métricas com o nome de usuário e a senha fornecidos, por exemplo curl -u nome de usuário:senha metricsEndpointUrl.

Na saída acima, podemos observar métricas por endpoint que oferecem insights sobre endpoints específicos do App Services. Uma dessas métricas, sgw_database_dcp_received_timemede o tempo que leva para um documento ser recebido pelo Sync Gateway pelo DCP após uma operação de gravação. Essas métricas por ponto de extremidade são prefixadas com banco de dados sgw e ter entradas separadas para cada um dos nós e endpoints do App Services.

Além disso, a API de métricas de formato do Prometheus fornece métricas por nó que permitem o monitoramento da utilização global do nó. Essas métricas abrangem vários aspectos, como uso de memória, utilização da CPU e estatísticas de pilha e heap. Com o prefixo Em um ambiente de negócios, essas métricas oferecem informações específicas para nós individuais. Por exemplo, uma métrica como bytes de memória livre indica a quantidade de memória disponível em um nó específico.

Acima, podemos ver exemplos de métricas por endpoint, como sgw_database_dcp_received_timeque indica o tempo entre a gravação de um documento e o recebimento desse documento pelo Sync Gateway via DCP. As métricas por endpoint são prefixadas com banco de dados sgw e têm entradas separadas para cada um dos nós do App Services. Há também métricas por nó, como métricas de utilização global do nó, por exemplo, estatísticas relacionadas a memória, CPU, heap e pilha. Elas são prefixadas com , como o bytes de memória livre exemplo na captura de tela. 

Os consumidores podem agregar e transformar essas métricas para que sejam por App Endpoint, dependendo do caso de uso. 

Estabelecimento de uma estrutura de monitoramento

Em um cenário do mundo real, uma estrutura de monitoramento normalmente seria configurada em seu data center ou na nuvem. No entanto, para esta discussão, usaremos uma máquina de desenvolvimento local. Isso serve como um ambiente controlado para entender a configuração antes de implementá-la em uma escala maior. Para obter um guia prático, consulte a integração do Prometheus do Amazon CloudWatch para EC2: Agente do CloudWatch PrometheusEC2.

Criação de uma rede Docker

Ao usar o Docker, é recomendável executar todos os componentes na mesma rede do Docker. Crie uma rede do Docker chamada monitoramento: docker network create monitoring

Configuração do Prometheus

Substitua os espaços reservados {{admin_username}} e {{admin_password}} com as credenciais de administrador que você criou no Configurar a API de métricas dos serviços de aplicativos Capella seção.

O {{target_app_services_metrics_url}} refere-se ao Métricas que pode ser encontrado no URL do ponto de extremidade Conectar do seu endpoint de aplicativo. Ao adicionar esse URL à matriz de destinos de configuração do Prometheus, certifique-se de remover o protocolo (https://), pois ele já está especificado no esquema: https campo. Além disso, remova /metrics a partir do URL, conforme especificado em metrics_path.

Opcional: se desejar usar as métricas do Prometheus App Services para definir alertas para eventos como falhas de autenticação e acesso a documentos, você poderá criar um rules.yml dentro de um arquivo de configuração /regras e usar alguns dos nossos exemplos como ponto de partida, mas você pode personalizar o arquivo e adicionar mais alertas com base nas métricas do App Services da API de métricas. 

Além disso, você deve incluir rule_files em seu prometheus.yml veja o exemplo abaixo. O caminho /etc/prometheus/rules/* indica o local dos arquivos de regras dentro do contêiner do Prometheus e é relativo ao sistema de arquivos do contêiner.

Essas regras servirão como acionadores para alertas do Prometheus. Para obter orientação detalhada sobre a criação de alertas no Prometheus, consulte a seção Regras de alerta do Prometheus documentação.

Inicie o contêiner do Docker Prometheus usando o seguinte comando. Modifique-o para se adequar ao seu contexto: 

    • -name prometheus: Esse parâmetro define um nome personalizado para o contêiner. Nesse caso, o contêiner é denominado prometeu. Você pode se referir a esse nome ao interagir com o contêiner posteriormente.
    • -d: Esse parâmetro executa o contêiner no modo desanexado, o que significa que ele é executado em segundo plano e não é anexado ao terminal.
    • -v pwd/prometheus.yml:/etc/prometheus/prometheus.yml: Esse parâmetro especifica uma montagem de volume, permitindo que você mapeie um arquivo ou diretório na máquina host para um local dentro do contêiner. Isso permite que você forneça um arquivo de configuração personalizado para o Prometheus.
    • (Opcional) -v pwd/rules:/etc/prometheus/rules: Esse parâmetro especifica outra montagem de volume, mapeando o diretório de regras do diretório de regras no computador host para o caminho /etc/prometheus/rules dentro do contêiner. Isso permite que você forneça arquivos de regras personalizados para o Prometheus.
    • -Monitoramento de rede: Especificar que o Prometheus deve ser conectado à rede de "monitoramento".
    • prom/prometheus: Esse é o nome da imagem do Docker que será usada para criar o contêiner. Nesse caso, ele usa o prom/prometheus do Docker Hub.

Agora você deve conseguir abrir o Prometheus Dashboard em http://localhost:9090 e verifique se o alvo está respondendo com Estado=UP. Os alvos do Prometheus são os pontos de extremidade ou serviços que o Prometheus coleta para obter métricas. Quando um destino é rotulado como estado: ativo no Prometheus, significa que o Prometheus alcançou e raspou o alvo com sucesso, e é considerado saudável e disponível.

Visualização de métricas

Usando a interface do usuário da Web do Prometheus 

Agora, você pode visualizar os dados da API de métricas do seu endpoint de aplicativo usando a interface do usuário da Web do Prometheus no host local. A API de métricas fornece uma ampla gama de métricas disponíveis que podem ser exploradas usando o Prometheus Metrics Explorer. Você pode clicar na guia Graph e selecionar um dos atributos no menu suspenso, por exemplo sgw_resource_utilization_process_cpu_percent_utilization e clique em Execute (Executar).

Opcional: Se você tiver optado por criar um rules.yml com regras de alerta, as regras de alerta personalizadas são incluídas na imagem do Docker e montadas em /rules:/etc/prometheus/rules. Como resultado, esses alertas agora podem ser facilmente observados na interface do usuário da Web do Prometheus.

Usando o Grafana

Em vez de usar a interface da Web do Prometheus para visualizar as estatísticas, utilizaremos o Grafana, pois ele oferece a capacidade de criar painéis cativantes e se integra perfeitamente ao Prometheus. Para iniciar o Grafana e consumir métricas do seu servidor Prometheus em contêiner, siga estas etapas:

Puxe o mais recente Imagem do Docker do Grafana

Inicie o contêiner do Grafana Prometheus usando o seguinte comando e modifique-o para se adequar ao seu contexto: 

Por padrão, quando o contêiner do Grafana é eliminado ou interrompido, os dados armazenados no contêiner são perdidos. Você pode usar um banco de dados para manter os painéis e outros metadados essenciais. Para obter mais informações, consulte a seção Documentação do Grafana.

Abrir a URL http://localhost:3000 em um navegador da Web. Você deverá ver o Fazer login tela. Faça login com as credenciais padrão de administrador e senha de administrador. Você pode alterá-lo após o login inicial.

Adicione o Prometheus como uma fonte de dados: Na interface do usuário do Grafana, vá para a seção Configuração e selecione Fontes de dados. Clique em Adicionar fonte de dados e escolha Prometeu como o tipo de fonte de dados. Configure a fonte de dados do Prometheus: Forneça os detalhes necessários para configurar a fonte de dados do Prometheus.

Defina o URL como http://{{containerIPAddress}}:9090 (supondo que seu servidor Prometheus em contêiner esteja sendo executado na porta 9090), onde {{containerIPAddress}} pode ser obtido com o seguinte comando: 

Defina quaisquer outras configurações conforme necessário e clique em Salvar e testar para verificar a conexão com o Prometheus.

Depois que a conexão for estabelecida com a fonte de dados do Prometheus, poderemos prosseguir com a criação dos painéis do Grafana. Para importar um painel da interface do usuário do Grafana, vá para a seção Dashboards e clique em Gerenciar para acessar a página de gerenciamento do painel. Clique em Importação para importar um novo painel. Aqui está um exemplo de dashboard.json para você começar, que inclui painéis para a maioria das estatísticas principais da Metrics API.

Após a conclusão do processo de importação, você poderá visualizar e interagir com os painéis importados no Grafana. Esses painéis estão conectados ao seu servidor Prometheus em contêiner, que está configurado como uma fonte de dados no Grafana. Para acessar as métricas, navegue até o diretório Painéis e selecione o dashboard importado recentemente. Em alguns casos, talvez seja necessário reexecutar inicialmente as consultas associadas ao painel para obter as métricas mais recentes.

É isso aí! Você configurou com sucesso o monitoramento com o Prometheus e o Grafana para o Capella App Services. 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.json ou diretamente pela interface do usuário do Grafana.

Conclusão

Em conclusão, a utilização da API de métricas, juntamente com a implantação do Prometheus e do Grafana, permite o monitoramento avançado e em tempo real das métricas do Capella App Services. Essa integração permite que você detecte e resolva prontamente as anomalias por meio de regras de alerta personalizadas, levando a uma maior resiliência do aplicativo. Ao aproveitar essas tecnologias, você pode otimizar o desempenho e obter insights significativos para seus aplicativos Couchbase.

Se tiver dúvidas ou comentários, deixe um comentário abaixo ou entre em contato comigo pelo e-mail iveta.dulova@couchbase.com. O Fóruns do Couchbase são outro lugar onde você pode alcançar para nós. Valorizamos suas ideias e esperamos ouvir o que tem a dizer.

Autor

A ordem da postagem em relação a outras postagens. Iveta Dulova, gerente sênior de produtos

Posição vertical a partir do topo para iniciar o corte como uma porcentagem da altura da imagem.