Export NGINX instance metrics
F5 NGINX Agent now includes an embedded OpenTelemetry collector, streamlining observability and metric collection for NGINX instances. With this feature, you can collect:
- Metrics from NGINX Plus and NGINX Open Source
- Host metrics (CPU, memory, disk, and network activity) from VMs or Containers
The OpenTelemetry exporter is enabled by default. Once a valid connection to the management plane is established, the Agent will automatically begin exporting metrics.
- Seamless Integration: No need to deploy an external OpenTelemetry Collector. All components are embedded within the Agent for streamlined observability.
- Standardized Protocol: Support for OpenTelemetry standards ensures interoperability with a wide range of observability backends, including Jaeger, Prometheus, Splunk, and more.
You can validate that metrics are successfully exported by using the methods below:
-
NGINX One dashboard
- When an instance has connected to NGINX One Console See: Connect to NGINX One Console, you should see metrics showing on the NGINX One Console Dashboard.
-
Agent logs
Check the OpenTelemetry Collector logs for confirmation of successful metric processing:
-
Open the file:
/var/log/nginx-agent/opentelemetry-collector-agent.log
-
Look for the following logs:
Everything is ready. Begin running and processing data.
-
NGINX Agent generates a default OpenTelemetry config to send metrics to your management plane located at /etc/nginx-agent/opentelemetry-collector-agent.yaml
. An option is provided to
bring your own OpenTelemetry configs which will be merged with the NGINX Agent default config.
OpenTelemetry will merge your OpenTelemetry Config. The order of the OpenTelemetry config files matters, the last config in the list will take priority over others listed if they have the same value configured.
To have NGINX Agent use your own OpenTelemetry config:
- Edit the configuration file
sudo vim /etc/nginx-agent/nginx-agent.conf
- Add the collector property
collector:
additional_config_paths:
- "/my_config.yaml"
NGINX Agent uses/default
for naming its default processors, exporters and pipelines using the same naming in your own config might cause issues with sending metrics to your management plane
- Add Prometheus Exporter
exporters:
prometheus:
endpoint: "127.0.0.1:5643"
resource_to_telemetry_conversion:
enabled: true
service:
pipelines:
metrics/prometheus-example-pipeline:
receivers:
- nginxplus
processors:
- resource/default
exporters:
- prometheus
exporters:
prometheus:
endpoint: "127.0.0.1:5643"
resource_to_telemetry_conversion:
enabled: true
service:
pipelines:
metrics/prometheus-example-pipeline:
receivers:
- nginx
processors:
- resource/default
exporters:
- prometheus
- Third-party OTel Collector
exporters:
otlp/local-collector:
endpoint: "my-local-collector.com:443"
timeout: 10s
retry_on_failure:
enabled: true
initial_interval: 10s
max_interval: 60s
max_elapsed_time: 10m
tls:
insecure: true
service:
pipelines:
metrics/otlp-example-pipeline:
receivers:
- nginxplus
processors:
- resource/default
exporters:
- otpl/local-collector
exporters:
otlp/local-collector:
endpoint: "my-local-collector.com:443"
timeout: 10s
retry_on_failure:
enabled: true
initial_interval: 10s
max_interval: 60s
max_elapsed_time: 10m
tls:
insecure: true
service:
pipelines:
metrics/otlp-example-pipeline:
receivers:
- nginx
processors:
- resource/default
exporters:
- otpl/local-collector
- Add Debug Exporter
exporters:
debug:
verbosity: detailed
sampling_initial: 5
sampling_thereafter: 200
service:
pipelines:
metrics/debug-example-pipeline:
receivers:
- nginxplus
processors:
- resource/default
exporters:
- debug
exporters:
debug:
verbosity: detailed
sampling_initial: 5
sampling_thereafter: 200
service:
pipelines:
metrics/debug-example-pipeline:
receivers:
- nginx
processors:
- resource/default
exporters:
- debug
To view the merged OpenTelemetry configuration set the Agent log level to debug in /etc/nginx-agent/nginx-agent.conf
and restart NGINX Agent
- Edit the configuration file
sudo vim /etc/nginx-agent/nginx-agent.conf
- Change the log property
log:
level: debug
- Restart NGINX Agent
- View merged OpenTelemetry configuration
cat /var/lib/nginx-agent/opentelemetry-collector-agent-debug.yaml