> ## 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-metrics

De AppSignal-integraties en de AppSignal standalone agent kunnen metrics genereren uit de access logs van uw NGINX-server. Nadat u uw NGINX-server heeft geconfigureerd om metrics naar AppSignal te sturen, verschijnt een magic dashboard met metrics gerelateerd aan uw NGINX-server.

## AppSignal configureren

Eerst moet u uw AppSignal-integratie of standalone agent configureren om metrics van NGINX te ontvangen.

<Tip>
  Het inschakelen van NGINX-metrics opent een server waarnaar NGINX metrics kan sturen. Standaard is deze server gebonden aan `localhost` en luistert op poort `27649`. U kunt deze instellingen wijzigen met de configuratieopties `bind_address` en `nginx_port`.

  Als u meerdere AppSignal-geïnstrumenteerde applicaties tegelijk op dezelfde server draait, kunt u elke applicatie configureren om op een andere poort te luisteren met de configuratieoptie `nginx_port`.
</Tip>

Als u uw AppSignal-integratie configureert met omgevingsvariabelen, moet u `APPSIGNAL_ENABLE_NGINX_METRICS` op true instellen.

Als u uw AppSignal-integratie configureert met configuratiebestanden, of u gebruikt de standalone agent, kunt u de relevante onderstaande instructies volgen over hoe u NGINX-metrics inschakelt voor uw applicatie:

* [Ruby-configuratie](#ruby)
* [Elixir-configuratie](#elixir)
* [Node.js-configuratie](#nodejs)
* [Standalone-agent-configuratie](#standalone-agent)

### Ruby

<Tip>
  Ondersteuning voor NGINX-metrics is toegevoegd in versie `3.3.4` van de Ruby-
  integratie.
</Tip>

Voeg `enable_nginx_metrics: true` toe aan de gewenste omgeving in het bestand `config/appsignal.yml` van uw applicatie, bijvoorbeeld de productie-omgeving:

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

### Elixir

<Tip>
  Ondersteuning voor NGINX-metrics is toegevoegd in versie `2.5.2` van de Elixir-
  integratie.
</Tip>

Voeg `enable_nginx_metrics: true` toe aan uw AppSignal-configuratieblok, meestal te vinden in `config/config.exs`:

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

### Node.js

<Tip>
  Ondersteuning voor NGINX-metrics is toegevoegd in versie `3.0.8` van de Node.js-
  integratie.
</Tip>

Voeg `enableNginxMetrics: true` toe aan uw `appsignal.cjs`-bestand:

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

### Standalone agent

<Tip>
  Ondersteuning voor NGINX-metrics is toegevoegd in versie `0.0.24` van de standalone
  agent.
</Tip>

Voeg `enable_nginx_metrics = true` toe aan uw configuratiebestand `/etc/appsignal-agent.conf`:

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

## NGINX configureren

De volgende stap is het configureren van uw NGINX-server om metrics naar AppSignal te sturen. In de meeste Linux-distributies bevat de standaard NGINX-configuratie configuratiebestanden uit een configuratiemap, vaak te vinden in `/etc/nginx/conf.d`. Sla de volgende configuratie op in die map 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>
  Vervang `127.0.0.1:27649` door de host en poort waar uw AppSignal-integratie of stand-alone agent naar NGINX-metrics luistert.
</Note>

Als uw NGINX-configuratie geen configuratiebestanden bevat zoals hierboven beschreven, kunt u deze zelf includen vanuit het `http`-blok van uw `nginx.conf`-bestand:

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

Let op dat als een `server`- of `location`-blok een `access_log`-directive bevat, metrics voor verzoeken aan die server of locatie niet aan AppSignal worden gerapporteerd. Om metrics aan AppSignal te rapporteren voor die verzoeken, moet u de volgende regel binnen het blok toevoegen:

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

<Note>
  Vervang `127.0.0.1:27649` door de host en poort waar uw AppSignal-integratie of stand-alone agent naar NGINX-metrics luistert.
</Note>

De bestaande `access_log`-directive binnen het blok zal blijven werken zoals voorheen.

### Request-groepen configureren

Door de waarde van de variabele `$appsignal_group` binnen een `location`- of `server`-blok in uw NGINX-configuratie te wijzigen, kunt u onderscheid maken tussen verschillende soorten verzoeken die door uw NGINX-server worden verwerkt:

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

Metrics gerelateerd aan verzoeken worden gesegmenteerd op hun groep, en de verschillende groepen worden onafhankelijk bijgehouden in de magic dashboard-grafieken voor die metrics.

### Metrics uitschakelen

U kunt de directive `access_log off` gebruiken om alle access logs binnen een `location`- of `server`-blok uit te schakelen. Let op dat dit *alle* geconfigureerde access logs uitschakelt, niet alleen die als metrics naar AppSignal worden verzonden.

Om alleen metrics te rapporteren vanuit specifieke `location`- of `server`-blokken, verwijdert u de volgende regel uit het `appsignal-metrics.conf`-bestand en voegt u deze alleen toe binnen de specifieke `location`- of `server`-blokken waarvan u metrics aan AppSignal wilt rapporteren:

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

<Note>
  Vervang `127.0.0.1:27649` door de host en poort waar uw AppSignal-integratie of stand-alone agent naar NGINX-metrics luistert.
</Note>

Dit zal impliciet alle access logs uitschakelen van `access_log`-directives in het omliggende `server`- of `http`-blok. Om die access logs opnieuw in te schakelen, herhaalt u hun corresponderende `access_log`-directive binnen het `location`- of `server`-blok waaraan u de bovenstaande regel heeft toegevoegd:

<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="Het NGINX magic dashboard" width="2298" height="1935" data-path="assets/images/screenshots/metrics/nginx/magic-dashboard.png" />

De [metrics die door uw NGINX-server naar AppSignal worden verzonden](#metrics) worden gebruikt om een magic dashboard te maken. In dit dashboard kunt u grafieken zien die nuttige metrics in de tijd weergeven, zoals:

* **Request time:** de tijd die uw NGINX-server nodig heeft om op een verzoek te reageren, als per-minuut-gemiddelde en 95e percentiel.
* **Throughput:** een telling van de verzoeken die door uw NGINX-server worden verwerkt.
* **Request length:** de lengte in bytes van het verzoek dat uw NGINX-server van de client heeft ontvangen, als per-minuut-gemiddelde en 95e percentiel.
* **Response length:** de lengte in bytes van de response die door uw NGINX-server naar de client is verzonden, als per-minuut-gemiddelde en 95e percentiel.
* **Status codes:** een telling van de statuscodes van de responses die door uw NGINX-server zijn verzonden.
* **Connections:** een gauge van de connections die momenteel door uw NGINX-server worden verwerkt, eenmaal per minuut gemeten en gesegmenteerd op de status van de connection.
* **Upstream status codes:** een telling van de statuscodes van de responses verzonden door de upstream-servers waarvan uw NGINX-server proxiet.
* **Upstream response time:** de tijd die nodig is om op een verzoek te reageren door de upstream-servers waarvan uw NGINX-server proxiet, als per-minuut-gemiddelde en 95e percentiel.
* **Upstream cache status:** de status van de cache (zoals `HIT` of `MISS`) bij het verwerken van een gecached verzoek dat is geproxied van een upstream-server.

De meeste van deze grafieken zijn gesegmenteerd op [de request-groep](#configuring-request-groups), de hostname of de relevante upstream, indien aanwezig. U kunt echter in de grafiek-editor duiken en een andere segmentatie kiezen die een nuttiger inzicht in uw gegevens biedt. Zie de onderstaande sectie voor een gedetailleerde uitsplitsing van de metrics die vanuit uw NGINX-server worden verzonden.

## Metrics

De volgende metrics worden vanuit uw NGINX-server naar AppSignal verzonden:

* **`nginx_status`**: Een counter die voor elk door uw NGINX-server verwerkt verzoek wordt opgehoogd. Getagd op:
  * `status`: De statuscode van de response.
  * `group`: De request-groep, zoals [geconfigureerd in uw NGINX-server](#configuring-request-groups).
  * `hostname`: De hostname van de server die het verzoek heeft verwerkt.
* **`nginx_request_time`**: Een distribution van de tijd die nodig is om op elk verzoek te reageren. Getagd op:
  * **`group`**: De request-groep, zoals [geconfigureerd in uw NGINX-server](#configuring-request-groups).
  * **`hostname`**: De hostname van de server die het verzoek heeft verwerkt.
* `nginx_request_length`: Een distribution van de bytes ontvangen in het verzoek van de client, voor elk verzoek. Getagd op:
  * **`group`**: De request-groep, zoals [geconfigureerd in uw NGINX-server](#configuring-request-groups).
  * **`hostname`**: De hostname van de server die het verzoek heeft verwerkt.
* `nginx_bytes_sent`: Een distribution van de bytes verzonden in de response naar de client, voor elk verzoek. Getagd op:
  * **`group`**: De request-groep, zoals [geconfigureerd in uw NGINX-server](#configuring-request-groups).
  * **`hostname`**: De hostname van de server die het verzoek heeft verwerkt.

Als het verzoek wordt verwerkt door proxying vanaf een upstream met de NGINX-directive `proxy_pass`, zijn ook de volgende metrics aanwezig:

* `nginx_upstream_time`: Een distribution van de tijd die nodig was om met de upstream-server te communiceren. Getagd op:
  * **`group`**: De request-groep, zoals [geconfigureerd in uw NGINX-server](#configuring-request-groups).
  * **`hostname`**: De hostname van de server die het verzoek heeft verwerkt.
  * **`upstream`**: De upstream-server waarnaar het verzoek werd geproxied.
  * **`measurement`**: De specifieke gemeten tijd:
    * `connect`: De tijd die nodig was om de connection tot stand te brengen.
    * `header`: De tijd die nodig was om de response-header te verzenden.
    * `response`: De tijd die nodig was om de volledige response te verzenden.
* `nginx_upstream_status`: Een counter die voor elk naar een upstream geproxied verzoek wordt opgehoogd. Getagd op:
  * **`status`**: De statuscode van de response.
  * **`group`**: De request-groep, zoals [geconfigureerd in uw NGINX-server](#configuring-request-groups).
  * **`hostname`**: De hostname van de server die het verzoek heeft verwerkt.
  * **`upstream`**: De upstream-server waarnaar het verzoek werd geproxied.

Als het verzoek dat van een upstream wordt geproxied wordt gecached met de NGINX-directive `proxy_cache`, is ook de volgende metric aanwezig:

* `nginx_upstream_cache_status`: Een counter die voor elk naar een upstream geproxied verzoek met caching ingeschakeld wordt opgehoogd. Getagd op:
  * **`status`**: De [cache-status](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#var_upstream_cache_status) voor het verzoek.
  * **`group`**: De request-groep, zoals [geconfigureerd in uw NGINX-server](#configuring-request-groups).
  * **`hostname`**: De hostname van de server die het verzoek heeft verwerkt.

Als uw NGINX-server is gebouwd met de NGINX-module `ngx_http_stub_status_module` ingeschakeld (zoals door de meeste Linux-distributies wordt aangeboden), is ook de volgende metric aanwezig:

* `nginx_connections`: Het aantal connections dat uw NGINX-server momenteel verwerkt. Getagd op:
  * **`hostname`**: De hostname van de server die het verzoek heeft verwerkt.
  * **`measurement`**: Het specifieke aantal gemeten connections:
    * `active`: Het aantal actieve connections.
    * `reading`: Het aantal connections waar het verzoek wordt gelezen.
    * `writing`: Het aantal connections waar de response wordt geschreven.
    * `waiting`: Het aantal idle connections.

De connections-metric verwijst altijd naar de hostname als geheel, niet naar een specifieke groep. De waarde ervan wordt eenmaal per minuut bijgewerkt.

<Tip>
  De voor de metrics gebruikte server-hostname is niet de NGINX-hostname-waarde, maar
  de hostname-waarde die voor de AppSignal-integratie of standalone-
  agent is geconfigureerd. Deze waarde wordt meestal automatisch geconfigureerd en kan worden overschreven met
  de configuratieoptie `hostname`.
</Tip>

## Ondersteuning

Als u problemen ondervindt bij het configureren van de NGINX-metrics van uw applicatie, [neem dan contact op met ondersteuning](mailto:support@appsignal.com), en we helpen u uw metrics binnen te krijgen.
