Observabilidade

Usar uma malha de serviço permite observar o tráfego de e para serviços, o que permite monitoramento e depuração mais avançados sem alterações de código no próprio serviço. Na arquitetura de proxy secundário que o Traffic Director usa, o proxy é o componente que processa as solicitações e fornece as informações de telemetria necessárias. As informações de telemetria precisam ser coletadas e armazenadas em um local centralizado para uso posterior, como análise de dados, alertas e solução de problemas.

Neste guia, demonstramos como gerar rastreamento e geração de registros para o proxy Envoy. Também mostramos como exportar as informações para o Cloud Trace e o Cloud Logging.

Configuração da demonstração

Neste guia, usamos a configuração a seguir para demonstrar o rastreamento e a geração de registros:

  • Um único aplicativo que detecta a porta HTTP e retorna o nome do host da VM que veiculou a solicitação. No diagrama, esse aplicativo está no canto superior direito, chamado Serviços HTTP (10.10.10.10:80). Uma ou mais VMs podem fornecer esse serviço.
  • Uma única VM do Compute Engine que executa um consumidor desse serviço. No diagrama, isso é chamado de VM do Compute Engine de demonstração.
  • Um proxy secundário do Envoy instalado e configurado pelo Traffic Director. No diagrama, isso é rotulado como Envoy.
  • Um aplicativo de consumidor de serviço, mostrado na caixa cinza, é o consumidor do serviço HTTP em execução em 10.10.10.10:80.
Aplicativo de demonstração para geração de registros e monitoramento do Stackdriver para Envoy (clique para ampliar)
Aplicativo de demonstração para geração de registros e monitoramento do Stackdriver para Envoy (clique para ampliar)
  1. O Traffic Director configura o proxy Envoy para balancear a carga do tráfego do serviço 10.10.10.10:80, armazenar as informações de registro de acesso para cada solicitação emitida para o serviço e gerar informações de rastreamento para o serviço.
  2. Depois que o consumidor envia uma solicitação para 10.10.10.10, o proxy sidecar encaminha a solicitação para o destino correto.
  3. O proxy sidecar também gera as informações de telemetria necessárias:
    1. Adiciona uma entrada ao registro de acesso no disco local com novas informações sobre a solicitação
    2. Gera uma entrada de trace e a envia para o Trace usando o rastreamento do Envoy em OpenCensus.
  4. O agente do Logging exporta esses dados para a API do Cloud Logging para que eles sejam disponibilizados na interface do Cloud Logging.

Pré-requisitos

Verifique se:

  1. A API Traffic Director está ativada e outros pré-requisitos são atendidos, conforme descrito em Como se preparar para a configuração do Traffic Director.
  2. A API Cloud Trace está ativada.
  3. A conta de serviço que a VM do Compute Engine usa tem o papel Agente do Cloud Trace configurado. Consulte a página Controle de acesso ao Trace para mais informações.
  4. A conta de serviço que a VM do Compute Engine usa tem o papel Gravador de registros configurado. Consulte a página Controle de acesso ao Logging para mais informações.
  5. As regras de firewall permitem tráfego para a VM que você configura como parte dessa configuração.

Como configurar o serviço de demonstração e o Traffic Director

Este guia usa vários scripts de shell para executar as etapas necessárias para configurar o serviço de demonstração. Revise os scripts para entender as etapas específicas que eles realizam.

  1. Inicie uma VM do Compute Engine e configure o serviço HTTP na VM.

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_service.sh
    chmod 755 setup_demo_service.sh && ./setup_demo_service.sh
    

    O script setup_demo_service.sh cria um modelo de VM que inicia o apache2 quando uma VM é iniciada e um grupo de instâncias gerenciadas que usa esse modelo. O script inicia uma única instância sem o escalonamento automático ativado.

  2. Configurar o roteamento do serviço 10.10.10.10 usando o Traffic Director

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_trafficdirector.sh
    chmod 755 setup_demo_trafficdirector.sh && ./setup_demo_trafficdirector.sh
    

    O script setup_demo_trafficdirector.sh configura os parâmetros necessários para o serviço gerenciado do Traffic Director, semelhante à configuração descrita em Como configurar o Traffic Director para Compute Engine com VMs.

  3. Inicie uma VM do Compute Engine que execute um consumidor do serviço HTTP, com o proxy secundário instalado e configurado na VM. No comando abaixo, substitua a variável gcp_project_id pelo ID do projeto ao qual as informações do Trace precisam ser enviadas. Normalmente, é o mesmo projeto ao qual a VM pertence.

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_client.sh
    chmod 755 setup_demo_client.sh && ./setup_demo_client.sh my_gcp_project_id
    

    O script setup_demo_client.sh cria uma VM do Compute Engine que tem um proxy Envoy pré-configurado para usar o Traffic Director. Isso é semelhante à configuração descrita em Como configurar o Traffic Director para o Compute Engine com VMs.

As novas configurações a seguir permitem o rastreamento e a geração de registros:

  • As variáveis de metadados do nó de inicialização TRAFFICDIRECTOR_ACCESS_LOG_PATH e TRAFFICDIRECTOR_ENABLE_TRACING ativam a geração de registros e o rastreamento, conforme descrito em Como configurar outros atributos para proxies sidecar.
  • Configuração de inicialização estática, permitindo a exportação de informações de trace para o Trace usando o OpenCensus.

OBSERVAÇÃO: é possível adicionar e modificar outros parâmetros de rastreamento por meio da configuração do ambiente de execução do Envoy.

Depois de executar esses scripts, faça login na VM td-observability-demo-client e acesse o serviço HTTP disponível em 10.10.10.10.

curl http://10.10.10.10

Nesse momento, o Envoy gera informações de registro de rastreamento e de acesso. A seção a seguir descreve como exportar registros e informações de rastreamento.

Como configurar a exportação do rastreador para o Cloud Trace

A configuração de inicialização do Envoy criada quando você executou o script setup-demo-client.sh é suficiente para gerar informações de rastreamento. Todas as outras configurações são opcionais. Se você quiser configurar parâmetros adicionais, consulte a página de configuração do OpenCensus Envoy e modifique as opções de rastreamento na configuração de inicialização do Envoy.

Depois de emitir uma solicitação de amostra para o servidor de demonstração (curl 10.10.10.10), acesse a interface do Trace (Trace > Lista do Trace) no Console do Google Cloud. Você verá um registro de trace correspondente à solicitação emitida.

Para mais informações sobre como usar o Trace, consulte a documentação.

Como configurar a exportação de registros de acesso para o Logging

Nesse estágio, o Envoy precisa gravar informações de registro de acesso no disco local da VM em que ele está sendo executado. Para exportar esses registros para o Logging, é preciso instalar o agente do Logging localmente. Isso requer a instalação e a configuração do agente do Logging.

Como instalar o agente do Logging

Instale o agente do Logging na VM a partir da qual as informações de registro são exportadas. Para este exemplo de configuração, a VM é td-observability-demo-vm.

curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh
sudo bash install-logging-agent.sh

Para mais informações sobre a instalação do agente do Logging, consulte o guia Como instalar o agente.

Como configurar o agente do Logging

É possível exportar os registros do Envoy como texto não estruturado ou estruturado.

Como exportar os registros do Envoy como texto não estruturado

Essa opção exporta registros de registro do registro de acesso para o Cloud Logging como texto bruto. Cada entrada no registro de acesso é exportada como uma única entrada para o Logging. Essa configuração é mais fácil de instalar, já que ela depende de um analisador distribuído com a versão atual do agente do Logging, mas é mais difícil filtrar e processar entradas de registro de texto brutos usando essa opção.

  1. Faça o download e instale o arquivo de configuração de exportação não estruturado do Envoy.

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_unstructured.conf
    sudo cp envoy_access_fluentd_unstructured.conf /etc/google-fluentd/config.d/envoy_access.conf
    
  2. Reinicie o agente. As alterações entrarão em vigor quando o agente é iniciado.

    sudo service google-fluentd restart
    

Como exportar os registros do Envoy em um formato estruturado

  1. Instale o analisador de registros de acesso do Envoy no GitHub.

    sudo /opt/google-fluentd/embedded/bin/gem install fluent-plugin-envoy-parser
    
  2. Faça o download e instale o arquivo de configuração para exportar registros de acesso do Envoy em um formato estruturado:

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_structured.conf
    sudo cp envoy_access_fluentd_structured.conf /etc/google-fluentd/config.d/envoy_access.conf
    
  3. Reinicie o agente. As alterações entrarão em vigor quando o agente é iniciado.

    sudo service google-fluentd restart
    

Para mais informações sobre a configuração do agente do Logging, consulte Como configurar o agente.

Verificação

  1. Na VM do proxy sidecar, gere uma solicitação para o serviço de demonstração. Isso cria um novo registro local. Por exemplo, é possível executar curl 10.10.10.10:
  2. Acesse Logging > Visualizador de registros no Console do Cloud. No menu suspenso, selecione o tipo de registro envoy-access. Você vê uma entrada de registro para a solicitação mais recente no formato não estruturado ou estruturado, dependendo do tipo de configuração escolhido anteriormente.

Como solucionar problemas

Se a configuração estiver concluída, mas as entradas de registro ou de trace não estiverem disponíveis, verifique o seguinte:

  1. As contas de serviço da VM do Compute Engine têm as permissões necessárias do IAM do Trace e Logging, conforme especificado nos pré-requisitos. Para informações sobre permissões do IAM do Trace, consulte Controle de acesso. Para informações sobre permissões do Logging, consulte Controle de acesso.
  2. Para geração de registros: verifique se não há erros em /var/log/google-fluentd/google-fluentd.log.
  3. Para geração de registros: certifique-se de que as novas entradas apareçam no arquivo de registros de acesso local quando as solicitações forem emitidas.