Monitoring alarm not triggered for custom metric stream, causing missed alerts for high CPU usage

We’ve set up a custom metric stream in OCI Monitoring to track application-specific performance metrics, but the alarm we configured isn’t triggering even when thresholds are clearly breached. The metric namespace is custom_app_metrics and we’re monitoring response times.

Our alarm configuration looks like this:

{
  "namespace": "custom_app_metrics",
  "query": "ResponseTime[1m].mean() > 500",
  "severity": "CRITICAL"
}

The metric stream shows values exceeding 500ms consistently for the past hour, but no alarm notifications are being sent. We’ve verified the notification topic is active and other standard OCI alarms work fine. Is there something specific about custom metric namespace matching or alarm query syntax that we’re missing?

Thanks for the suggestions. I checked the dimensions and we do have a service_name dimension in our metric stream. Do I need to add that to the alarm query filter? Also, our metrics are posted every 60 seconds via the Monitoring API.

Yes, you absolutely need to include all dimensions in your alarm query if they exist in your metric stream. The alarm won’t match metrics if dimensions don’t align. Try this query format: ResponseTime[1m]{service_name="your_service"}.mean() > 500. Also verify your namespace string matches exactly - even case sensitivity matters. I once spent hours debugging only to find I had Custom_App_Metrics in the stream but custom_app_metrics in the alarm.

Also worth checking the alarm’s trigger rule configuration. For custom metrics, you might need to adjust the trigger delay and number of trigger occurrences. Sometimes the default settings (1 occurrence in 1 minute) don’t align well with custom metric posting intervals. Try setting it to 2 occurrences in 5 minutes and see if that helps catch your breaches.