import Link from 'next/link' import { Datadog, Grafana } from 'icons' import { Flame } from 'lucide-react' import type { ReactNode } from 'react' interface MetricsStackOption { title: string description: ReactNode href: string icon: ReactNode iconColor: string iconBg: string badges: { label: string; variant: 'default' | 'community' }[] } const metricsStackOptions: MetricsStackOption[] = [ { title: 'Grafana Cloud (SaaS)', description: ( <> Use Grafana Cloud’s managed Prometheus (works on Free + Pro tiers) and import the Supabase dashboard without running any infrastructure. ), href: '/guides/telemetry/metrics/grafana-cloud', icon: , iconColor: '#F05A28', iconBg: 'rgba(240,90,40,0.1)', badges: [ { label: 'Supabase guide', variant: 'default' }, { label: 'Community', variant: 'community' }, ], }, { title: 'Grafana + self-hosted Prometheus', description: ( <> Run Prometheus yourself following the official installation guidance and pair it with Grafana plus our dashboard JSON and alert pack. ), href: '/guides/telemetry/metrics/grafana-self-hosted', icon: , iconColor: '#F05A28', iconBg: 'rgba(240,90,40,0.1)', badges: [{ label: 'Supabase guide', variant: 'default' }], }, { title: 'Datadog', description: ( <> Scrape the Metrics API with the Datadog Agent or Prometheus remote write and monitor Supabase alongside your app telemetry. ), href: 'https://docs.datadoghq.com/integrations/supabase/', icon: , iconColor: '#632CA6', iconBg: 'rgba(99,44,166,0.1)', badges: [{ label: 'Community', variant: 'community' }], }, { title: 'Vendor-agnostic / BYO Prometheus', description: ( <> Connect AWS AMP, Grafana Mimir, VictoriaMetrics, or any Prometheus-compatible SaaS with the same scrape job pattern. ), href: '/guides/telemetry/metrics/vendor-agnostic', icon: , iconColor: '#0BA678', iconBg: 'rgba(11,166,120,0.1)', badges: [{ label: 'Supabase guide', variant: 'default' }], }, ] export function MetricsStackCards() { return (
{metricsStackOptions.map((option) => (
{option.icon}

{option.title}

{option.description}
{option.badges.map((badge) => ( {badge.label} ))}
))}
) }