Monitoring¶
Monitoring is split over two layers: the platform team monitors the platform components, the workload team monitors its own workloads. Optional Grafana dashboards give both a view on pipeline health.
Reference design, your deployment may differ
Who receives alerts, and which optional parts (Grafana, Purview) are deployed, is set per platform. Ask your platform team. Generic platform monitoring is described in Monitoring.
Platform monitoring (platform team)¶
| Component | What is watched |
|---|---|
| Fabric capacity | Capacity unit consumption, throttling events and utilisation, through the Fabric admin portal. This lets the platform team scale up before the load reaches the capacity. |
| VNet data gateway | Availability, connection counts and latency. The gateway sleeps after inactivity and wakes on a new request, so the activation cycle matters when judging connection performance. |
| Storage account | Availability, latency and capacity usage |
| Connections | Availability of the ADLS, SQL, Oracle Cloud Storage and workspace-to-workspace connections |
| Alerts | Deviations are signalled to administrators. Diagnostic and log data are stored centrally for analysis. |
Baseline pipelines¶
The platform team monitors the baseline pipelines of the platform. If a pipeline fails, the platform team retries it. The cause is usually the source and a retry solves it most of the time. If the retry does not help, the platform team reports it to the team that owns the pipeline.
Workload monitoring (workload team)¶
| Area | What you do |
|---|---|
| Pipeline execution | Data pipelines produce run status, duration and error messages. When a retry by the platform team does not solve the failure, the workload data team solves the data issue. |
| Query performance | Durations, resource consumption and timeouts on Lakehouses and Warehouses |
| Data quality and freshness | Timeliness of loads, number of processed records, validation errors |
| Native monitoring | Each workspace has built-in monitoring of item execution, resource use and errors. Use it as a starting point and add your own alerts on workload-specific thresholds. |
See also Operate your workload.
Pipeline observability with Grafana (optional)¶
When the observability tier is deployed, you get an Azure Managed Grafana instance with a dashboard and an alert on failed Fabric pipeline runs. How it is deployed is on Observability.
flowchart LR
p["Fabric pipelines"] --> lh["pipeline_logs Lakehouse"]
lh -->|"log ingestion pipeline (your team)"| law["Log Analytics: FabricPipelineRuns"]
law --> g["Managed Grafana: dashboards"]
law --> a["Alert rule: pipeline failures"]
a --> ag["Action group: email"]
The dashboards stay empty until your team feeds them
The dashboards read the FabricPipelineRuns table in Log Analytics. The Grafana deployment does not create or fill
it. Your data engineering team builds the log ingestion pipeline. Until it runs, the panels show "No data".
Access¶
Sign in with your Entra ID account (MFA applies). There are no local Grafana accounts and no API keys by default. The URL is
given by the platform team and has the form https://grafana-<workload>-<env>-<region>.<id>.grafana.azure.com. In private
mode you need VPN or ExpressRoute.
Access is by three dedicated Entra ID groups, separate from the Fabric workspace groups:
| Role | For | Can |
|---|---|---|
| Viewer | Business stakeholders, management | View dashboards and alerts, use time range, filters and drill-down |
| Editor | Data engineers and analysts | Everything a viewer can, plus create and edit dashboards and manage alert rules |
| Admin | The platform team | Everything an editor can, plus data sources, plugins, notification channels, users and organisation settings |
A user holds one Grafana role. Request access through Request and change: name the person and the role. The platform team adds the person to the group, and access applies after the group membership propagates (the source mentions 5 to 10 minutes). To remove access, request removal from the group.
The default dashboard¶
Fabric Pipeline Observability has these panels:
| Panel | Shows |
|---|---|
| Pipeline failures (last 24 h) | Count of failed runs. Green at 0, yellow at 1 to 4, red at 5 or more. |
| Pipeline runs by status | Share of succeeded, failed, in-progress and cancelled runs |
| Pipeline execution timeline | Runs per 15 minutes, split by status |
| Recent failed pipelines | The last 50 failed runs with time, pipeline, run ID, duration and error message |
| Average pipeline duration (7 days) | Hourly average per pipeline, to spot slower pipelines |
| Pipeline success rate (7 days) | Gauge. Green at 95% or more, yellow at 80% or more, red below 80%. |
Dashboards refresh every 30 seconds. Dashboards that are deployed from code cannot be edited in the Grafana UI: change the code. Dashboards that an editor creates in the UI are not in code and do not survive a redeployment.
Your own dashboards¶
In the UI: add a visualisation, choose the Azure Monitor data source, query type Logs, select the Log Analytics workspace and write the KQL. Save it in a folder.
As code (preferred for dashboards that must stay): export the dashboard JSON, replace the Log Analytics resource ID with the
template variable ${LAW_RESOURCE_ID}, escape Grafana template variables such as ${DS_AZURE_MONITOR} as
$${DS_AZURE_MONITOR}, and place the file in a sub-folder of the dashboards directory of your configuration repository. Each
sub-folder becomes a Grafana folder and each .json file a dashboard. Run the pipeline.
Example queries:
// Runs per day by status
FabricPipelineRuns
| where TimeGenerated >= ago(30d)
| summarize Count = count() by bin(TimeGenerated, 1d), Status
| order by TimeGenerated asc
// Ten slowest successful pipelines
FabricPipelineRuns
| where TimeGenerated >= ago(7d) and Status == "Succeeded"
| extend DurationSeconds = datetime_diff('second', EndTime, StartTime)
| summarize AvgDuration = avg(DurationSeconds), MaxDuration = max(DurationSeconds) by PipelineName
| top 10 by AvgDuration desc
Alerts¶
The default alert fires when a pipeline run has failed.
| Setting | Default | Configurable |
|---|---|---|
| Evaluation interval | every 5 minutes | yes |
| Lookback window | 1 hour | yes |
| Condition | any failed pipeline run | no |
| Severity | 1 (Error) | no |
| Auto-mitigation | the alert resolves when the next window has no failures | no |
| Notification | email through an Azure Monitor action group | yes (addresses) |
Without email addresses the alert still fires and is visible in Azure Monitor, but nobody receives an email. Receivers other than email (SMS, webhook, Logic App) are not set by the configuration: the platform team adds them to the action group in the portal. Editors can create more alert rules in the Grafana UI.
Limits to know¶
- One role per user, and no folder-level permissions: every user with a role sees all dashboards, and editors can edit all of them. Folders only organise. If you need separation, ask for a separate Grafana instance for that team.
- The default dashboard uses the first Log Analytics workspace of the list. Dashboards over several workspaces need the dashboard JSON edited.
- After the first deployment, the managed identity roles take up to 10 minutes to propagate. Queries can fail with "Insufficient permissions" in that period.
Related¶
- Observability (platform team)
- Service description