Saltar a contenido

statsd: Módulo de NGINX para enviar estadísticas a statsd

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y 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

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_http_statsd_module.so;

Este documento describe nginx-module-statsd v0.0.1 lanzado el 24 de febrero de 2020.


Un módulo de nginx para enviar estadísticas a statsd.

Así es como usar el módulo nginx-statsd:

http {

    # Establece el servidor al que deseas enviar estadísticas.
    statsd_server your.statsd.server.com;

    # Muestra aleatoriamente el 10% de las solicitudes para que no abrumes tu servidor statsd.
    # Por defecto, envía todas las estadísticas (100%). 
    statsd_sample_rate 10; # 10% de las solicitudes


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

        # Incrementa "your_product.requests" en 1 cada vez que cualquier solicitud llegue a este servidor. 
        statsd_count "your_product.requests" 1;

        location / {

            # Incrementa la clave en 1 cuando se accede a esta ubicación.
            statsd_count "your_product.pages.index_requests" 1;

            # Incrementa la clave en 1, pero solo si $request_completion está establecido en algo.
            statsd_count "your_product.pages.index_responses" 1 "$request_completion";

            # Envía un tiempo a "your_product.pages.index_response_time" igual al valor
            # devuelto por el servidor upstream. Si este valor evalúa a 0 o cadena vacía,
            # no se enviará. Por lo tanto, no es necesario agregar una prueba.
            statsd_timing "your_product.pages.index_response_time" "$upstream_response_time";

            # Incrementa una clave basada en el valor de un encabezado personalizado. Solo envía el valor si
            # el encabezado personalizado existe en la respuesta 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

Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-statsd.