> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# NGINX-Metriken

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.

<Tip>
  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.
</Tip>

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-Konfiguration](#ruby)
* [Elixir-Konfiguration](#elixir)
* [Node.js-Konfiguration](#nodejs)
* [Standalone-Agent-Konfiguration](#standalone-agent)

### Ruby

<Tip>
  Die Unterstützung für NGINX-Metriken wurde in Version `3.3.4` der Ruby-Integration hinzugefügt.
</Tip>

Fügen Sie `enable_nginx_metrics: true` der gewünschten Umgebung in der Datei `config/appsignal.yml` Ihrer Anwendung hinzu, beispielsweise der Produktionsumgebung:

<CodeGroup>
  ```yaml YAML theme={null}
  production:
    enable_nginx_metrics: true
    # ...
  ```
</CodeGroup>

### Elixir

<Tip>
  Die Unterstützung für NGINX-Metriken wurde in Version `2.5.2` der Elixir-Integration hinzugefügt.
</Tip>

Fügen Sie `enable_nginx_metrics: true` Ihrem AppSignal-Konfigurationsblock hinzu, der sich üblicherweise in `config/config.exs` befindet:

<CodeGroup>
  ```elixir Elixir theme={null}
  config :appsignal, :config,
    enable_nginx_metrics: true,
    # ...
  ```
</CodeGroup>

### Node.js

<Tip>
  Die Unterstützung für NGINX-Metriken wurde in Version `3.0.8` der Node.js-Integration hinzugefügt.
</Tip>

Fügen Sie `enableNginxMetrics: true` Ihrer Datei `appsignal.cjs` hinzu:

<CodeGroup>
  ```javascript Node.js theme={null}
  new Appsignal({
    enableNginxMetrics: true,
    // ...
  });
  ```
</CodeGroup>

### Standalone-Agent

<Tip>
  Die Unterstützung für NGINX-Metriken wurde in Version `0.0.24` des Standalone-Agents hinzugefügt.
</Tip>

Fügen Sie `enable_nginx_metrics = true` Ihrer Konfigurationsdatei `/etc/appsignal-agent.conf` hinzu:

<CodeGroup>
  ```toml TOML theme={null}
  enable_nginx_metrics = true
  ```
</CodeGroup>

## 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`:

<CodeGroup>
  ```nginx NGINX theme={null}
  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;
  ```
</CodeGroup>

<Note>
  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.
</Note>

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:

<CodeGroup>
  ```nginx NGINX theme={null}
  http {
    include '/path/to/appsignal-metrics.conf';
    ...
  }
  ```
</CodeGroup>

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:

```sh Shell theme={null}
access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;
```

<Note>
  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.
</Note>

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:

<CodeGroup>
  ```nginx NGINX theme={null}
  location /admin {
    set $appsignal_group 'admin';
    ...
  }
  ```
</CodeGroup>

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:

<CodeGroup>
  ```nginx NGINX theme={null}
  access_log syslog:server=127.0.0.1:27649,tag=appsignal_nginx appsignal_metrics;
  ```
</CodeGroup>

<Note>
  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.
</Note>

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:

<CodeGroup>
  ```nginx NGINX theme={null}
  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;
    }
  }
  ```
</CodeGroup>

## Magic Dashboard

<img src="https://mintcdn.com/appsignal-715f5a51/4TRZP0Sq9Zq7PAPW/assets/images/screenshots/metrics/nginx/magic-dashboard.png?fit=max&auto=format&n=4TRZP0Sq9Zq7PAPW&q=85&s=fab340c84e32d4b0bf1d47183eeafe8f" alt="Das NGINX-Magic-Dashboard" width="2298" height="1935" data-path="assets/images/screenshots/metrics/nginx/magic-dashboard.png" />

Die [Metriken, die Ihr NGINX-Server an AppSignal sendet](#metrics), 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](#configuring-request-groups), 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](#configuring-request-groups).
  * `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:
  * **`group`**: Die Anfrage-Gruppe, wie [in Ihrem NGINX-Server konfiguriert](#configuring-request-groups).
  * **`hostname`**: Der Hostname des Servers, der die Anfrage bearbeitet hat.
* `nginx_request_length`: Eine Verteilung der vom Client in der Anfrage empfangenen Bytes für jede Anfrage. Getaggt mit:
  * **`group`**: Die Anfrage-Gruppe, wie [in Ihrem NGINX-Server konfiguriert](#configuring-request-groups).
  * **`hostname`**: Der Hostname des Servers, der die Anfrage bearbeitet hat.
* `nginx_bytes_sent`: Eine Verteilung der in der Antwort an den Client gesendeten Bytes für jede Anfrage. Getaggt mit:
  * **`group`**: Die Anfrage-Gruppe, wie [in Ihrem NGINX-Server konfiguriert](#configuring-request-groups).
  * **`hostname`**: Der Hostname des Servers, der die Anfrage bearbeitet hat.

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](#configuring-request-groups).
  * **`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](#configuring-request-groups).
  * **`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:
  * **`status`**: Der [Cache-Status](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#var_upstream_cache_status) für die Anfrage.
  * **`group`**: Die Anfrage-Gruppe, wie [in Ihrem NGINX-Server konfiguriert](#configuring-request-groups).
  * **`hostname`**: Der Hostname des Servers, der die Anfrage bearbeitet hat.

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.

<Tip>
  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.
</Tip>

## Support

Wenn Sie Schwierigkeiten beim Konfigurieren der NGINX-Metriken Ihrer Anwendung haben, [kontaktieren Sie den Support](mailto:support@appsignal.com), und wir helfen Ihnen, Ihre Metriken zum Fließen zu bringen.
