Apache APISIX integra-se ao Google Cloud Logging para melhorar o processamento de logs

API7.ai

December 22, 2021

Ecosystem

Apache APISIX-Google Cloud Logging cover

O registro de logs é uma infraestrutura importante para sistemas distribuídos. Ele pode ajudar os desenvolvedores a observar o status da operação do serviço, melhorar a eficiência da solução de problemas e diagnóstico do serviço, e realizar análises multidimensionais para melhorar a estabilidade geral e a eficiência operacional do sistema.

Google Cloud Logging é um serviço de gerenciamento de logs em tempo real fornecido pelo Google Cloud, oferecendo armazenamento em nível de exabytes, pesquisa, análise e serviços de alerta. O navegador de logs do Google Cloud Logging permite que você pesquise, ordene e analise logs de forma fácil e eficiente, e o Google Cloud Logging também fornece consultas salvas e recursos gráficos ricos para tornar os resultados da triagem de logs recuperáveis e mais intuitivos.

O Apache APISIX já suportava a integração de HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS) e muitas outras soluções de serviços de logs em nuvem e de código aberto.

Recentemente, o Apache APISIX também adicionou suporte ao Google Cloud Logging, oferecendo aos usuários uma nova solução de registro de logs ao usar o Apache APISIX como gateway: use google-cloud-logging para encaminhar os logs de solicitação do Apache APISIX para o serviço Google Cloud Logging para análise e armazenamento.

Quando o plugin é ativado, o Apache APISIX pegará as informações de contexto da solicitação na Fase de Log e as serializará no LogEntry do Google Cloud Logging, então enviará os dados de log serializados para a fila de lotes, e quando a fila de lotes atingir um limite de tempo ou de entradas definido pelo usuário, os dados de log serão encaminhados para o serviço Google Cloud Logging via API do Google Cloud.

Este artigo explicará como configurar e usar o serviço Google Cloud Logging no Apache APISIX.

Configurar o Google Cloud

  1. Abra seu navegador e visite a página inicial do Google Cloud.
  2. Insira seu nome de usuário e senha para fazer login no console do Google Cloud.
  3. Clique no menu esquerdo do console do Google Cloud e selecione "IAM & Admin > Criar um Projeto" para começar a criar um projeto. criar um projeto
  4. Insira um nome para o projeto, selecione um nome de organização e clique em "CREATE" para criar o projeto. criar um projeto-2
  5. Quando o projeto for criado com sucesso, o canto superior direito do console indicará que a criação foi bem-sucedida. notificação do projeto
  6. Clique na janela para selecionar o projeto, ou selecione o caminho de operação do projeto na barra de navegação superior da página inicial do console. Após selecionar o projeto, você será redirecionado para a página inicial do console, onde já poderá ver os dados sobre o projeto atual na barra de navegação superior e as informações do projeto no centro de informações. visualizar seu projeto
  7. Após terminar de criar o projeto, você precisará criar uma conta de serviço para o projeto. Volte para a página inicial do console do Google Cloud e clique em "IAM & Admin > Conta de Serviço" no menu esquerdo para começar a criar uma conta de serviço. começar a criar uma conta de serviço
  8. Clique em "CREATE SERVICE ACCOUNT" para criar a conta de serviço. criar uma conta de serviço
  9. Insira o nome da conta de serviço e o ID (o ID geralmente segue a geração da conta), e então clique em "CREATE AND CONTINUE". criar uma conta de serviço-2
  10. Clique em "Role" e digite "Logging Admin" na caixa de pesquisa para pesquisar essa função e selecione "Logging Admin" como a função. criar uma conta de serviço-3
  11. Clique em "DONE" para concluir a criação da conta de serviço e pular para a página inicial da conta de serviço. Neste ponto, você pode ver a conta que acabou de criar e seus detalhes na lista. informações da conta de serviço
  12. Clique em "Manage keys" na última coluna da conta de serviço para entrar na interface de gerenciamento de chaves secretas. entrar na interface de gerenciamento de chaves secretas
  13. Clique em "ADD KEY > Create new key" para começar a criar uma nova chave secreta. criar uma nova chave secreta
  14. Selecione o tipo de chave secreta como "JSON" na página pop-up, e então clique em "CREATE" para criar uma nova chave secreta. criar uma nova chave secreta-2
  15. As informações da chave privada serão automaticamente baixadas para o diretório padrão de Downloads do sistema através do seu navegador. Quando você ativar o plugin google-cloud-logging, precisará usar as informações dessa chave privada, então salve o arquivo da chave privada. baixar sua chave

Configurar o Apache APISIX

Ativar o plugin google-cloud-logging

Opção 1: Configuração de upload do arquivo de chave

  1. Faça o upload do arquivo de chave privada para o servidor do nó do Apache APISIX.
  2. Configure o caminho do arquivo para o google-cloud-logging.auth_file, como mostrado abaixo:
curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
        "google-cloud-logging":{
            // Arquivo de Chave Privada do Google Cloud Logging
            "auth_file":"/path/to/apache-apisix-fcafc68c2f41.json",
            // Número máximo de entradas por fila de lotes.
            "batch_max_size": 1,
            // Tempo máximo para atualizar o buffer em segundos.
            "inactive_timeout": 10
        }
    }
}'

Opção 2: Declarar configurações em JSON

  1. Abra o arquivo de chave privada.
  2. Configure o valor de project_id para google-cloud-logging.auth_config.project_id.
  3. Configure o valor de private_key para google-cloud-logging.auth_config.private_key. Como mostrado abaixo:
curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
        "google-cloud-logging":{
            // Arquivo de Chave Privada do Google Cloud Logging
            "auth_config":{
                "project_id":"apache-apisix",
                "private_key":"-----BEGIN RSA PRIVATE KEY-----sua chave privada-----END RSA PRIVATE KEY-----"
            },
            // Número máximo de entradas por fila de lotes.
            "batch_max_size": 1,
            // Tempo máximo para atualizar o buffer em segundos.
            "inactive_timeout": 10
        }
    }
}'

Parâmetros

NomeObrigatórioValor PadrãoDescrição
auth_configNãon/aArquivo de Chave Privada do Google Cloud Logging. Ou auth_config ou auth_file deve ser configurado.
auth_config.private_keySimn/aChave Privada do Google Cloud Logging.
auth_config.project_idSimn/aID do Projeto da Conta de Serviço do Google.
auth_config.token_uriNãooauth2.googleapis.com/tokenA URI do token solicitando a conta de serviços do Google.
auth_config.entries_uriNãologging.googleapis.com/v2/entries
API de Escrita de Entrada de Log do Google Log Service.
auth_config.scopesNão["https://www.googleapis.com/auth/logging.read","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/logging.admin","https://www.googleapis.com/auth/cloud-platform"]Escopo de acesso da conta de serviços do Google, consulte: OAuth 2.0 Scopes for Google APIs
auth_fileNãon/aCaminho para o arquivo JSON da conta de serviços do Google (ou auth_config ou auth_file deve ser configurado)
ssl_verifyNãoTRUEHabilitar autenticação SSL, configurado de acordo com as opções da documentação do OpenResty.
resourceNão{"type": "global"}Recursos Monitorados do Google, consulte MonitoredResource.
log_idNãoapisix.apache.org%2FlogsID do Log do Google, referência: LogEntry.
max_retry_countNão0Número máximo de tentativas antes da remoção do pipeline de processamento.
retry_delayNão1Número de segundos que a execução do processo deve ser atrasada se a execução falhar.
buffer_durationNão60A duração máxima (em segundos) da entrada mais antiga no lote deve ser processada primeiro.
inactive_timeoutNão10Tempo máximo para atualizar o buffer em segundos.
batch_max_sizeNão100Tempo máximo para atualizar o buffer em segundos.

Verificar se o plugin está funcionando normalmente

  1. Execute o seguinte comando para enviar uma solicitação ao Google Cloud Logging.

    curl -i http://127.0.0.1:9080/logging.do
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Date: Fri, 10 Dec 2021 09:57:52 GMT
    Server: APISIX/2.11.0
    
    Olá, Google Cloud Logging
    
  2. Abra seu navegador e visite a página inicial do Google Cloud.

  3. Insira seu nome de usuário e senha para fazer login no console do Google Cloud.

  4. Visualize o log das solicitações enviadas através do navegador de logs, e os resultados retornados são mostrados abaixo. visualizar o log

Desativar o plugin google-cloud-logging

Você pode remover o bloco de configuração relacionado ao google-cloud-logging para desativar o plugin se terminar de usá-lo.

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
    }
}'

Resumo

Este artigo descreve os passos detalhados para integrar o Apache APISIX e o Google Cloud Logging. Esperamos que este artigo lhe dê uma compreensão mais clara do uso do Google Cloud Logging no Apache APISIX e facilite a operação prática subsequente.

O Apache APISIX não apenas se compromete a manter seu próprio alto desempenho, mas também sempre deu grande importância à construção de um ecossistema de código aberto. Atualmente, o Apache APISIX possui mais de 10 plugins relacionados a logs e suporta a integração com os principais projetos de logs de código aberto do setor.

Se você tiver a necessidade de integrar outros logs, visite o GitHub do Apache APISIX e deixe suas sugestões via issue; ou assine a lista de e-mails do Apache APISIX e expresse seus pensamentos por e-mail.

Artigos relacionados

Apache APISIX Integra com SkyWalking para Criar um Processamento Completo de Logs

Apache APISIX & RocketMQ Ajuda nas Capacidades de Monitoramento de Logs de API do Usuário

Tags: