A integração do nginx coleta métricas de conexão e registros de acesso. As métricas de conexão capturam o estado atual da conexão: ativa, leitura ou aguardando. Os registros de acesso são analisados em busca dos detalhes da conexão, que incluem campos mapeados para solicitação, cliente, servidor e mensagem.
Para ver mais informações sobre o nginx, consulte a documentação do nginx (em inglês).
Pré-requisitos
Para coletar a telemetria do nginx, instale o Agente de operações:
- Para métricas, instale a versão 2.1.0 ou mais recente.
- Para registros, instale a versão 2.1.0 ou mais recente.
Este receptor suporta as versões 1.18 e 1.20 do nginx.
Configurar a instância do nginx
É necessário ativar o módulo stub_status
no arquivo de configuração nginx para configurar
um URL acessível localmente, por exemplo, http://www.example.com/nginx_status
para a página de status. Para ativar o módulo stub_status
, siga estas
etapas:
Edite o arquivo
status.conf
ou crie o arquivo, se ele não existir. Você encontra esse arquivo no diretório de configuração nginx, normalmente encontrado em/etc/nginx/conf.d
.Adicione as seguintes linhas à seção
server
:location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }
O arquivo de configuração pode ser semelhante ao seguinte exemplo:
server { listen 80; server_name 127.0.0.1; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } location / { root /dev/null; } }
Atualize a configuração do nginx.
sudo service nginx reload
Execute o comando a seguir para automatizar as etapas anteriores. Ele cria
um arquivo status.conf
, se ele não existir, ou substitui o arquivo atual, se
existir. O comando ativa stub_status
, recarrega o nginx e verifica se as informações esperadas são expostas por meio do endpoint.
sudo tee /etc/nginx/conf.d/status.conf > /dev/null << EOF
server {
listen 80;
server_name 127.0.0.1;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
location / {
root /dev/null;
}
}
EOF
sudo service nginx reload
curl http://127.0.0.1:80/nginx_status
A saída de amostra é:
Active connections: 1 server accepts handled requests 23 23 74 Reading: 0 Writing: 1 Waiting: 0
Como alternativa, em vez de usar um arquivo status.conf
separado, você também pode
incorporar as linhas ao arquivo nginx.conf
principal, que
normalmente fica em um dos seguintes diretórios: /etc/nginx
, /usr/local/nginx/conf
ou /usr/local/etc/nginx
.
Configurar o agente de operações para nginx
Seguindo o guia para Configurar o Agente de operações, adicione os elementos necessários para coletar registros das instâncias do nginx e reinicie o agente.
Exemplo de configuração
Os comandos a seguir criam a configuração para coletar e ingerir telemetria para o nginx e reinicia o agente de operações.
Configurar a coleta de registros
Para ingerir logs do nginx, crie um receptor para os logs produzidos pelo nginx e, em seguida, crie um pipeline para o novo receptor.
nginx_access
Para configurar um receptor para os registros , especifique os seguintes campos:
Campo | Padrão | Descrição |
---|---|---|
exclude_paths |
Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths . |
|
include_paths |
[/var/log/nginx/access.log] |
Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada
arquivo. Um caractere curinga (* ) pode ser usado nos caminhos. |
record_log_file_path |
false |
Se definido como true , o caminho para o arquivo específico de que a gravação de registro foi recebida aparecerá na entrada de registro de saída como o valor do identificador agent.googleapis.com/log_file_path . Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado. |
type |
Este valor precisa ser nginx_access . |
|
wildcard_refresh_interval |
60s |
O intervalo em que os caminhos de arquivos curinga no include_paths são atualizados. Dado como uma duração de tempo, por exemplo, 30s ou 2m . Essa propriedade pode ser útil com capacidades de registro altas em que os arquivos de registro são alternados mais rapidamente do que o intervalo padrão. |
nginx_error
Para configurar um receptor para os registros , especifique os seguintes campos:
Campo | Padrão | Descrição |
---|---|---|
exclude_paths |
Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths . |
|
include_paths |
[/var/log/nginx/error.log] |
Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada
arquivo. Um caractere curinga (* ) pode ser usado nos caminhos. |
record_log_file_path |
false |
Se definido como true , o caminho para o arquivo específico de que a gravação de registro foi recebida aparecerá na entrada de registro de saída como o valor do identificador agent.googleapis.com/log_file_path . Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado. |
type |
Este valor precisa ser nginx_error . |
|
wildcard_refresh_interval |
60s |
O intervalo em que os caminhos de arquivos curinga no include_paths são atualizados. Dado como uma duração de tempo, por exemplo, 30s ou 2m . Essa propriedade pode ser útil com capacidades de registro altas em que os arquivos de registro são alternados mais rapidamente do que o intervalo padrão. |
O que é registrado
O logName
é derivado dos
IDs do receptor especificados na configuração. Os campos
detalhados dentro de LogEntry
são os seguintes.
Os registros nginx_access
contêm os seguintes campos no LogEntry
:
Campo | Tipo | Descrição |
---|---|---|
httpRequest |
objeto | Consulte HttpRequest |
jsonPayload.host |
string | Conteúdo do cabeçalho (geralmente não relatado pelo nginx) |
jsonPayload.level |
string | Nível de entrada de registro |
jsonPayload.user |
string | Nome de usuário autenticado da solicitação |
severity |
string (LogSeverity ) |
Nível de entrada de registro (traduzido). |
Os registros nginx_error
contêm os seguintes campos no LogEntry
:
Campo | Tipo | Descrição |
---|---|---|
jsonPayload.client |
string | Endereço IP do cliente (opcional) |
jsonPayload.connection |
número | Código da conexão |
jsonPayload.host |
string | Cabeçalho do host (opcional) |
jsonPayload.level |
string | Nível de entrada de registro |
jsonPayload.message |
string | Mensagem de registro |
jsonPayload.pid |
número | O ID do processo que emite o registro |
jsonPayload.referer |
string | Cabeçalho de referência (opcional) |
jsonPayload.request |
string | Solicitação HTTP original (opcional) |
jsonPayload.server |
string | Nome do servidor Nginx (opcional) |
jsonPayload.subrequest |
string | Subsolicitação Nginx (opcional) |
jsonPayload.tid |
número | ID da linha de execução em que o registro foi originado |
jsonPayload.upstream |
string | URI de solicitação upstream (opcional) |
severity |
string (LogSeverity ) |
Nível de entrada de registro (traduzido). |
Configurar a coleta de métricas
Para ingerir métricas do nginx, crie um receptor para as métricas produzidas pelo nginx e, em seguida, crie um pipeline para o novo receptor.
Esse receptor não aceita o uso de várias instâncias na configuração, por exemplo, para monitorar vários endpoints. Todas essas instâncias gravam na mesma série temporal, e o Cloud Monitoring não tem como diferenciá-las.
Para configurar um receptor para suas
métricas do nginx
, especifique os campos
a seguir:
Campo | Padrão | Descrição |
---|---|---|
collection_interval |
60s |
Um valor de time.Duration, como 30s ou 5m . |
server_status_url |
http://localhost/status |
O URL exposto pelo módulo de status do stub nginx. |
type |
Este valor precisa ser nginx . |
O que é monitorado?
A tabela a seguir fornece a lista de métricas que o agente de operações coleta da instância do nginx.
Tipo de métrica | |
---|---|
Tipo, tipo Recursos monitorados |
Rótulos |
workload.googleapis.com/nginx.connections_accepted
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/nginx.connections_current
|
|
GAUGE , INT64 gce_instance |
state
|
workload.googleapis.com/nginx.connections_handled
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/nginx.requests
|
|
CUMULATIVE , INT64 gce_instance |
Verificar a configuração
Nesta seção, descrevemos como verificar se você configurou corretamente o receptor do nginx. Pode levar um ou dois minutos para que o agente de operações comece a coletar telemetria.
Para verificar se os registros nginx estão sendo enviados para o Cloud Logging, faça o seguinte:
-
No console do Google Cloud, acesse a página do Análise de registros.
Acessar a Análise de registros
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Geração de registros.
- Digite a consulta a seguir no Editor e clique em Executar consulta:
resource.type="gce_instance" (log_id("nginx_access") OR log_id("nginx_error"))
Para verificar se as métricas do nginx estão sendo enviadas ao Cloud Monitoring, faça o seguinte:
-
No Console do Google Cloud, acesse a página do leaderboard Metrics Explorer:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Na barra de ferramentas do painel do criador de consultas, selecione o botão code MQL ou code MQL.
- Verifique se MQL está selecionado na opção de ativar/desativar MQL. A alternância de idiomas está na mesma barra de ferramentas que permite formatar sua consulta.
- Digite a consulta a seguir no Editor e clique em Executar consulta:
fetch gce_instance | metric 'workload.googleapis.com/nginx.requests' | every 1m
Ver painel
Para visualizar as métricas do nginx, é necessário ter um gráfico ou um painel configurado. A integração do nginx inclui um ou mais painéis para você. Todos os painéis são instalados automaticamente depois que você configura a integração e o Agente de operações começa a coletar dados de métricas.
Também é possível ver visualizações estáticas de painéis sem instalar a integração.
Para ver um painel instalado, faça o seguinte:
-
No console do Google Cloud, acesse a página Painéis:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Selecione a guia Lista de painéis e escolha a categoria Integrações.
- Clique no nome do painel que você quer visualizar.
Se você configurou uma integração, mas o painel não foi instalado, verifique se o agente de operações está em execução. Quando não há dados de métricas para um gráfico no painel, a instalação do painel falha. Depois que o Agente de operações começar a coletar métricas, o painel será instalado para você.
Para acessar uma visualização estática do painel, faça o seguinte:
-
No console do Google Cloud, acesse a página Integrações:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Clique no filtro de plataforma de implantação do Compute Engine.
- Localize a entrada do nginx e clique em Ver detalhes.
- Selecione a guia Painéis para uma visualização estática. Se o painel estiver instalado, navegue até ele clicando em Ver painel.
Para mais informações sobre painéis no Cloud Monitoring, consulte Painéis e gráficos.
Para mais informações sobre como usar a página Integrações, consulte Gerenciar integrações.
Instalar políticas de alertas
As políticas de alertas orientam o Cloud Monitoring a notificar você quando ocorrerem condições especificadas. A integração do nginx inclui uma ou mais políticas de alertas para você usar. É possível ver e instalar essas políticas de alertas na página Integrações no Monitoring.
Para visualizar e descrever as descrições de políticas de alertas disponíveis, faça o seguinte:
-
No console do Google Cloud, acesse a página Integrações:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoramento.
- Localize a entrada do nginx e clique em Ver detalhes.
- Selecione a guia Alertas. Essa guia apresenta descrições das políticas de alertas disponíveis e mostra uma interface para instalá-las.
- Instalar políticas de alertas. As políticas de alertas precisam
saber para onde enviar as notificações de que o alerta foi
acionado. Portanto, elas exigem informações para instalação.
Para instalar políticas de alertas, faça o seguinte:
- Na lista de políticas de alertas disponíveis, selecione aquelas que você quer instalar.
Na seção Configurar notificações, selecione um ou mais canais de notificação. Você pode desativar o uso dos canais de notificação, mas, se isso acontecer, as políticas de alertas vão ser disparadas silenciosamente. É possível verificar o status no Monitoring, mas não receber notificações.
Para saber mais sobre canais de notificação, consulte Gerenciar canais de notificação.
- Clique em Criar políticas.
Para mais informações sobre políticas de alertas no Cloud Monitoring, consulte Introdução a alertas.
Para mais informações sobre como usar a página Integrações, consulte Gerenciar integrações.
Solução de problemas
Na maioria das distribuições, o nginx vem com o ngx_http_stub_status_module
ativado.
Verifique se o módulo está ativado executando o seguinte comando:
sudo nginx -V 2>&1 | grep -o with-http_stub_status_module
A saída esperada é with-http_stub_status_module
, o que significa que o módulo está ativado. Em casos raros, se o comando não retornar nenhuma saída, será necessário compilar
o nginx da origem com o -with-http_stub_status_module
seguindo a documentação
pública do nginx.
A seguir
Para ver um tutorial sobre como usar o Ansible para instalar o agente de operações, configurar um aplicativo de terceiros e instalar um painel de amostra, consulte o vídeo Instalação do agente de operações para resolver problemas de aplicativos de terceiros.