Zum Hauptinhalt springen
Die AppSignal-Integrationen und der AppSignal-Standalone-Agent können Metriken aus den Zugriffsprotokollen Ihres NGINX-Servers erzeugen. Nachdem Sie Ihren NGINX-Server so konfiguriert haben, dass er Metriken an AppSignal sendet, erscheint ein Magic Dashboard mit Metriken zu Ihrem NGINX-Server.

AppSignal konfigurieren

Zuerst müssen Sie Ihre AppSignal-Integration oder Ihren Standalone-Agent so konfigurieren, dass er Metriken von NGINX empfängt.
Das Aktivieren von NGINX-Metriken öffnet einen Server, an den NGINX Metriken senden kann. Standardmäßig ist dieser Server an localhost gebunden und lauscht auf Port 27649. Sie können diese Einstellungen mit den Konfigurationsoptionen bind_address und nginx_port ändern.Wenn Sie mehrere AppSignal-instrumentierte Anwendungen gleichzeitig auf demselben Server betreiben, können Sie jede Anwendung mit der Konfigurationsoption nginx_port so konfigurieren, dass sie auf einem anderen Port lauscht.
Wenn Sie Ihre AppSignal-Integration mit Umgebungsvariablen konfigurieren, müssen Sie APPSIGNAL_ENABLE_NGINX_METRICS auf true setzen. Wenn Sie Ihre AppSignal-Integration mit Konfigurationsdateien konfigurieren oder den Standalone-Agent verwenden, folgen Sie den entsprechenden Anweisungen unten, um NGINX-Metriken für Ihre Anwendung zu aktivieren:

Ruby

Die Unterstützung für NGINX-Metriken wurde in Version 3.3.4 der Ruby-Integration hinzugefügt.
Fügen Sie enable_nginx_metrics: true der gewünschten Umgebung in der Datei config/appsignal.yml Ihrer Anwendung hinzu, beispielsweise der Produktionsumgebung:
production:
  enable_nginx_metrics: true
  # ...

Elixir

Die Unterstützung für NGINX-Metriken wurde in Version 2.5.2 der Elixir-Integration hinzugefügt.
Fügen Sie enable_nginx_metrics: true Ihrem AppSignal-Konfigurationsblock hinzu, der sich üblicherweise in config/config.exs befindet:
config :appsignal, :config,
  enable_nginx_metrics: true,
  # ...

Node.js

Die Unterstützung für NGINX-Metriken wurde in Version 3.0.8 der Node.js-Integration hinzugefügt.
Fügen Sie enableNginxMetrics: true Ihrer Datei appsignal.cjs hinzu:
new Appsignal({
  enableNginxMetrics: true,
  // ...
});

Standalone-Agent

Die Unterstützung für NGINX-Metriken wurde in Version 0.0.24 des Standalone-Agents hinzugefügt.
Fügen Sie enable_nginx_metrics = true Ihrer Konfigurationsdatei /etc/appsignal-agent.conf hinzu:
enable_nginx_metrics = true

NGINX konfigurieren

Im nächsten Schritt konfigurieren Sie Ihren NGINX-Server, damit er Metriken an AppSignal sendet. In den meisten Linux-Distributionen enthält die Standard-NGINX-Konfiguration Konfigurationsdateien aus einem Konfigurationsordner, der sich häufig unter /etc/nginx/conf.d befindet. Speichern Sie die folgende Konfiguration in diesem Ordner als 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;
Ersetzen Sie 127.0.0.1:27649 durch den Host und Port, an dem Ihre AppSignal-Integration oder Ihr eigenständiger Agent auf NGINX-Metriken lauscht.
Wenn Ihre NGINX-Konfiguration die Konfigurationsdateien nicht wie oben beschrieben einbindet, können Sie sie selbst aus dem http-Block Ihrer Datei nginx.conf einbinden:
http {
  include '/path/to/appsignal-metrics.conf';
  ...
}
Beachten Sie, dass Metriken für Anfragen an diesen Server oder Standort nicht an AppSignal gemeldet werden, wenn ein server- oder location-Block eine access_log-Direktive enthält. Um Metriken für diese Anfragen an AppSignal zu melden, müssen Sie folgende Zeile innerhalb des Blocks hinzufügen:
Shell
access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;
Ersetzen Sie 127.0.0.1:27649 durch den Host und Port, an dem Ihre AppSignal-Integration oder Ihr eigenständiger Agent auf NGINX-Metriken lauscht.
Die bestehende access_log-Direktive im Block funktioniert weiterhin wie zuvor.

Anfrage-Gruppen konfigurieren

Indem Sie den Wert der Variable $appsignal_group innerhalb eines location- oder server-Blocks in Ihrer NGINX-Konfiguration ändern, können Sie zwischen verschiedenen Arten von Anfragen unterscheiden, die von Ihrem NGINX-Server bearbeitet werden:
location /admin {
  set $appsignal_group 'admin';
  ...
}
Metriken zu Anfragen werden nach ihrer Gruppe segmentiert, und die verschiedenen Gruppen werden in den Magic-Dashboard-Diagrammen für diese Metriken unabhängig voneinander verfolgt.

Metriken deaktivieren

Sie können die Direktive access_log off verwenden, um alle Zugriffsprotokolle innerhalb eines location- oder server-Blocks zu deaktivieren. Beachten Sie, dass damit alle konfigurierten Zugriffsprotokolle deaktiviert werden, nicht nur diejenigen, die als Metriken an AppSignal gesendet werden. Um nur Metriken aus bestimmten location- oder server-Blöcken zu melden, entfernen Sie die folgende Zeile aus der Datei appsignal-metrics.conf und fügen Sie sie dann nur innerhalb der spezifischen location- oder server-Blöcke ein, von denen Sie Metriken an AppSignal melden möchten:
access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;
Ersetzen Sie 127.0.0.1:27649 durch den Host und Port, an dem Ihre AppSignal-Integration oder Ihr eigenständiger Agent auf NGINX-Metriken lauscht.
Dadurch werden implizit alle Zugriffsprotokolle aus access_log-Direktiven im umgebenden server- oder http-Block deaktiviert. Um diese Zugriffsprotokolle wieder zu aktivieren, wiederholen Sie deren entsprechende access_log-Direktive innerhalb des location- oder server-Blocks, in den Sie die obige Zeile eingefügt haben:
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

Das NGINX-Magic-Dashboard Die Metriken, die Ihr NGINX-Server an AppSignal sendet, werden verwendet, um ein Magic Dashboard zu erstellen. In diesem Dashboard können Sie Diagramme sehen, die nützliche Metriken im Zeitverlauf darstellen, etwa:
  • Anfragezeit: die Zeit, die Ihr NGINX-Server benötigt, um auf eine Anfrage zu antworten, als minütlicher Mittelwert und 95. Perzentil.
  • Durchsatz: eine Zählung der von Ihrem NGINX-Server bearbeiteten Anfragen.
  • Anfragelänge: die Länge der vom Client an Ihren NGINX-Server gesendeten Anfrage in Bytes, als minütlicher Mittelwert und 95. Perzentil.
  • Antwortlänge: die Länge der vom NGINX-Server an den Client gesendeten Antwort in Bytes, als minütlicher Mittelwert und 95. Perzentil.
  • Statuscodes: eine Zählung der Statuscodes der von Ihrem NGINX-Server gesendeten Antworten.
  • Verbindungen: ein Gauge der Verbindungen, die Ihr NGINX-Server derzeit bearbeitet, einmal pro Minute gemessen und nach dem Status der Verbindung segmentiert.
  • Upstream-Statuscodes: eine Zählung der Statuscodes der Antworten, die von den Upstream-Servern gesendet werden, von denen Ihr NGINX-Server proxyt.
  • Upstream-Antwortzeit: die Zeit, die die Upstream-Server, von denen Ihr NGINX-Server proxyt, benötigen, um auf eine Anfrage zu antworten, als minütlicher Mittelwert und 95. Perzentil.
  • Upstream-Cache-Status: der Status des Caches (z. B. HIT oder MISS) bei der Verarbeitung einer aus einem Upstream-Server gecachten Anfrage.
Die meisten dieser Diagramme sind nach der Anfrage-Gruppe, dem Hostname oder dem entsprechenden Upstream (sofern vorhanden) segmentiert. Sie können jedoch in den Graph-Editor wechseln und eine andere Segmentierung wählen, die eine nützlichere Sicht auf Ihre Daten bietet. Im folgenden Abschnitt finden Sie eine detaillierte Aufschlüsselung der von Ihrem NGINX-Server gesendeten Metriken.

Metriken

Die folgenden Metriken werden von Ihrem NGINX-Server an AppSignal gesendet:
  • nginx_status: Ein Counter, der für jede von Ihrem NGINX-Server bearbeitete Anfrage erhöht wird. Getaggt mit:
    • status: Der Statuscode der Antwort.
    • group: Die Anfrage-Gruppe, wie in Ihrem NGINX-Server konfiguriert.
    • hostname: Der Hostname des Servers, der die Anfrage bearbeitet hat.
  • nginx_request_time: Eine Verteilung der Zeit, die für die Beantwortung jeder Anfrage benötigt wurde. Getaggt mit:
  • nginx_request_length: Eine Verteilung der vom Client in der Anfrage empfangenen Bytes für jede Anfrage. Getaggt mit:
  • nginx_bytes_sent: Eine Verteilung der in der Antwort an den Client gesendeten Bytes für jede Anfrage. Getaggt mit:
Wenn die Anfrage durch Proxying von einem Upstream über die NGINX-Direktive proxy_pass bearbeitet wird, sind auch die folgenden Metriken vorhanden:
  • nginx_upstream_time: Eine Verteilung der Zeit, die für die Kommunikation mit dem Upstream-Server benötigt wurde. Getaggt mit:
    • group: Die Anfrage-Gruppe, wie in Ihrem NGINX-Server konfiguriert.
    • hostname: Der Hostname des Servers, der die Anfrage bearbeitet hat.
    • upstream: Der Upstream-Server, an den die Anfrage proxyt wurde.
    • measurement: Die spezifische gemessene Zeit:
      • connect: Die Zeit, die zum Aufbau der Verbindung benötigt wurde.
      • header: Die Zeit, die zum Senden des Antwort-Headers benötigt wurde.
      • response: Die Zeit, die zum Senden der vollständigen Antwort benötigt wurde.
  • nginx_upstream_status: Ein Counter, der für jede an einen Upstream proxyte Anfrage erhöht wird. Getaggt mit:
    • status: Der Statuscode der Antwort.
    • group: Die Anfrage-Gruppe, wie in Ihrem NGINX-Server konfiguriert.
    • hostname: Der Hostname des Servers, der die Anfrage bearbeitet hat.
    • upstream: Der Upstream-Server, an den die Anfrage proxyt wurde.
Wenn die von einem Upstream proxyte Anfrage über die NGINX-Direktive proxy_cache zwischengespeichert wird, ist auch die folgende Metrik vorhanden:
  • nginx_upstream_cache_status: Ein Counter, der für jede mit aktiviertem Caching an einen Upstream proxyte Anfrage erhöht wird. Getaggt mit:
Wenn Ihr NGINX-Server mit aktiviertem NGINX-Modul ngx_http_stub_status_module gebaut wurde (wie in den meisten Linux-Distributionen bereitgestellt), ist auch die folgende Metrik vorhanden:
  • nginx_connections: Die Anzahl der Verbindungen, die Ihr NGINX-Server derzeit bearbeitet. Getaggt mit:
    • hostname: Der Hostname des Servers, der die Anfrage bearbeitet hat.
    • measurement: Die spezifische gemessene Anzahl der Verbindungen:
      • active: Die Anzahl aktiver Verbindungen.
      • reading: Die Anzahl der Verbindungen, bei denen die Anfrage gelesen wird.
      • writing: Die Anzahl der Verbindungen, bei denen die Antwort geschrieben wird.
      • waiting: Die Anzahl der inaktiven Verbindungen.
Die Verbindungs-Metrik bezieht sich immer auf den Hostname als Ganzes, nicht auf eine bestimmte Gruppe. Ihr Wert wird einmal pro Minute aktualisiert.
Der für die Metriken verwendete Server-Hostname ist nicht der NGINX-Hostname-Wert, sondern der Hostname-Wert, der für die AppSignal-Integration oder den Standalone-Agent konfiguriert ist. Dieser Wert wird üblicherweise automatisch konfiguriert und kann über die Konfigurationsoption hostname überschrieben werden.

Support

Wenn Sie Schwierigkeiten beim Konfigurieren der NGINX-Metriken Ihrer Anwendung haben, kontaktieren Sie den Support, und wir helfen Ihnen, Ihre Metriken zum Fließen zu bringen.