Monitoring
Monitor your Foxglove Edge Site.
Online status
The edge controller checks in with the Foxglove API control plane periodically. Organization admins can see the site's status on the Sites settings page. A site that hasn't checked in for 10 minutes shows as "Offline".
Logs
To configure and view the edge controller's logs, see Logging.
Prometheus
The edge controller exposes processing statistics on a Prometheus metrics scraping endpoint at /metrics on port 6001, on all IPv4 addresses. Change the port with PROMETHEUS_PORT, or turn the endpoint off with DISABLE_PROMETHEUS=true. PROMETHEUS_METRICS_NAMESPACE and PROMETHEUS_METRICS_SUBSYSTEM add a prefix to every metric name.
For example, configure the endpoint and metric-name prefix with:
DISABLE_PROMETHEUS=false
PROMETHEUS_PORT=6001
PROMETHEUS_METRICS_NAMESPACE=
PROMETHEUS_METRICS_SUBSYSTEM=
On Kubernetes, set the prefix with edgeController.metrics.namespace and edgeController.metrics.subsystem in values.yaml. Set other variables through edgeController.env, using the quoting shown in the installation guide.
The endpoint starts after the edge controller logs site initialized. Until then, scrapes fail.
Check out the Prometheus documentation for more information.
Available metrics
Counters and histograms count from when the edge controller started, and reset to zero when it restarts. For example, recordings_indexed counts the recordings cataloged since the edge controller last started.
recordings_indexed– Number of recordings catalogedrecordings_indexed_bytes– Size of recording data cataloged, in bytesrecordings_imported– Number of recordings uploaded to the Primary Site's inboxrecordings_imported_bytes– Size of recording data uploaded to the Primary Site's inbox, in bytesrecordings_deleted– Number of recordings deleted from the Edge Siterecordings_deletion_retained– Number of recordings marked for deletion whose file remains after a failed deletion attemptrecordings_retained_pending_upload– Number of recordings older than the retention period, kept because their upload hasn't succeededrecordings_retained_pending_upload_bytes– Size of recordings older than the retention period, kept because their upload hasn't succeeded, in bytesimport_time_seconds– Histogram of upload times to the Primary Site, per recordingimport_throughput_mbps– Histogram of upload throughput to the Primary Site, per recording, in megabits per secondrecording_summary_read_ms– Histogram of timings for reading recording summaries from storagerecording_stat_ms– Histogram of timings for reading recording file metadata from storagerecording_index_ms– Histogram of timings for adding recordings to the catalogdeletion_mark_ms– Histogram of timings for marking recordings for deletion in the catalogdeletion_sweep_ms– Histogram of timings for each retention cleanup that removes recordings, including file removal and reporting to Foxglovecontrol_plane_post_recordings_ms– Histogram of timings for reporting new recordings to Foxglovecontrol_plane_patch_recordings_imported_ms– Histogram of timings for reporting upload results to Foxglovecontrol_plane_patch_recordings_deleted_ms– Histogram of timings for reporting deleted recordings to Foxglovepending_import_request_poll_ms– Histogram of timings for checking Foxglove for import requests
recordings_imported counts a recording as soon as its upload finishes, before the Primary Site imports it, so it doesn't show whether the import succeeded.
The following metrics describe the catalog. The edge controller updates them at startup and then hourly:
recordings_gigabytes– Total size of cataloged recordings, in gigabytes (1024³ bytes)database_recordings_count– Number of recordings in the catalogdatabase_topics_count– Number of unique topics and schemas in the catalogdatabase_recording_reports_count– Number of recording reports in the catalogdatabase_size_bytes– Size of the catalog database, in bytes
To see the available metrics on Kubernetes, forward the metrics port to your machine:
kubectl port-forward -n foxglove service/edge-controller 6001:6001
Then request the metrics endpoint:
curl http://localhost:6001/metrics