Pular para conteúdo

statsd: módulo NGINX para enviar estatísticas para statsd

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

  • RedHat Enterprise Linux 7, 8, 9 e 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 e Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-statsd
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-statsd

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_http_statsd_module.so;

Este documento descreve o nginx-module-statsd v0.0.1 lançado em 24 de fevereiro de 2020.


Um módulo nginx para enviar estatísticas para statsd.

Aqui está como usar o módulo nginx-statsd:

http {

    # Defina o servidor para o qual você deseja enviar estatísticas.
    statsd_server your.statsd.server.com;

    # Amostre aleatoriamente 10% das requisições para não sobrecarregar seu servidor statsd.
    # Por padrão, envia todas as estatísticas (100%). 
    statsd_sample_rate 10; # 10% das requisições


    server {
        listen 80;
        server_name www.your.domain.com;

        # Incrementa "your_product.requests" em 1 sempre que qualquer requisição atingir este servidor. 
        statsd_count "your_product.requests" 1;

        location / {

            # Incrementa a chave em 1 quando esta localização é acessada.
            statsd_count "your_product.pages.index_requests" 1;

            # Incrementa a chave em 1, mas apenas se $request_completion estiver definido como algo.
            statsd_count "your_product.pages.index_responses" 1 "$request_completion";

            # Envia um tempo para "your_product.pages.index_response_time" igual ao valor
            # retornado do servidor upstream. Se este valor for 0 ou uma string vazia,
            # não será enviado. Assim, não há necessidade de adicionar um teste.
            statsd_timing "your_product.pages.index_response_time" "$upstream_response_time";

            # Incrementa uma chave com base no valor de um cabeçalho personalizado. Envia o valor apenas se
            # o cabeçalho personalizado existir na resposta upstream.
            statsd_count "your_product.custom_$upstream_http_x_some_custom_header" 1 
                "$upstream_http_x_some_custom_header";

            proxy_pass http://some.other.domain.com;
        }
    }
}

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-statsd.