Apache APISIX integra-se ao Google Cloud Logging para melhorar o processamento de logs
API7.ai
December 22, 2021
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
- Abra seu navegador e visite a página inicial do Google Cloud.
- Insira seu nome de usuário e senha para fazer login no console do Google Cloud.
- Clique no menu esquerdo do console do Google Cloud e selecione "IAM & Admin > Criar um Projeto" para começar a criar um projeto.
- Insira um nome para o projeto, selecione um nome de organização e clique em "CREATE" para criar o projeto.
- Quando o projeto for criado com sucesso, o canto superior direito do console indicará que a criação foi bem-sucedida.
- 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.
- 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.
- Clique em "CREATE SERVICE ACCOUNT" para criar a conta de serviço.
- 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".
- Clique em "Role" e digite "Logging Admin" na caixa de pesquisa para pesquisar essa função e selecione "Logging Admin" como a função.
- 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.
- Clique em "Manage keys" na última coluna da conta de serviço para entrar na interface de gerenciamento de chaves secretas.
- Clique em "ADD KEY > Create new key" para começar a criar uma nova chave secreta.
- 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.
- 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.
Configurar o Apache APISIX
Ativar o plugin google-cloud-logging
Opção 1: Configuração de upload do arquivo de chave
- Faça o upload do arquivo de chave privada para o servidor do nó do Apache APISIX.
- 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
- Abra o arquivo de chave privada.
- Configure o valor de
project_id
paragoogle-cloud-logging.auth_config.project_id
. - Configure o valor de
private_key
paragoogle-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
Nome | Obrigatório | Valor Padrão | Descrição |
---|---|---|---|
auth_config | Não | n/a | Arquivo de Chave Privada do Google Cloud Logging. Ou auth_config ou auth_file deve ser configurado. |
auth_config.private_key | Sim | n/a | Chave Privada do Google Cloud Logging. |
auth_config.project_id | Sim | n/a | ID do Projeto da Conta de Serviço do Google. |
auth_config.token_uri | Não | oauth2.googleapis.com/token | A URI do token solicitando a conta de serviços do Google. |
auth_config.entries_uri | Não | logging.googleapis.com/v2/entries | API de Escrita de Entrada de Log do Google Log Service. |
auth_config.scopes | Nã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_file | Não | n/a | Caminho para o arquivo JSON da conta de serviços do Google (ou auth_config ou auth_file deve ser configurado) |
ssl_verify | Não | TRUE | Habilitar autenticação SSL, configurado de acordo com as opções da documentação do OpenResty. |
resource | Não | {"type": "global"} | Recursos Monitorados do Google, consulte MonitoredResource. |
log_id | Não | apisix.apache.org%2Flogs | ID do Log do Google, referência: LogEntry. |
max_retry_count | Não | 0 | Número máximo de tentativas antes da remoção do pipeline de processamento. |
retry_delay | Não | 1 | Número de segundos que a execução do processo deve ser atrasada se a execução falhar. |
buffer_duration | Não | 60 | A duração máxima (em segundos) da entrada mais antiga no lote deve ser processada primeiro. |
inactive_timeout | Não | 10 | Tempo máximo para atualizar o buffer em segundos. |
batch_max_size | Não | 100 | Tempo máximo para atualizar o buffer em segundos. |
Verificar se o plugin está funcionando normalmente
-
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
-
Abra seu navegador e visite a página inicial do Google Cloud.
-
Insira seu nome de usuário e senha para fazer login no console do Google Cloud.
-
Visualize o log das solicitações enviadas através do navegador de logs, e os resultados retornados são mostrados abaixo.
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