Monitorar e Rastrear Microsserviços com o Serviço Application Performance Monitoring no Oracle Cloud

O monitoramento de microsserviços pode ser desafiador devido à complexidade de sua arquitetura e ao modelo de implementação distribuída.

Os aplicativos de microsserviços podem consistir em milhares de serviços independentes implantados em muitos sistemas diferentes, enquanto cada serviço é executado com seu processo. As abordagens tradicionais de monitoramento que se concentram em recursos específicos e monitores de integridade não são mais eficazes ao rastrear o fluxo de transações ou depurar problemas em aplicativos de microsserviços.

O Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) permite a instrumentação automática do OpenTracing em microsserviços e captura transações completas de usuário de ponta a ponta para ajudá-lo a entender a experiência do usuário e o desempenho da aplicação. O APM inclui uma implementação de sistema de rastreamento distribuído que permite rastreamento de nível de instância, de ponta a ponta e de transação. Ele também permite o monitoramento do servidor de aplicativos e da métrica de negócios.

Arquitetura

Essa arquitetura de referência demonstra como usar o Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) para monitorar um aplicativo de microsserviço implantado no cluster do OCI Kubernetes Engine (OKE).

Os diagramas de arquitetura abaixo mostram um aplicativo de microsserviços implantado em um cluster do Kubernetes. O aplicativo é hospedado em um servidor de aplicativos com duas réplicas de implantação e se conecta a um Oracle Autonomous Database usando JDBC. Os usuários finais acessam o aplicativo por meio de uma interface Web hospedada no Oracle Cloud. Cada diagrama mostra uma abordagem diferente:

  • OpenTelemetry Operador: A primeira abordagem usa o operador do Kubernetes para simplificar a injeção automática de agentes Java em máquinas virtuais Java (JVMs) executadas em pods do Kubernetes.

  • Sistema de arquivos compartilhado: A segunda abordagem usa um sistema de arquivos compartilhado para provisionar e implantar um agente do APM.

Ambos os métodos podem monitorar servidores de aplicativos Java ou estruturas, como o Oracle WebLogic Server ou Spring Boot, implantados no Kubernetes.

O diagrama a seguir mostra a implementação do Operador OpenTelemetry:



apm-microsserviços-telemetria aberta-oracle.zip

Os dados fluem nesta arquitetura da seguinte forma:

A: Implantar o Agente Java do APM nos pods do Kubernetes.
  1. Crie um domínio do APM no OCI e obtenha o URL do ponto final de upload de dados e as chaves de dados privadas e públicas do domínio.
  2. Crie um sistema de arquivos compartilhado no OCI e crie objetos de armazenamento do Kubernetes, como um volume persistente no cluster do OKE.
  3. Faça download do agente Java do APM no domínio do APM e provisione-o no volume montado.
  4. Implante o agente do APM no aplicativo atualizando os arquivos YAML para as implantações do Kubernetes ou StatefulSets.

B: O operador OpenTelemetry faz download automaticamente do Agente Java para o cache local. O Agente Java é instalado localmente em cada uma das réplicas do cluster do OKE.

C: Rastreamentos, intervalos e métricas de servidor e JDBC são enviados ao domínio do APM. Depois que os pods do Kubernetes são reiniciados, rastreamentos e intervalos do servidor são enviados para o domínio do APM no qual o URL do ponto final de upload de dados está localizado.

D: Rastreamentos, intervalos e métricas do browser são enviados ao domínio do APM. Os dados coletados podem ser visualizados nos painéis de controle do APM e no Trace Explorer para análise de desempenho e disponibilidade.

O diagrama a seguir mostra a implementação do sistema de arquivos compartilhados:



apm-microsserviços-arco-oracle.zip

Os dados fluem nesta arquitetura da seguinte forma:

A: Implantar o Agente Java do APM nos pods do Kubernetes.
  1. Crie um domínio do APM no OCI e obtenha o URL do ponto final de upload de dados e as chaves de dados privadas e públicas do domínio.
  2. Crie um sistema de arquivos compartilhado no OCI e crie objetos de armazenamento do Kubernetes, como um volume persistente no cluster do OKE.
  3. Faça download do agente Java do APM no domínio do APM e provisione-o no volume montado.
  4. Implante o agente do APM no aplicativo atualizando os arquivos YAML para as implantações do Kubernetes ou StatefulSets.

B: Rastreamentos, intervalos e métricas de servidor e JDBC são enviados ao domínio do APM. Depois que os pods do Kubernetes são reiniciados, rastreamentos e intervalos do servidor são enviados para o domínio do APM no qual o URL do ponto final de upload de dados está localizado.

C: Rastreamentos, intervalos e métricas do browser são enviados ao domínio do APM. Os dados coletados podem ser visualizados nos painéis de controle do APM e no Trace Explorer para análise de desempenho e disponibilidade.

Essa arquitetura tem os seguintes componentes:

  • Tenancy

    Uma tenancy é uma partição segura e isolada que a Oracle configura no Oracle Cloud quando você se inscreve no Oracle Cloud Infrastructure. Você pode criar, organizar e administrar seus recursos no OCI em sua tenancy. Uma tenancy é sinônimo de uma empresa ou organização. Normalmente, uma empresa terá uma única locação e refletirá sua estrutura organizacional dentro dessa locação. Uma única tenancy geralmente é associada a uma única assinatura, e uma única assinatura geralmente só tem uma tenancy.

  • Região

    Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, hospedando domínios de disponibilidade. As regiões são independentes de outras regiões, e grandes distâncias podem separá-las (entre países ou até mesmo continentes).

  • Compartimento

    Os compartimentos são partições lógicas entre regiões em uma tenancy do Oracle Cloud Infrastructure. Use compartimentos para organizar, controlar o acesso e definir cotas de uso para seus recursos do Oracle Cloud. Em um determinado compartimento, você define políticas que controlam o acesso e definem privilégios para recursos.

  • Rede virtual na nuvem (VCN) e sub-redes

    Uma VCN é uma rede personalizável definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes tradicionais de data center, as VCNs oferecem controle sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar após a criação da VCN. Você pode segmentar uma VCN em sub-redes, com escopo definido para uma região ou para um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não se sobrepõem a outras sub-redes da VCN. Você pode alterar o tamanho de uma sub-rede após a criação. Uma sub-rede pode ser pública ou privada.

    Nesta arquitetura, todas as instâncias de computação que hospedam o cluster Reds são anexadas a uma única sub-rede regional.

  • Listas de segurança

    Para cada sub-rede, você pode criar regras de segurança que especifiquem a origem, o destino e o tipo de tráfego permitido dentro e fora da sub-rede.

    Essa arquitetura adiciona regras de entrada para as portas TCP 16379 e 6379. A porta 6379 atende aos clientes Reds e a porta 16379 é usada pelo barramento de cluster Reds.

  • Kubernetes Engine

    O Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) é um serviço totalmente gerenciado, escalável e altamente disponível que você pode usar para implantar seus aplicativos em contêineres na nuvem. Você especifica os recursos de computação necessários aos seus aplicativos, e o serviço Kubernetes Engine os provisiona no Oracle Cloud Infrastructure em uma tenancy existente. O OKE usa o Kubernetes para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres entre clusters de hosts.

  • Autonomous Transaction Processing

    O Oracle Autonomous Transaction Processing é um serviço de banco de dados autônomo, autoprotegido e autorreparável otimizado para cargas de trabalho de processamento de transações. Você não precisa configurar nem gerenciar nenhum hardware, nem instalar nenhum software. O Oracle Cloud Infrastructure trata da criação, backup, aplicação de patches, upgrade e ajuste do banco de dados.

  • Monitoramento do Desempenho da Aplicação

    O Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) é uma solução baseada em plataforma como serviço (PaaS) que fornece visibilidade profunda do desempenho do seu aplicativo, do usuário final aos logs do aplicativo. O serviço integra informações de experiência do usuário, métricas de aplicativos e análise de dados de log.

    • Domínio do APM

      O domínio do APM é um tipo de recurso do Oracle Cloud Infrastructure (OCI) que contém os sistemas que o APM monitora.

      Cada domínio do APM é criado em um compartimento padrão do OCI, e você pode definir políticas de controle de acesso do OCI para conceder acesso ao domínio do APM a um conjunto específico de usuários.

    • Chaves de dados

      As chaves de dados são necessárias para garantir que o APM aceite as observações reunidas pelas origens de dados. As chaves de dados são geradas quando um domínio do APM é criado e são de dois tipos: chave de dados pública e chave de dados privada

    • URL do ponto final de upload de dados

      o ponto final de upload de dados é o URL para o qual uma origem de dados envia observações. O ponto final de upload de dados é gerado quando um domínio do APM é criado, e cada domínio do APM tem seu ponto final de upload de dados.

    • Operador OpenTelemetry

      O Operador OpenTelemetry é um operador do Kubernetes projetado para simplificar a injeção automática de agentes Java em JVMs em execução em pods do Kubernetes.

    • Agentes Java do APM

      Os agentes Java do APM registram intervalos e métricas dos servidores de aplicativos e os envia para o APM.

    • Agentes do browser do APM

      Os agentes do browser do APM registram as interações do usuário com sites e enviam intervalos e métricas para o APM.

    • Rastreamento e Intervalo

      Um rastreamento é o fluxo completo de uma solicitação à medida que ela passa por todos os componentes de um sistema distribuído em um determinado período. Um intervalo inclui operações ou unidades lógicas de trabalho dentro de um rastreamento e tem um nome, um horário de início e uma duração.

Recomendações

Seus requisitos podem ser diferentes da arquitetura descrita aqui. Use as recomendações a seguir como ponto de partida para o Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM).

  • Agente do browser do APM

    Implante o agente do browser do APM na interface Web do aplicativo para ativar o monitoramento do usuário final. Os rastreamentos começam com a ação do usuário no navegador.

  • Monitoramento sintético

    Configure o monitoramento sintético para monitorar a interface do usuário do aplicativo e os pontos finais da API para detectar proativamente problemas de disponibilidade e desempenho. Você pode criar monitores baseados em browser ou REST e programá-los para serem executados periodicamente de locais globais ou de dentro da VCN (rede virtual na nuvem) do tenant.

Considerações

Ao usar o Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM), considere o seguinte.

  • Chaves de dados

    Use chaves de dados personalizadas para gerenciar os dados enviados ao APM. Além das chaves de dados padrão, você pode criar suas próprias chaves de dados para fins específicos. No caso de grandes implantações em que muitas pessoas usam o APM, forneça chaves diferentes a diferentes proprietários de projetos para que você, como administrador de domínio do APM, possa controlar facilmente quais dados entram no APM e quais não.

    Por exemplo, o APM recebe um conjunto de dados de um projeto abandonado e você deseja desativar a coleta de dados. No entanto, como o proprietário do projeto deixou a organização, é difícil identificar quais agentes desativar. Você pode excluir a chave de dados usada pelo projeto para ignorar os dados associados a essa chave de dados.

  • Recursos do Kubernetes

    Ao configurar microsserviços, considere o uso de StatefulSets em vez de Implantações ao configurar recursos de pod do Kubernetes para rastrear melhor o histórico no APM. Os pods de implantação alteram seus ids sempre que são gerados novamente, StatefulSets são gerados novamente com o mesmo índice de ID (por exemplo, SS_0, SS_1, SS_2), o que simplifica o rastreamento do histórico com o APM.

  • Nome do serviço do APM

    Ao provisionar o agente Java do APM, especifique o nome do serviço usado no APM. Considere usar o nome Deployment/StatefulSet como o APM serviceName para rastreamento consistente no APM.

  • Amostra

    Use amostragem em aplicações de alto volume (por exemplo, 1 milhão de transações por segundo). O APM coleta todos os intervalos por padrão e permite rastrear todas as transações do seu aplicativo. No entanto, isso pode gerar muitos intervalos no caso de aplicativos de alto volume. Nesses casos, considere especificar explicitamente a configuração de amostragem para uma melhor eficiência de custos e para reduzir a quantidade de dados de rastreamento.

Implante

Consulte as instruções passo a passo nos workshops do Oracle LiveLabs a seguir ao implantar o agente Java do APM descrito nesta arquitetura de referência.

Confirmações

  • Author: Yutaka Takatsu
  • Contributors: Avi Huber, Robert Lies