Supabase OpenTelemetry Integration

Version 0.1.4 (View all)
Managed integration release status
Subscription level
What's this?
Basic
Developed by
What's this?
Elastic
Minimum Kibana version(s) 9.4.0
Important - Managed integrations on Elastic Cloud Hosted

You can use this integration as an Elastic Managed integration on Elastic Cloud Hosted deployments running this version or later.

The Supabase (OpenTelemetry) integration v0.1.4 is in technical preview

To use pre-release integrations, go to the Integrations page in Kibana, scroll down, and toggle on the Display beta integrations option.

Supabase is an open-source Firebase alternative built on PostgreSQL. It bundles a managed Postgres database with authentication, auto-generated REST APIs, realtime subscriptions, file storage, and connection pooling.

This integration scrapes metrics from the Supabase Metrics API (Prometheus-compatible) using the OTel Collector's Prometheus receiver. Logs are forwarded through Supabase Log Drains into an Elastic Cloud managed endpoint. Elastic operates the endpoint for logs, so you do not need to install or run an OpenTelemetry Collector.

  • Metrics (supabase.metrics.otel) — Infrastructure (CPU, memory, load, disk I/O, filesystem, network), PostgreSQL (size, connections, transactions, cache, WAL, replication, bgwriter, statements), Supavisor, PostgREST, Auth, Realtime, and Storage
  • Logs (supabase.otel) — API Gateway, PostgreSQL, PostgREST, Edge Functions, Storage, Realtime, and connection pooling

Metrics are stored with native OTel schema — no field renaming or custom mapping is applied. Raw Prometheus metric names are preserved under the metrics.* namespace.

Once data starts flowing, the Supabase OpenTelemetry Assets package provides dashboards for infrastructure, PostgreSQL, application services, and service logs.

This integration requires a Supabase Pro, Team, or Enterprise plan. The Metrics API and Log Drains are not available on the Free tier.

The log drain path has been tested with Supabase Log Drains delivering OTLP logs to /inputs/supabase/_default_/v1/logs on the Elastic Cloud managed endpoint.

You need Elasticsearch for storing and searching your data and Kibana for visualizing and managing it. You can use our hosted Elasticsearch Service on Elastic Cloud, which is recommended, or self-manage the Elastic Stack on your own hardware.

Note

The managed endpoint used for logs is available on Elastic Cloud Serverless and Elastic Cloud Hosted. It is not available for self-managed, ECE, or ECK clusters. Refer to Managed inputs.

Requirement Details
Supabase plan Pro, Team, or Enterprise
Elastic Stack 9.4.0+
Input package prometheus_input_otel (installed automatically as a dependency)
Content package supabase_otel (installed automatically as a dependency)
  1. Get your Supabase credentials:

    • Go to your Supabase dashboard → SettingsAPI
    • Copy the Project URL (e.g., abcdefghijkl.supabase.co)
    • Copy the service_role key (under "Project API keys")
  2. Add the integration in Kibana:

    • Go to ManagementIntegrations → search for "Supabase"
    • Click Add Supabase
    • Fill in:
      • Targets: <your-project-ref>.supabase.co:443
      • Username: service_role
      • Service Role Key: paste your service_role JWT

Supabase logs reach Elasticsearch through a Supabase log drain that posts OTLP to an Elastic Cloud managed endpoint.

Setup has three parts, done in order:

  1. Enable Supabase Log Drains.
  2. Gather a managed endpoint URL and an API key from Elastic.
  3. Create the log drain in Supabase.

Logs are available through Supabase Log Drains. Log drains require a Pro, Team, or Enterprise plan.

In Kibana, go to Add dataMoreSupabase and copy the Supabase logs endpoint. The URL follows this pattern:

https://<managed-endpoint>/inputs/supabase/_default_/v1/logs
		

For example:

https://abc123.ingest.us-east-1.aws.elastic.cloud/inputs/supabase/_default_/v1/logs
		

Create an API key in the same view, or follow the Send data to Elastic Cloud quickstart. Supabase sends it as Authorization: ApiKey <your-api-key>.

  1. Open Project SettingsLog Drains and create a drain.
  2. Choose OpenTelemetry (OTLP) as the destination.
  3. Set Endpoint to the Supabase logs endpoint URL, for example https://abc123.ingest.us-east-1.aws.elastic.cloud/inputs/supabase/_default_/v1/logs.
  4. Set Protocol to http/protobuf and enable Gzip.
  5. Add header Authorization: ApiKey <your-api-key>.
  6. Save the drain.
Note

The managed endpoint URL for logs from Supabase is always your Elastic Cloud public endpoint plus /inputs/supabase/_default_/v1/logs. Do not point the drain at a self-hosted collector; the supported path is the Elastic Cloud managed endpoint.

In Discover:

  • Metrics: data_stream.dataset: "supabase.metrics.otel"
  • Logs: data_stream.dataset: "supabase.otel"

Supabase metrics are scraped by this integration. Log drain payloads are decoded by the Elastic Cloud managed endpoint and written to the data streams below. For log drain configuration on the Supabase side, see Log Drains. For managed endpoint behavior, see Managed inputs.

Signal Data stream Fields
Metrics metrics-supabase.metrics.otel-* Supabase Metrics documentation

Metrics are scraped from the Supabase Metrics API endpoint:

GET https://<project-ref>.supabase.co/customer/v1/privileged/metrics
		

Authentication uses HTTP Basic Auth with service_role as the username and the service_role JWT as the password.

See the Supabase Metrics documentation for full details on available metrics.

Category Prefix Examples
Node / Infrastructure node_* node_cpu_seconds_total, node_memory_MemAvailable_bytes, node_load5, node_disk_read_bytes_total
PostgreSQL pg_* pg_stat_database_xact_commit_total, pg_database_size_mb, pg_stat_bgwriter_buffers_alloc_total
Supavisor supavisor_* supavisor_connections_active, supavisor_pool_connections_idle, supavisor_client_queries_count_total
PostgREST pgrst_* pgrst_db_pool_available, pgrst_db_pool_timeouts_total, pgrst_schema_cache_query_time_seconds
Auth (GoTrue) gotrue_* gotrue_running, gotrue_compare_hash_and_password_completed_total
Realtime realtime_* realtime_postgres_changes_client_subscriptions
Go Runtime go_*, process_* go_goroutines, process_cpu_seconds_total, process_resident_memory_bytes
HTTP http_* http_server_request_duration_seconds_total, http_status_codes_total

All metrics are stored under the metrics.* field namespace with their original Prometheus names (e.g., metrics.node_load5, metrics.pg_stat_database_xact_commit_total).

Signal Data stream Fields
Logs logs-supabase.otel-* Supabase Log Drains

The Logs data stream holds every service forwarded by the drain. Use the Service filter on the Service logs overview dashboard to focus on a single service.