mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2026-05-04 14:21:33 +02:00
* feat(metrics): add source wrapper metrics for invalid and deduplicated endpoints Add GaugeVecMetric.Reset() to clear stale label combinations between cycles. Introduce invalidEndpoints and deduplicatedEndpoints gauge vectors in the source wrappers package, partitioned by record_type and source_type. The dedup source wrapper now tracks rejected (invalid) and de-duplicated endpoints per collection cycle. Update the metrics documentation and bump the known metrics count. Signed-off-by: Seena Fallah <seenafallah@gmail.com> * feat(source): add PTR source wrapper for automatic reverse DNS Implement ptrSource, a source wrapper that generates PTR endpoints from A/AAAA records. The wrapper supports: - Global default via WithCreatePTR (maps to --create-ptr flag) - Per-endpoint override via record-type provider-specific property - Grouping multiple hostnames sharing an IP into a single PTR endpoint - Skipping wildcard DNS names Add WithPTRSupported and WithCreatePTR options to the wrapper Config and wire the PTR wrapper into the WrapSources chain when PTR is in managed-record-types. Signed-off-by: Seena Fallah <seenafallah@gmail.com> * feat(config): add --create-ptr flag and deprecate --rfc2136-create-ptr Add the generic --create-ptr boolean flag to Config, enabling automatic PTR record creation for any provider. Add IsPTRSupported() helper that checks whether PTR is included in --managed-record-types. Add validation: --create-ptr (or legacy --rfc2136-create-ptr) now requires PTR in --managed-record-types, preventing misconfiguration. Mark --rfc2136-create-ptr as deprecated in the flag description. Signed-off-by: Seena Fallah <seenafallah@gmail.com> * refactor(rfc2136): remove inline PTR logic in favor of PTR source wrapper Remove the createPTR field, AddReverseRecord, RemoveReverseRecord, and GenerateReverseRecord methods from the rfc2136 provider. PTR record generation is now handled generically by the PTR source wrapper before records reach the provider. Update the PTR creation test to supply pre-generated PTR endpoints (simulating what the source wrapper produces) instead of relying on the provider to create them internally. Signed-off-by: Seena Fallah <seenafallah@gmail.com> * feat(controller): wire PTR source wrapper into buildSource Pass the top-level Config to buildSource so it can read IsPTRSupported() and the CreatePTR / RFC2136CreatePTR flags. When PTR is in managed-record-types, the PTR source wrapper is installed in the wrapper chain with the combined create-ptr default. Signed-off-by: Seena Fallah <seenafallah@gmail.com> * chore(pdns): remove stale comment and fix whitespace Remove an outdated comment about a single-target-per-tuple assumption that no longer applies. Signed-off-by: Seena Fallah <seenafallah@gmail.com> * docs: add PTR records documentation and update existing guides Add docs/advanced/ptr-records.md covering the --create-ptr flag, per-resource annotation overrides, prerequisites, and usage examples. Update: - annotations.md: document record-type annotation - flags.md: add --create-ptr, mark --rfc2136-create-ptr as deprecated - tutorials/rfc2136.md: point to generic --create-ptr flag - contributing/source-wrappers.md: add PTR wrapper to the chain - mkdocs.yml: add PTR Records navigation entry Signed-off-by: Seena Fallah <seenafallah@gmail.com> * feat(rfc2136)!: remove rfc2136-create-ptr in favor of create-ptr Signed-off-by: Seena Fallah <seenafallah@gmail.com> --------- Signed-off-by: Seena Fallah <seenafallah@gmail.com>
98 lines
9.2 KiB
Markdown
98 lines
9.2 KiB
Markdown
---
|
|
tags:
|
|
- metrics
|
|
- autogenerated
|
|
---
|
|
|
|
# Available Metrics
|
|
|
|
<!-- THIS FILE MUST NOT BE EDITED BY HAND -->
|
|
<!-- ON NEW METRIC ADDED PLEASE RUN 'make generate-metrics-documentation' -->
|
|
<!-- markdownlint-disable MD013 -->
|
|
|
|
All metrics available for scraping are exposed on the `/metrics` endpoint.
|
|
The metrics are in the Prometheus exposition format.
|
|
|
|
To access the metrics:
|
|
|
|
```sh
|
|
curl https://localhost:7979/metrics
|
|
```
|
|
|
|
## Supported Metrics
|
|
|
|
> Full metric name is constructed as follows:
|
|
> `external_dns_<subsystem>_<name>`
|
|
|
|
| Name | Metric Type | Subsystem | Labels | Help |
|
|
|:----------------------------------------|:------------|:-----------------|:--------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
| build_info | Gauge | | arch, go_version, os, revision, version | A metric with a constant '1' value labeled with 'version' and 'revision' of external_dns and the 'go_version', 'os' and the 'arch' used the build. |
|
|
| consecutive_soft_errors | Gauge | controller | | Number of consecutive soft errors in reconciliation loop. |
|
|
| last_reconcile_timestamp_seconds | Gauge | controller | | Timestamp of last attempted sync with the DNS provider |
|
|
| last_sync_timestamp_seconds | Gauge | controller | | Timestamp of last successful sync with the DNS provider |
|
|
| no_op_runs_total | Counter | controller | | Number of reconcile loops ending up with no changes on the DNS provider side. |
|
|
| verified_records | Gauge | controller | record_type | Number of DNS records that exists both in source and registry (vector). |
|
|
| request_duration_seconds | Summaryvec | http | handler, scheme, host, path, method, status | The HTTP request latencies in seconds. |
|
|
| cache_apply_changes_calls | Counter | provider | | Number of calls to the provider cache ApplyChanges. |
|
|
| cache_records_calls | Counter | provider | from_cache | Number of calls to the provider cache Records list. |
|
|
| endpoints_total | Gauge | registry | | Number of Endpoints in the registry |
|
|
| errors_total | Counter | registry | | Number of Registry errors. |
|
|
| records | Gauge | registry | record_type | Number of registry records partitioned by label name (vector). |
|
|
| skipped_records_owner_mismatch_per_sync | Gauge | registry | record_type, owner, foreign_owner, domain | Number of records skipped with owner mismatch for each record type, owner mismatch ID and domain (vector). |
|
|
| deduplicated_endpoints | Gauge | source | record_type, source_type | Number of endpoints currently removed as duplicates, partitioned by record type and source. |
|
|
| endpoints_total | Gauge | source | | Number of Endpoints in all sources |
|
|
| errors_total | Counter | source | | Number of Source errors. |
|
|
| invalid_endpoints | Gauge | source | record_type, source_type | Number of endpoints currently rejected due to invalid configuration, partitioned by record type and source. |
|
|
| records | Gauge | source | record_type | Number of source records partitioned by label name (vector). |
|
|
| adjustendpoints_errors_total | Gauge | webhook_provider | | Errors with AdjustEndpoints method |
|
|
| adjustendpoints_requests_total | Gauge | webhook_provider | | Requests with AdjustEndpoints method |
|
|
| applychanges_errors_total | Gauge | webhook_provider | | Errors with ApplyChanges method |
|
|
| applychanges_requests_total | Gauge | webhook_provider | | Requests with ApplyChanges method |
|
|
| records_errors_total | Gauge | webhook_provider | | Errors with Records method |
|
|
| records_requests_total | Gauge | webhook_provider | | Requests with Records method |
|
|
|
|
## Available Go Runtime Metrics
|
|
|
|
> The following Go runtime metrics are available for scraping. Please note that they may change over time and they are OS dependent.
|
|
|
|
| Name |
|
|
|:-------------------------------------|
|
|
| go_gc_duration_seconds |
|
|
| go_gc_gogc_percent |
|
|
| go_gc_gomemlimit_bytes |
|
|
| go_goroutines |
|
|
| go_info |
|
|
| go_memstats_alloc_bytes |
|
|
| go_memstats_alloc_bytes_total |
|
|
| go_memstats_buck_hash_sys_bytes |
|
|
| go_memstats_frees_total |
|
|
| go_memstats_gc_sys_bytes |
|
|
| go_memstats_heap_alloc_bytes |
|
|
| go_memstats_heap_idle_bytes |
|
|
| go_memstats_heap_inuse_bytes |
|
|
| go_memstats_heap_objects |
|
|
| go_memstats_heap_released_bytes |
|
|
| go_memstats_heap_sys_bytes |
|
|
| go_memstats_last_gc_time_seconds |
|
|
| go_memstats_mallocs_total |
|
|
| go_memstats_mcache_inuse_bytes |
|
|
| go_memstats_mcache_sys_bytes |
|
|
| go_memstats_mspan_inuse_bytes |
|
|
| go_memstats_mspan_sys_bytes |
|
|
| go_memstats_next_gc_bytes |
|
|
| go_memstats_other_sys_bytes |
|
|
| go_memstats_stack_inuse_bytes |
|
|
| go_memstats_stack_sys_bytes |
|
|
| go_memstats_sys_bytes |
|
|
| go_sched_gomaxprocs_threads |
|
|
| go_threads |
|
|
| process_cpu_seconds_total |
|
|
| process_max_fds |
|
|
| process_network_receive_bytes_total |
|
|
| process_network_transmit_bytes_total |
|
|
| process_open_fds |
|
|
| process_resident_memory_bytes |
|
|
| process_start_time_seconds |
|
|
| process_virtual_memory_bytes |
|
|
| process_virtual_memory_max_bytes |
|