--- import BaseLayout from '../../layouts/BaseLayout.astro'; import ServiceCard from '../../components/ServiceCard.astro'; import SearchWidget from '../../components/SearchWidget.astro'; import CautionBanner from '../../components/CautionBanner.astro'; import { data, getGroupSlug, getServiceSlug, getRuleCount, getTotalRuleCount, getTotalServiceCount, buildRedirectMap } from '../../data/rules'; import { SITE_URL, schemaWebSite } from '../../data/site'; const base = import.meta.env.BASE_URL.replace(/\/$/, ''); const totalRules = getTotalRuleCount(); const totalServices = getTotalServiceCount(); const redirectMap = buildRedirectMap(base); const jsonLd = { '@context': 'https://schema.org', '@type': 'CollectionPage', name: `${totalRules} Prometheus Alerting Rules for ${totalServices} Services`, description: `Browse ${totalRules} Prometheus alerting rules across ${totalServices} services. Organized by category: databases, Kubernetes, cloud providers, message brokers, and more.`, url: `${SITE_URL}rules/`, isPartOf: schemaWebSite, mainEntity: { '@type': 'ItemList', numberOfItems: data.groups.length, itemListElement: data.groups.map((group, i) => ({ '@type': 'ListItem', position: i + 1, name: group.name, url: `${SITE_URL}rules/${getGroupSlug(group)}/`, })), }, }; ---

Prometheus Alert Rules

{totalRules} alerting rules across {totalServices} services and {data.groups.length} categories.

{data.groups.map((group) => { const groupSlug = getGroupSlug(group); const groupRuleCount = group.services.reduce((sum, svc) => sum + getRuleCount(svc), 0); return (

{group.name}

{group.services.length} services ยท {groupRuleCount} rules
{group.services.map((service) => ( ))}
); })}