Passer au contenu principal
Les intégrations AppSignal et l’agent autonome AppSignal peuvent générer des métriques à partir des logs d’accès de votre serveur NGINX. Après avoir configuré votre serveur NGINX pour envoyer des métriques à AppSignal, un Magic Dashboard avec les métriques liées à votre serveur NGINX apparaîtra.

Configuration d’AppSignal

Tout d’abord, vous devez configurer votre intégration AppSignal ou l’agent autonome pour qu’il reçoive les métriques de NGINX.
L’activation des métriques NGINX ouvre un serveur auquel NGINX peut envoyer les métriques. Par défaut, ce serveur est lié à localhost et écoute sur le port 27649. Vous pouvez modifier ces paramètres à l’aide des options de configuration bind_address et nginx_port.Si vous exécutez plusieurs applications instrumentées avec AppSignal en même temps sur le même serveur, vous pouvez configurer chaque application pour écouter sur un port différent à l’aide de l’option de configuration nginx_port.
Si vous configurez votre intégration AppSignal avec des variables d’environnement, vous devez définir APPSIGNAL_ENABLE_NGINX_METRICS à true. Si vous configurez votre intégration AppSignal avec des fichiers de configuration, ou si vous utilisez l’agent autonome, vous pouvez suivre les instructions appropriées ci-dessous pour activer les métriques NGINX pour votre application :

Ruby

La prise en charge des métriques NGINX a été ajoutée dans la version 3.3.4 de l’intégration Ruby.
Ajoutez enable_nginx_metrics: true à l’environnement souhaité dans le fichier config/appsignal.yml de votre application, par exemple l’environnement de production :
production:
  enable_nginx_metrics: true
  # ...

Elixir

La prise en charge des métriques NGINX a été ajoutée dans la version 2.5.2 de l’intégration Elixir.
Ajoutez enable_nginx_metrics: true à votre bloc de configuration AppSignal, généralement situé dans config/config.exs :
config :appsignal, :config,
  enable_nginx_metrics: true,
  # ...

Node.js

La prise en charge des métriques NGINX a été ajoutée dans la version 3.0.8 de l’intégration Node.js.
Ajoutez enableNginxMetrics: true à votre fichier appsignal.cjs :
new Appsignal({
  enableNginxMetrics: true,
  // ...
});

Agent autonome

La prise en charge des métriques NGINX a été ajoutée dans la version 0.0.24 de l’agent autonome.
Ajoutez enable_nginx_metrics = true à votre fichier de configuration /etc/appsignal-agent.conf :
enable_nginx_metrics = true

Configuration de NGINX

L’étape suivante consiste à configurer votre serveur NGINX pour qu’il envoie les métriques à AppSignal. Dans la plupart des distributions Linux, la configuration NGINX par défaut inclut des fichiers de configuration provenant d’un dossier de configuration, souvent situé dans /etc/nginx/conf.d. Enregistrez la configuration suivante dans ce dossier sous le nom appsignal-metrics.conf :
map '' $appsignal_group {
  default 'http';
}

log_format appsignal_metrics '1|g=$appsignal_group;s=$status;rqt=$request_time;rql=$request_length;bs=$bytes_sent;ua=$upstream_addr;uct=$upstream_connect_time;uht=$upstream_header_time;urst=$upstream_response_time;us=$upstream_status;ucs=$upstream_cache_status;ca=$connections_active;cr=$connections_reading;cwr=$connections_writing;cwa=$connections_waiting';
access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;
Remplacez 127.0.0.1:27649 par l’hôte et le port où votre intégration AppSignal ou l’agent autonome écoute les métriques NGINX.
Si votre configuration NGINX n’inclut pas de fichiers de configuration comme décrit ci-dessus, vous pouvez l’inclure vous-même depuis le bloc http de votre fichier nginx.conf :
http {
  include '/path/to/appsignal-metrics.conf';
  ...
}
Notez que si un bloc server ou location contient une directive access_log, les métriques des requêtes vers ce serveur ou cet emplacement ne seront pas rapportées à AppSignal. Pour rapporter les métriques à AppSignal pour ces requêtes, vous devrez ajouter la ligne suivante à l’intérieur du bloc :
Shell
access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;
Remplacez 127.0.0.1:27649 par l’hôte et le port où votre intégration AppSignal ou l’agent autonome écoute les métriques NGINX.
La directive access_log existante à l’intérieur du bloc continuera à fonctionner comme avant.

Configuration des groupes de requêtes

En modifiant la valeur de la variable $appsignal_group dans un bloc location ou server de votre configuration NGINX, vous pouvez différencier les différents types de requêtes traitées par votre serveur NGINX :
location /admin {
  set $appsignal_group 'admin';
  ...
}
Les métriques liées aux requêtes seront segmentées par leur groupe, et les différents groupes seront suivis indépendamment dans les graphiques du Magic Dashboard pour ces métriques.

Désactivation des métriques

Vous pouvez utiliser la directive access_log off pour désactiver tous les logs d’accès dans un bloc location ou server. Notez que cela désactivera tous les logs d’accès configurés, pas seulement ceux qui sont envoyés à AppSignal en tant que métriques. Pour rapporter les métriques uniquement à partir de blocs location ou server spécifiques, supprimez la ligne suivante du fichier appsignal-metrics.conf, puis ajoutez-la uniquement à l’intérieur des blocs location ou server spécifiques à partir desquels vous souhaitez rapporter les métriques à AppSignal :
access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;
Remplacez 127.0.0.1:27649 par l’hôte et le port où votre intégration AppSignal ou l’agent autonome écoute les métriques NGINX.
Cela désactivera implicitement tous les logs d’accès des directives access_log dans le bloc server ou http environnant. Pour réactiver ces logs d’accès, répétez leur directive access_log correspondante à l’intérieur du bloc location ou server auquel vous avez ajouté la ligne ci-dessus :
server {
  access_log /var/log/nginx/access.log main;

  location /app {
    # this line enables AppSignal NGINX metrics for this location
    # but it also disables the access log declared in the server block
    access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;

    # this line enables the access log declared in the server block again
    access_log /var/log/nginx/access.log main;
  }
}

Magic dashboard

Le Magic Dashboard NGINX Les métriques envoyées à AppSignal par votre serveur NGINX seront utilisées pour créer un Magic Dashboard. Dans ce tableau de bord, vous pourrez voir des graphiques représentant des métriques utiles au fil du temps, telles que :
  • Request time : le temps mis par votre serveur NGINX pour répondre à une requête, en moyenne par minute et en 95e percentile.
  • Throughput : un compte des requêtes traitées par votre serveur NGINX.
  • Request length : la longueur en octets de la requête reçue du client par votre serveur NGINX, en moyenne par minute et en 95e percentile.
  • Response length : la longueur en octets de la réponse envoyée au client par votre serveur NGINX, en moyenne par minute et en 95e percentile.
  • Status codes : un compte des codes d’état des réponses envoyées par votre serveur NGINX.
  • Connections : une gauge des connexions actuellement traitées par votre serveur NGINX, mesurée une fois par minute et segmentée par le statut de la connexion.
  • Upstream status codes : un compte des codes d’état des réponses envoyées par les serveurs upstream que votre serveur NGINX proxifie.
  • Upstream response time : le temps mis pour répondre à une requête par les serveurs upstream que votre serveur NGINX proxifie, en moyenne par minute et en 95e percentile.
  • Upstream cache status : le statut du cache (tel que HIT ou MISS) lors du traitement d’une requête mise en cache proxifiée depuis un serveur upstream.
La plupart de ces graphiques sont segmentés par le groupe de requêtes, le nom d’hôte ou l’upstream concerné, le cas échéant. Vous pouvez toutefois plonger dans l’éditeur de graphiques et choisir une segmentation différente qui offre une vue plus utile sur vos données. Consultez la section ci-dessous pour une ventilation détaillée des métriques envoyées depuis votre serveur NGINX.

Métriques

Les métriques suivantes seront envoyées à AppSignal depuis votre serveur NGINX :
  • nginx_status : Un counter incrémenté pour chaque requête traitée par votre serveur NGINX. Tagué par :
    • status : Le code d’état de la réponse.
    • group : Le groupe de requêtes, tel que configuré dans votre serveur NGINX.
    • hostname : Le nom d’hôte du serveur qui a traité la requête.
  • nginx_request_time : Une distribution du temps mis pour répondre à chaque requête. Tagué par :
  • nginx_request_length : Une distribution des octets reçus dans la requête du client, pour chaque requête. Tagué par :
  • nginx_bytes_sent : Une distribution des octets envoyés dans la réponse au client, pour chaque requête. Tagué par :
Si la requête est traitée en proxifiant depuis un upstream à l’aide de la directive NGINX proxy_pass, les métriques suivantes seront également présentes :
  • nginx_upstream_time : Une distribution du temps qu’il a fallu pour communiquer avec le serveur upstream. Tagué par :
    • group : Le groupe de requêtes, tel que configuré dans votre serveur NGINX.
    • hostname : Le nom d’hôte du serveur qui a traité la requête.
    • upstream : Le serveur upstream vers lequel la requête a été proxifiée.
    • measurement : La mesure de temps spécifique :
      • connect : Le temps qu’il a fallu pour que la connexion soit établie.
      • header : Le temps qu’il a fallu pour que l’en-tête de la réponse soit envoyé.
      • response : Le temps qu’il a fallu pour que la réponse complète soit envoyée.
  • nginx_upstream_status : Un counter incrémenté pour chaque requête proxifiée vers un upstream. Tagué par :
    • status : Le code d’état de la réponse.
    • group : Le groupe de requêtes, tel que configuré dans votre serveur NGINX.
    • hostname : Le nom d’hôte du serveur qui a traité la requête.
    • upstream : Le serveur upstream vers lequel la requête a été proxifiée.
Si la requête proxifiée depuis un upstream est mise en cache à l’aide de la directive NGINX proxy_cache, la métrique suivante sera également présente :
  • nginx_upstream_cache_status : Un counter incrémenté pour chaque requête proxifiée vers un upstream avec mise en cache activée. Tagué par :
Si votre serveur NGINX a été compilé avec le module NGINX ngx_http_stub_status_module activé (comme fourni par la plupart des distributions Linux), la métrique suivante sera également présente :
  • nginx_connections : Le nombre de connexions que votre serveur NGINX traite actuellement. Tagué par :
    • hostname : Le nom d’hôte du serveur qui a traité la requête.
    • measurement : Le nombre spécifique de connexions mesuré :
      • active : Le nombre de connexions actives.
      • reading : Le nombre de connexions où la requête est en cours de lecture.
      • writing : Le nombre de connexions où la réponse est en cours d’écriture.
      • waiting : Le nombre de connexions inactives.
La métrique des connexions se réfère toujours au nom d’hôte dans son ensemble, pas à un groupe spécifique. Sa valeur est mise à jour une fois par minute.
Le nom d’hôte du serveur utilisé pour les métriques n’est pas la valeur du nom d’hôte NGINX, mais la valeur du nom d’hôte configurée pour l’intégration AppSignal ou l’agent autonome. Cette valeur est généralement configurée automatiquement et peut être remplacée par l’option de configuration hostname.

Support

Si vous rencontrez des difficultés pour configurer les métriques NGINX de votre application, contactez le support, et nous vous aiderons à faire circuler vos métriques.