Allow Prometheus' metrics dashboard and incoming alerts to be managed independently
Context
Prometheus Integrations were removed in %16.0 as part of removing Metrics Dashboard. The corresponding database records, however, are also used under the hood by prometheus-type alert integrations. The alerting functionality is not deprecated or scheduled for removal, so we need to split this functionality out in order to remove the dead code for Prometheus Integrations.
Feature definitions
- Prometheus Integrations Category:Metrics
- found under
project > Settings > Integrations
- feature removed from UI, backend code intended for deletion
- found under
- Metrics Dashboard Category:Metrics
- found under
project > Monitor > Metrics
- feature removed from UI, code deleted
- found under
- alert integrations Category:Incident Management
- found under
project > Settings > Monitor > Alerts
- accessed/used under
project > Monitor > Alerts
- feature is not deprecated
- found under
In-progress Plan
Overall approach
Move the relevant attributes from Prometheus Integrations (Integrations::Prometheus
, Alerting::ProjectAlertingSetting
) into the http-type alert integration table (AlertManagement::HttpIntegration
), adding a new type
field to indicate whether the integration is either Prometheus
or HTTP
. All other attributes are the same.
Implementation plan
- Add types to table for
AlertManagement::HttpIntegration
✅ - Migrate
Integrations::Prometheus
records intoAlertManagement::HttpIntegration
✅ - Sync updates from
Integrations::Prometheus
toAlertManagement::HttpIntegration
✅ - Allow alert ingestion to use
AlertManagement::HttpIntegration
as SSOT✅ - Support querying by prometheus-type records in GraphQL
◀ WE ARE HERE - Update existing prometheus-type mutations to interact with
AlertManagement::HttpIntegrations
directly (instead of throughIntegrations::Prometheus
) - Update existing http-type mutations to accept a type field & deprecate prometheus-type mutations
- Migrate frontend to use http mutations for prometheus-type integrations
- Delete all the
Integrations::Prometheus
things