nginx

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:

  1. 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.

  2. 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;
       }
    }
    
  3. 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.

# Configures Ops Agent to collect telemetry from the app and restart Ops Agent.

set -e

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    nginx:
      type: nginx
      stub_status_url: http://127.0.0.1:80/nginx_status
  service:
    pipelines:
      nginx:
        receivers:
          - nginx
logging:
  receivers:
    nginx_access:
      type: nginx_access
    nginx_error:
      type: nginx_error
  service:
    pipelines:
      nginx:
        receivers:
          - nginx_access
          - nginx_error
EOF

sudo service google-cloud-ops-agent restart
sleep 60

Configurar a coleta de registros

Para ingerir registros do nginx, é preciso criar receptores para os registros produzidos pelo nginx, em seguida, criar um pipeline para os novos receptores.

nginx_accessPara 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 O valor precisa ser nginx_access.
wildcard_refresh_interval 60s O intervalo em que os caminhos de arquivos curinga em include_paths são atualizados. Determinado como uma duração analisável por time.ParseDuration, 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_errorPara 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 O valor precisa ser nginx_error.
wildcard_refresh_interval 60s O intervalo em que os caminhos de arquivos curinga em include_paths são atualizados. Determinado como uma duração analisável por time.ParseDuration, 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 number ID 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 number 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 number 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
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/nginx.connections_current
GAUGEINT64
gce_instance
state
workload.googleapis.com/nginx.connections_handled
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/nginx.requests
CUMULATIVEINT64
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:

  1. No painel de navegação do console do Google Cloud, selecione Logging e, depois, Explorador de registros:

    Acessar o Explorador de registros

  2. Digite a seguinte consulta 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:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Metrics Explorer:

    Acesse o Metrics explorer

  2. Na barra de ferramentas do painel do criador de consultas, selecione o botão  MQL ou  PromQL.
  3. Verifique se MQL está selecionado na opção de ativar/desativar Idioma. A alternância de idiomas está na mesma barra de ferramentas que permite formatar sua consulta.
  4. Digite a seguinte consulta 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:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Painéis:

    Acessar Painéis

  2. Selecione a guia Lista de painéis e escolha a categoria Integrações.
  3. 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:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Integrações:

    Acesse Integrações

  2. Clique no filtro de plataforma de implantação do Compute Engine.
  3. Localize a entrada do nginx e clique em Ver detalhes.
  4. 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:

  1. No painel de navegação do console do Google Cloud, selecione Monitoramento e  Integrações:

    Acesse Integrações

  2. Localize a entrada do nginx e clique em Ver detalhes.
  3. Selecione a guia Alertas. Essa guia apresenta descrições das políticas de alertas disponíveis e mostra uma interface para instalá-las.
  4. 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:
    1. Na lista de políticas de alertas disponíveis, selecione aquelas que você quer instalar.
    2. 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.

    3. 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.