Files
Malin 8d4eaa1489 feat: add full Zonemaster stack with Docker and Spanish UI
- Clone all 5 Zonemaster component repos (LDNS, Engine, CLI, Backend, GUI)
- Dockerfile.backend: 8-stage multi-stage build LDNS→Engine→CLI→Backend
- Dockerfile.gui: Astro static build served via nginx
- docker-compose.yml: backend (internal) + frontend (port 5353)
- nginx.conf: root redirects to /es/, /api/ proxied to backend
- zonemaster-gui/config.ts: defaultLanguage set to 'es' (Spanish)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 08:19:24 +02:00

74 lines
3.7 KiB
Markdown

# Telemetry
## Metrics
If enabled in the [Metrics section][metrics feature] in the configuration file,
[Statsd][statsd] compatible metrics are available to use:
| Name | Type | Description |
| ------------------------------------------------ | ------- | ----------- |
| zonemaster.rpcapi.requests.\<METHOD>.\<STATUS> | Counter | Number of times the JSON RPC method \<METHOD> resulted in JSON RPC status \<STATUS>. The status is represented in string, possible values are: `RPC_PARSE_ERROR`, `RPC_INVALID_REQUEST`, `RPC_METHOD_NOT_FOUND`, `RPC_INVALID_PARAMS`, `RPC_INTERNAL_ERROR`. |
| zonemaster.testagent.tests_started | Counter | Number of tests that have started. |
| zonemaster.testagent.tests_completed | Counter | Number of tests that have been completed successfully. |
| zonemaster.testagent.tests_died | Counter | Number of tests that have died. |
| zonemaster.testagent.tests_duration_seconds | Timing | The duration of a test, emitted for each test. |
| zonemaster.testagent.cleanup_duration_seconds | Timing | Time spent to kill timed out processes. |
| zonemaster.testagent.fetchtests_duration_seconds | Timing | Time spent selecting the next text to run and processing unfinished tests. |
| zonemaster.testagent.running_processes | Gauge | Number of running processes in a test agent. |
| zonemaster.testagent.maximum_processes | Gauge | Maximum number of running processes in a test agent. |
### Usage
Testing the metrics feature can be as easy as running a listening UDP server like
```sh
ns -lup 8125
```
This should be enough to see the metrics emitted by Zonemaster.
More complex setups are required for the metrics to be used in alerts and dashboards.
StatsD metrics can be integrated to a number of metrics backend like Prometheus (using the [StatsD exporter]), InfluxDB (using Telegraf and the [StatsD plugin]), Graphite ([integration guide]) and others.
#### StatsD Exporter (Prometheus)
1. Download the binary (tar file) corresponding to your environment https://github.com/prometheus/statsd_exporter/releases
2. Untar the file
3. `cd` into the statsd_exporter directory
4. Create a `statsd_mapping.yml` file with content as below
```yml
mappings:
- match: zonemaster.rpcapi.requests.*.*
name: zonemaster_rpcapi_requests_total
labels:
method: $1
status: $2
- match: zonemaster.testagent.tests_duration_seconds
observer_type: histogram
buckets: [ 1, 2.5, 5, 10, 15, 30, 45, 60, 75, 90, 105, 120, 150, 180]
name: zonemaster_testagent_tests_duration_seconds
- match: zonemaster.testagent.cleanup_duration_seconds
observer_type: histogram
buckets: [ 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]
name: zonemaster_testagent_cleanup_duration_seconds
- match: zonemaster.testagent.fetchtests_duration_seconds
observer_type: histogram
buckets: [ 0.001, 0.0025, 0.005, 0.0075, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 3, 5, 10]
name: zonemaster_testagent_fetchtests_duration_seconds
```
5. Run it like
```
./statsd_exporter --statsd.mapping-config=./statsd_mapping.yml --statsd.listen-udp=:8125 --statsd.listen-tcp=:8125
```
6. Run the following to see Zonemaster metrics:
```
curl localhost:9102/metrics | grep zonemaster
```
[metrics feature]: ../../installation/zonemaster-backend.md#101-metrics
[statsd]: https://github.com/statsd/statsd
[StatsD exporter]: https://github.com/prometheus/statsd_exporter
[StatsD plugin]: https://github.com/influxdata/telegraf/tree/master/plugins/inputs/statsd
[integration guide]: https://github.com/statsd/statsd/blob/master/docs/graphite.md