Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/config/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,8 @@ integration/strimzi:
- strimzi/**/*
integration/supabase:
- supabase/**/*
integration/supabase_cloud:
- supabase_cloud/**/*
integration/supervisord:
- supervisord/**/*
integration/supply_chain_firewall:
Expand Down
7 changes: 7 additions & 0 deletions supabase_cloud/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# CHANGELOG - Supabase Cloud

## 1.0.0 / 2025-11-03

***Added***:

* Initial Release with support for Supabase project metrics and Log Drain
65 changes: 65 additions & 0 deletions supabase_cloud/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
## Overview

[Supabase][2] is a Postgres development platform that provides a Postgres database with additional features including
Authentication, instant APIs, Edge Functions, Realtime subscriptions, Object Storage, and Vector embeddings.
While Supabase supports a self-hosted version, this integration only supports Supabase Cloud project instances.

With this integration, you can, per Supabase project:
- Collect essential Postgres Database metrics and monitor critical behavior.
- Collect Postgres server OS metrics and monitor CPU/Filesystem/Memory/Network load.
- With a [Supabase Log Drain][3] enabled:
- Collect Postgres database logs which can include slow statements, errors, and audit logs.
- Collect Supabase application layer logs such as edge functions and Auth/REST/Storage/Realtime APIs.
- Collect business logic log messages from your edge function applications.

## Setup

The Supabase Cloud integration requires the service_role API key to retrieve metrics from the hosted project's
[metrics endpoint][4] only.

### Retrieve the service_role API key

1. Log in to [Supabase][2] as an administrator.
2. Navigate to **Project Settings** > **API Keys**.
3. On the **Legacy API Keys** tab, retrieve the service_role API key.

### Connect your Supabase Cloud project to Datadog

1. Add your Supabase hosted project ID and service_role API key
|Parameters|Description|
|--------------------|--------------------|
|Project ID|Supabase project ID: E.g. `https://supabase.com/dashboard/project/<project_id>/settings/general`.|
|Service_role API Key|API key needed for communication with the Metrics endpoint.|

2. Click the **Save** button to save your settings.

## Data Collected

### Metrics

See [metadata.csv][5] for the full list of metrics provided by this integration.

### Logs

When you enable a Log Drain within Supabase for your hosted project, all Postgres and application log
messages will be pushed to Datadog. Datadog leverages its built-in log pipelines to parse and enrich these logs,
facilitating easy search and detailed insights.

### Events

The Supabase Cloud integration does not include any events.

### Service Checks

The Supabase Cloud integration does not include any service checks.

## Troubleshooting

Need help? Contact [Datadog support][1].

[1]: https://docs.datadoghq.com/help/
[2]: https://supabase.com/
[3]: https://supabase.com/docs/guides/telemetry/log-drains
[4]: https://supabase.com/docs/guides/telemetry/metrics
[5]: https://github.com/DataDog/integrations-core/blob/master/supabase_cloud/metadata.csv

1 change: 1 addition & 0 deletions supabase_cloud/assets/service_checks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
54 changes: 54 additions & 0 deletions supabase_cloud/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"manifest_version": "2.0.0",
"app_uuid": "76054e37-5919-442f-a7a6-5a77ed5e7b0e",
"app_id": "supabase-cloud",
"display_on_public_website": false,
"tile": {
"overview": "README.md#Overview",
"configuration": "README.md#Setup",
"support": "README.md#Support",
"changelog": "CHANGELOG.md",
"description": "Monitor the activity, health, and performance of your Supabase Cloud projects.",
"title": "Supabase Cloud",
"media": [],
"classifier_tags": [
"Category::Cloud",
"Category::Developer Tools",
"Category::Metrics",
"Category::Log Collection",
"Offering::Integration",
"Submitted Data Type::Metrics",
"Submitted Data Type::Logs"
]
},
"assets": {
"integration": {
"auto_install": false,
"source_type_id": 60482379,
"source_type_name": "Supabase Cloud",
"events": {
"creates_events": false
},
"metrics": {
"prefix": "supabase.cloud.",
"check": [
"supabase.cloud.pg.up",
"supabase.cloud.pg_database.size.mb"
],
"metadata_path": "metadata.csv"
},
"service_checks": {
"metadata_path": "assets/service_checks.json"
}
},
"dashboards": {},
"monitors": {},
"saved_views": {}
},
"author": {
"support_email": "help@datadoghq.com",
"name": "Datadog",
"homepage": "https://www.datadoghq.com",
"sales_email": "info@datadoghq.com"
}
}
66 changes: 66 additions & 0 deletions supabase_cloud/metadata.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
metric_name,metric_type,interval,unit_name,per_unit_name,description,orientation,integration,short_name,curated_metric,sample_tags
supabase.cloud.auth_users.user_count,gauge,,user,,The number of users in the project database.,0,supabase_cloud,,,
supabase.cloud.connection.stats.connection.count,gauge,,user,,The number of connections to the project database.,0,supabase_cloud,,,
supabase.cloud.node.cpu.online,count,,,,The CPU is online.,0,supabase_cloud,,,
supabase.cloud.node.cpu.seconds.count,count,,second,,The number of seconds the CPUs spent in each mode.,0,supabase_cloud,,,
supabase.cloud.node.disk.filesystem.info,gauge,,,,The disk filesystem description.,0,supabase_cloud,,,
supabase.cloud.node.disk.info,gauge,,,,"The disk device name, model, etc. described via tags.",0,supabase_cloud,,,
supabase.cloud.node.disk.io_time_seconds.count,count,,second,,The total seconds spent doing I/Os.,0,supabase_cloud,,,
supabase.cloud.node.disk.io_time_weighted_seconds.count,count,,,,The weighted # of seconds spent doing I/Os.,0,supabase_cloud,,,
supabase.cloud.node.disk.read_bytes.count,count,,byte,,The total number of bytes read successfully.,0,supabase_cloud,,,
supabase.cloud.node.disk.read_time_seconds.count,count,,,,The total number of seconds spent by all reads.,0,supabase_cloud,,,
supabase.cloud.node.disk.write_time_seconds.count,count,,second,,This is the total number of seconds spent by all writes.,0,supabase_cloud,,,
supabase.cloud.node.disk.written_bytes.count,count,,byte,,The total number of bytes written successfully.,0,supabase_cloud,,,
supabase.cloud.node.filesystem.avail.bytes,gauge,,byte,,The filesystem space available to non-root users in bytes.,0,supabase_cloud,,,
supabase.cloud.node.filesystem.device_error,gauge,,,,Whether an error occurred while getting statistics for the given device.,0,supabase_cloud,,,
supabase.cloud.node.filesystem.size_bytes,gauge,,byte,,The filesystem size in bytes,0,supabase_cloud,,,
supabase.cloud.node.load1,gauge,,,,1m load average.,0,supabase_cloud,,,
supabase.cloud.node.load15,gauge,,,,15m load average.,0,supabase_cloud,,,
supabase.cloud.node.load5,gauge,,,,5m load average.,0,supabase_cloud,,,
supabase.cloud.node.memory.active_bytes,gauge,,byte,,Memory information field Active_bytes.,0,supabase_cloud,,,
supabase.cloud.node.memory.buffers.bytes,gauge,,byte,,Memory information field Buffers_bytes.,0,supabase_cloud,,,
supabase.cloud.node.memory.cached_byte.,gauge,,byte,,Memory information field Cached_bytes.,0,supabase_cloud,,,
supabase.cloud.node.memory.inactive.bytes,gauge,,byte,,Memory information field Inactive_bytes.,0,supabase_cloud,,,
supabase.cloud.node.memory.mem_available.bytes,gauge,,byte,,Memory information field MemAvailable_bytes.,0,supabase_cloud,,,
supabase.cloud.node.memory.mem_free.bytes,gauge,,byte,,Memory information field MemFree_bytes.,0,supabase_cloud,,,
supabase.cloud.node.memory.mem_total.bytes,gauge,,byte,,Memory information field MemTotal_bytes.,0,supabase_cloud,,,
supabase.cloud.node.memory.swap_free.bytes,gauge,,byte,,Memory information field SwapFree_bytes.,0,supabase_cloud,,,
supabase.cloud.node.memory.swap_total.bytes,gauge,,byte,,Memory information field SwapTotal_bytes.,0,supabase_cloud,,,
supabase.cloud.node.network.receive_bytes.count,count,,byte,,Network device statistic receive_bytes.,0,supabase_cloud,,,
supabase.cloud.node.network.transmit_bytes.count,count,,byte,,Network device statistic transmit_bytes.,0,supabase_cloud,,,
supabase.cloud.node.vmstat.oom_kill.count,count,,,,/proc/vmstat information field oom_kill.,0,supabase_cloud,,,
supabase.cloud.pg.up,gauge,,,,Whether the last scrape of metrics from PostgreSQL was able to connect to the server.,0,supabase_cloud,,,
supabase.cloud.pg_database.size.mb,gauge,,megabyte,,Disk space used by the database.,0,supabase_cloud,,,
supabase.cloud.pg_stat_bgwriter.buffers_alloc.count,count,,,,Buffers allocated,0,supabase_cloud,,,
supabase.cloud.pg_stat_bgwriter.buffers_checkpoint.count,count,,,,Buffers written during checkpoints,0,supabase_cloud,,,
supabase.cloud.pg_stat_bgwriter.buffers_clean.count,count,,,,Buffers written by bg writter,0,supabase_cloud,,,
supabase.cloud.pg_stat_bgwriter.checkpoint_sync_time.count,count,,,,Time spent synchronizing checkpoint files to disk,0,supabase_cloud,,,
supabase.cloud.pg_stat_bgwriter.checkpoint_write_time.count,count,,,,Time spent writing checkpoint files to disk,0,supabase_cloud,,,
supabase.cloud.pg_stat_bgwriter.checkpoints_req.count,count,,,,Requested checkpoints performed,0,supabase_cloud,,,
supabase.cloud.pg_stat_bgwriter.checkpoints_timed.count,count,,,,Scheduled checkpoints performed,0,supabase_cloud,,,
supabase.cloud.pg_stat_bgwriter.maxwritten_clean.count,count,,,,Number of times bg writer stopped a cleaning scan because it had written too many buffers,0,supabase_cloud,,,
supabase.cloud.pg_stat_bgwriter.stats_reset.count,count,,,,Most recent stat reset time,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.blks_hit.count,count,,,,Disk blocks found in buffer cache,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.blks_read.count,count,,,,Number of disk blocks read,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.deadlocks.count,count,,,,Deadlocks detected,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.num_backends,gauge,,,,The number of active backends,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.temp_bytes.count,count,,byte,,Temp data written by queries,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.temp_files.count,count,,,,Temp files created by queries,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.tup_deleted.count,count,,,,Rows deleted,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.tup_fetched.count,count,,,,Rows fetched by queries,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.tup_inserted.count,count,,,,Rows inserted,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.tup_returned.count,count,,,,Rows returned by queries,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.tup_updated.count,count,,,,Rows updated,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.xact_commit.count,count,,,,Transactions committed,0,supabase_cloud,,,
supabase.cloud.pg_stat_database.xact_rollback.count,count,,,,Transactions rolled back,0,supabase_cloud,,,
supabase.cloud.pg_status.in_recovery,gauge,,,,Database in recovery,0,supabase_cloud,,,
supabase.cloud.pg_wal.size,gauge,,megabyte,,Disk space used by WAL files,0,supabase_cloud,,,
supabase.cloud.pgrst.db_pool.available_connections,gauge,,connection,,Available connections in the pool,0,supabase_cloud,,,
supabase.cloud.pgrst.db_pool.max_connections,gauge,,connection,,Max pool connections,0,supabase_cloud,,,
supabase.cloud.pgrst.db_pool.timeouts.count,count,,connection,,The total number of pool connection timeouts,0,supabase_cloud,,,
supabase.cloud.pgrst.db_pool.waiting,gauge,,,,Requests waiting to acquire a pool connection,0,supabase_cloud,,,
supabase.cloud.pgrst.schema_cache.loads.count,count,,,,The total number of times the schema cache was loaded,0,supabase_cloud,,,
supabase.cloud.pgrst.schema_cache.query_time_seconds,gauge,,second,,The query time in seconds of the last schema cache load,0,supabase_cloud,,,
supabase.cloud.postgresql.restarts.count,count,,,,Number of times postgresql has been restarted,0,supabase_cloud,,,
supabase.cloud.realtime_postgres_changes.client_subscriptions,gauge,,,,Client subscriptions listening for Postgres changes,0,supabase_cloud,,,
supabase.cloud.realtime_postgres_changes.total_subscriptions,gauge,,,,Total subscription records listening for Postgres changes,0,supabase_cloud,,,