.. _installation_observability_supporting_components: ================================= Observing supporting applications ================================= Open Forms uses a number of extra components/software applications which are not developed by the Open Forms development team. Typically you'll also want to add observability to these components as they may be a point of failure. In this documentation section, you find some recommendations on how to make them observable. We assume that you're using `OTel Collector `_ to ingest telemetry data. PostgreSQL ========== Open Forms persists its data in a relational PostgreSQL database. The database (cluster) can also be observed. Possibly your managed hosting provider already exports metrics, and if not, you can use the `PostgreSQL Receiver `_ contrib package from OTel Collector. Example configuration: .. code-block:: yaml receivers: otlp: ... postgresql: endpoint: "db:5432" transport: tcp username: otelu password: supersecret databases: - openforms tls: insecure: true service: metrics: receivers: [otlp, postgresql] processors: [...] exporters: [...] It's not relevant if the database is running as a container, on the host system or in some managed hosting environment as long as the collector can connect to it with the right privileges (see the contrib package documentation for details). Redis ===== :ref:`Redis ` (or alternatively `Valkey `_) acts as cache and message broker. The OTel Collector contrib package supports extracting metrics from Redis instances through the `Redis Receiver `_. Example configuration: .. code-block:: yaml receivers: otlp: ... redis: endpoint: "my-redis-service:6379" tls: insecure: true service: metrics: receivers: [otlp, redis] processors: [...] exporters: [...] The receiver will periodically scrape the redis instance(s). Adapt the configuration as needed for the correct host name and possible authentication credentials. nginx ===== Metrics ------- nginx is used as reverse proxy and for serving binary files. The OTel Collector contrib package supports extracting some basic metrics by leveraging the "stub status" module, via the `nginx receiver `_. Example configuration: .. code-block:: yaml receivers: otlp: ... redis: endpoint: "nginx:8080/_status" service: metrics: receivers: [otlp, nginx] processors: [...] exporters: [...] Traces ------ nginx provides the `ngx_otel_module `_ for distributed tracing - which is not compiled/enabled by default. The Open Forms team does not publish an image with this module enabled - you can opt-into doing this yourself. Our `docker-compose.yml `_ can provide inspiration. Follow the upstream documentation on how to enable this - it should be pretty straight forward to send the OTLP traces to the collector receiver since this is the same mechanism as exporting the application-specific telemetry. Flower ====== `Flower `_ is a Celery monitoring tool. It natively exposes Prometheus metrics, which you can scrape with the OTel Collector `Prometheus receiver `_. Example configuration: .. code-block:: yaml receivers: otlp: ... prometheus: config: scrape_configs: - job_name: 'otel-flower' scrape_interval: 15s static_configs: - targets: ['celery-flower:5555'] metrics_path: /metrics service: metrics: receivers: [otlp, prometheus] processors: [...] exporters: [...]