An Azure service that is used to collect, analyze, and act on telemetry data from Azure and on-premises environments.
Hello Jan-Hendrik Peters
Prometheus (PromQL) expressions are already supported in Azure Monitor health models today, so you don't have to wait for a roadmap item for this. You'll want to use the Azure Monitor workspace signal type rather than the Log Analytics one you've been trying.
How the signal types map:
| Signal type | Data source | What it evaluates |
|---|---|---|
| Azure resource | The resource itself | Samples a platform metric and compares it against numeric thresholds |
| -------- | -------- | -------- |
| Azure resource | The resource itself | Samples a platform metric and compares it against numeric thresholds |
| Log Analytics workspace | Log Analytics workspace | Runs a KQL log query and evaluates the result |
| Azure Monitor workspace | Azure Monitor workspace | Runs a PromQL query and evaluates the result |
That third signal type is exactly what you need for AKS pod-level health.
What to do for your AKS scenario:
- Enable Managed Prometheus on the AKS cluster so metrics like
kube_pod_status_phase,kube_pod_container_status_restarts_total,kube_pod_container_status_last_terminated_reason(OOMKilled), etc. are scraped into an Azure Monitor workspace. Steps are here: Enable monitoring for Azure Kubernetes Service (AKS) clusters. - Add the Azure Monitor workspace as a data source on the entity representing your AKS cluster (or a child "Pods" generic entity) in the health model designer. The identity used by the health model must have permission to query metrics from that workspace.
- Add a signal assignment → "Create new" and paste your PromQL expression. You can reuse the recommended AKS Prometheus alert and recording rules directly here. For example:
- Pods not Running / CrashLoopBackOff:
sum by (namespace, pod) (kube_pod_status_phase{phase!="Running"}) - OOM kills:
sum by (namespace, pod) (kube_pod_container_status_last_terminated_reason{reason="OOMKilled"}) - Restart rate:
sum by (namespace, pod) (rate(kube_pod_container_status_restarts_total[5m]))
- Set the numeric thresholds for Healthy / Degraded / Unhealthy on the signal, and let the state roll up to your AKS or workload entity.
- Pods not Running / CrashLoopBackOff:
The end-to-end walkthrough (including the Azure Monitor workspace PromQL signal specifically) is covered in the tutorial: Configure signals in an Azure Monitor health model.
Two quick caveats worth flagging:
- Each entity can have only one data source per signal type, but you can add multiple PromQL signals that share that same Azure Monitor workspace, so you can express pod status, restarts, and OOM kills as separate signals on the same entity and let them contribute independently to the health state.
- The managed identity attached to the health model needs read access to the Azure Monitor workspace (Monitoring Reader is typically sufficient), otherwise the signal will show as unable to collect telemetry in the designer.
So, you don't need to fall back to Log Analytics for pod-level signals switch that entity to an Azure Monitor workspace signal and PromQL is fully available today, including the recommended Microsoft rule set.
Hope this helps! Please click "Upvote" if the provided information is helpful.
Thanks,
Suchitra.