diff --git a/controller/controller.go b/controller/controller.go index ccafc9db6..63ae9f624 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -73,6 +73,14 @@ var ( Help: "Timestamp of last successful sync with the DNS provider", }, ) + lastReconcileTimestamp = prometheus.NewGauge( + prometheus.GaugeOpts{ + Namespace: "external_dns", + Subsystem: "controller", + Name: "last_reconcile_timestamp_seconds", + Help: "Timestamp of last attempted sync with the DNS provider", + }, + ) controllerNoChangesTotal = prometheus.NewCounter( prometheus.CounterOpts{ Namespace: "external_dns", @@ -151,6 +159,7 @@ func init() { prometheus.MustRegister(sourceEndpointsTotal) prometheus.MustRegister(registryEndpointsTotal) prometheus.MustRegister(lastSyncTimestamp) + prometheus.MustRegister(lastReconcileTimestamp) prometheus.MustRegister(deprecatedRegistryErrors) prometheus.MustRegister(deprecatedSourceErrors) prometheus.MustRegister(controllerNoChangesTotal) @@ -191,6 +200,8 @@ type Controller struct { // RunOnce runs a single iteration of a reconciliation loop. func (c *Controller) RunOnce(ctx context.Context) error { + lastReconcileTimestamp.SetToCurrentTime() + records, err := c.Registry.Records(ctx) if err != nil { registryErrorsTotal.Inc() @@ -248,6 +259,7 @@ func (c *Controller) RunOnce(ctx context.Context) error { } lastSyncTimestamp.SetToCurrentTime() + return nil } diff --git a/docs/faq.md b/docs/faq.md index 4463ffd2d..73ed9faad 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -178,19 +178,21 @@ You can use the host label in the metric to figure out if the request was agains Here is the full list of available metrics provided by ExternalDNS: -| Name | Description | Type | -| --------------------------------------------------- | ------------------------------------------------------------------ | ------- | -| external_dns_controller_last_sync_timestamp_seconds | Timestamp of last successful sync with the DNS provider | Gauge | -| external_dns_registry_endpoints_total | Number of Endpoints in all sources | Gauge | -| external_dns_registry_errors_total | Number of Registry errors | Counter | -| external_dns_source_endpoints_total | Number of Endpoints in the registry | Gauge | -| external_dns_source_errors_total | Number of Source errors | Counter | -| external_dns_controller_verified_aaaa_records | Number of DNS AAAA-records that exists both in source and registry | Gauge | -| external_dns_controller_verified_a_records | Number of DNS A-records that exists both in source and registry | Gauge | -| external_dns_registry_aaaa_records | Number of AAAA records in registry | Gauge | -| external_dns_registry_a_records | Number of A records in registry | Gauge | -| external_dns_source_aaaa_records | Number of AAAA records in source | Gauge | -| external_dns_source_a_records | Number of A records in source | Gauge | +| Name | Description | Type | +| -------------------------------------------------------- | ------------------------------------------------------------------ | ------- | +| external_dns_controller_last_sync_timestamp_seconds | Timestamp of last successful sync with the DNS provider | Gauge | +| external_dns_controller_last_reconcile_timestamp_seconds | Timestamp of last attempted sync with the DNS provider | Gauge | +| external_dns_registry_endpoints_total | Number of Endpoints in all sources | Gauge | +| external_dns_registry_errors_total | Number of Registry errors | Counter | +| external_dns_source_endpoints_total | Number of Endpoints in the registry | Gauge | +| external_dns_source_errors_total | Number of Source errors | Counter | +| external_dns_controller_verified_aaaa_records | Number of DNS AAAA-records that exists both in source and registry | Gauge | +| external_dns_controller_verified_a_records | Number of DNS A-records that exists both in source and registry | Gauge | +| external_dns_registry_aaaa_records | Number of AAAA records in registry | Gauge | +| external_dns_registry_a_records | Number of A records in registry | Gauge | +| external_dns_source_aaaa_records | Number of AAAA records in source | Gauge | +| external_dns_source_a_records | Number of A records in source | Gauge | + ### How can I run ExternalDNS under a specific GCP Service Account, e.g. to access DNS records in other projects?