Caddy.Telemetry (Caddy v2.3.1)
View SourceTelemetry integration for Caddy reverse proxy server monitoring.
Provides metrics and events for configuration changes, server lifecycle, API operations, and performance monitoring.
Summary
Functions
Attaches a telemetry handler for common Caddy events.
Detaches a telemetry handler.
Emits a telemetry event for adaptation operations.
Emits a telemetry event for API operations.
Emits a telemetry event for configuration changes.
Emits a telemetry event for ConfigManager operations.
Emits a telemetry event for external mode operations.
Emits a telemetry event for file operations.
Emits a telemetry event for logging operations.
Emits a telemetry event for metrics operations.
Emits a telemetry event for Resources operations.
Emits a telemetry event for server lifecycle events.
Emits a telemetry event for application state changes.
Emits a telemetry event for configuration validation.
Returns list of all Caddy telemetry events.
Emits a debug level log event.
Emits an error level log event.
Emits an info level log event.
Emits a warning level log event.
Starts telemetry poller for periodic metrics.
Functions
Attaches a telemetry handler for common Caddy events.
@spec detach_handler(atom()) :: :ok
Detaches a telemetry handler.
Emits a telemetry event for adaptation operations.
Emits a telemetry event for API operations.
Emits a telemetry event for configuration changes.
Emits a telemetry event for ConfigManager operations.
Event Types
:sync_to_caddy- When syncing in-memory config to running Caddy:sync_from_caddy- When pulling config from running Caddy:drift_check- When checking for config drift:rollback- When rolling back to previous config:apply- When applying runtime config directly:validate- When validating config
Examples
Caddy.Telemetry.emit_config_manager_event(:sync_to_caddy, %{duration: 100}, %{success: true})
Emits a telemetry event for external mode operations.
Event Types
:init- When external server initializes:health_check- When health check is performed:command_executed- When a system command is executed:config_pushed- When configuration is pushed to external Caddy:status_changed- When Caddy status changes (running/stopped/unknown):terminate- When external server terminates
Examples
Caddy.Telemetry.emit_external_event(:health_check, %{duration: 50}, %{status: :running})
Caddy.Telemetry.emit_external_event(:command_executed, %{duration: 100}, %{command: :restart})
Emits a telemetry event for file operations.
Emits a telemetry event for logging operations.
Emits a telemetry event for metrics operations.
Event Types
:collected- When metrics are successfully fetched and parsed:fetch_error- When fetching metrics fails:poller_started- When the metrics poller starts:poller_stopped- When the metrics poller stops
Examples
Caddy.Telemetry.emit_metrics_event(:collected, %{duration: 50}, %{metric_count: 25})
Emits a telemetry event for Resources operations.
Event Types
:get- When reading a resource:set- When updating a resource:delete- When deleting a resource:error- When an operation fails
Examples
Caddy.Telemetry.emit_resources_event(:get, %{duration: 50}, %{resource: :http_servers})
Emits a telemetry event for server lifecycle events.
Emits a telemetry event for application state changes.
Event: [:caddy, :state, :changed]
This event is emitted whenever the application state machine transitions from one state to another.
Metadata
:from- The previous state:to- The new state
Examples
Caddy.Telemetry.emit_state_change_event(:unconfigured, :configured)
Emits a telemetry event for configuration validation.
@spec list_events() :: list()
Returns list of all Caddy telemetry events.
Emits a debug level log event.
Examples
Caddy.Telemetry.log_debug("Server starting", module: __MODULE__)
Emits an error level log event.
Examples
Caddy.Telemetry.log_error("Failed to start server", error: reason)
Emits an info level log event.
Examples
Caddy.Telemetry.log_info("Configuration loaded", config_size: 10)
Emits a warning level log event.
Examples
Caddy.Telemetry.log_warning("Deprecated function used", function: :old_api)
@spec start_poller(non_neg_integer()) :: {:ok, pid()} | {:error, term()} | :ignore
Starts telemetry poller for periodic metrics.