Back to Blog

Azure Monitoring Tools for the AZ-900 Exam: Azure Monitor, Log Analytics, Application Insights, Alerts, Azure Advisor & Service Health Explained

A practitioner's guide to the AZ-900 'Describe monitoring tools in Azure' objective: how Azure Monitor collects metrics, logs and traces, the difference between the Log Analytics tool and a Log Analytics workspace, what Application Insights adds with OpenTelemetry, how alert rules, action groups and alert states work, Azure Advisor's five recommendation categories, and how Azure status, Service Health and Resource Health divide the question 'is it Azure or is it me?', with a decision table and worked exam scenarios.

By Sailor Team , October 15, 2026

The last bullet group in the AZ-900 skills outline is short enough to fit on a sticky note: describe the purpose of Azure Advisor; describe Azure Service Health; describe Azure Monitor, including Log Analytics, Azure Monitor alerts, and Azure Monitor Application Insights. Five names, three bullets, and in the Skills measured as of July 20, 2026 the section was flagged as a “minor” change rather than a rewrite. It is tempting to skim it.

That would be a mistake, because the exam does not ask you to define the five tools. It describes a situation and asks which tool is the right one, and the five overlap just enough to make that hard. Azure Monitor has alerts; Service Health has alerts; Advisor has alerts. Application Insights stores its data in a Log Analytics workspace, so is it “part of” Log Analytics? Service Health and Resource Health both report outages, so which one tells you a specific virtual machine is down?

The sibling guide on Azure management and governance for AZ-900 introduces the monitoring tools in a few paragraphs alongside cost management, Azure Policy and resource locks. This article goes deeper on just the monitoring objective: what each tool actually collects or reports, how they fit together, and the decision rules that resolve the exam’s favourite confusions.

What the Objective Is Really Testing

Microsoft’s monitoring tools answer three distinct questions, and almost every exam scenario is one of them in disguise:

QuestionToolWhat it looks at
”What is happening inside my resources and applications right now?”Azure Monitor (with Log Analytics, alerts and Application Insights)Your telemetry: metrics, logs, traces
”How could I run my environment better?”Azure AdvisorYour configuration and usage, compared to best practice
”Is Azure itself having a problem that affects me?”Azure Service Health (with Azure status and Resource Health)Microsoft’s platform events: outages, maintenance, advisories

Hold on to the three questions. Azure Monitor is about your data. Advisor is about advice. Service Health is about Microsoft’s platform. When a question mentions CPU percentages, request latency or a KQL query, it is Azure Monitor. When it mentions “recommendations”, “best practices” or “underutilised”, it is Advisor. When it mentions “planned maintenance”, “outage in a region” or “is this Microsoft’s fault”, it is Service Health.

Azure Monitor: The Platform

Azure Monitor is, in Microsoft’s current wording, the “unified observability service for collecting, analyzing, and acting on telemetry from cloud and hybrid environments”. Everything else in this objective either lives inside it (Log Analytics, alerts, Application Insights) or feeds it (Service Health events can trigger Azure Monitor alerts; Advisor recommendations can be surfaced through it).

What It Collects

Azure Monitor brings together four kinds of telemetry:

  • Metrics: numeric values sampled at regular intervals, such as CPU percentage, disk IOPS, or HTTP request count. Lightweight, near real-time, and ideal for charts and threshold alerts.
  • Logs: records of events, with text and structured properties. Richer than metrics, queryable, and slower to arrive.
  • Traces: the path of a single request through the components of a distributed application. The domain of Application Insights.
  • Changes: what was modified in your resources and when, used to correlate incidents with deployments.

Those come from every layer of an Azure estate: the application code, the guest operating system of a virtual machine (via the Azure Monitor Agent), the Azure resources themselves, the subscription (the Activity log, which records every control-plane operation such as “VM started” or “resource group deleted”) and the tenant (Microsoft Entra ID sign-in and audit logs). Through Azure Arc, servers and Kubernetes clusters running on-premises or in other clouds can be onboarded and monitored the same way, which is the hybrid angle the exam occasionally probes.

Two Kinds of Workspace

A detail that has crept into the current documentation and is worth knowing even at fundamentals level: Azure Monitor now has two workspace types, and the names are confusingly similar.

WorkspaceStoresQuery language
Log Analytics workspaceLog and trace dataKQL (Kusto Query Language)
Azure Monitor workspacePrometheus and OpenTelemetry metricsPromQL

The documentation notes that “these are separate resource types with different data stores and query languages”. For the AZ-900, the Log Analytics workspace is the one that matters: it is where logs live, and it is the one the objective names.

What You Do With the Data

Microsoft organises Azure Monitor’s features into a handful of verbs, and knowing them helps decode scenario wording:

  • Insights: curated, opinionated monitoring experiences for specific resource types. Application Insights for applications, VM insights for virtual machines, Container insights for Kubernetes, Network insights for networking. If a question says “a pre-built dashboard for AKS”, it means Container insights.
  • Visualize: workbooks (interactive reports), Azure dashboards, and Grafana dashboards in the portal, plus export to Power BI.
  • Analyze: Metrics explorer for charting metrics and Log Analytics for querying logs.
  • Respond: alerts (notify or automate when a condition is met) and autoscale (add or remove instances based on metrics or a schedule).
  • Integrate: send data onward to Event Hubs, Logic Apps, or third-party tools.

The exam reduces this to a sentence worth memorising: Azure Monitor collects metrics and logs from Azure resources and applications, lets you analyse them, and lets you alert and automate on them.

Log Analytics: The Tool and the Workspace

“Log Analytics” is used for two things in Microsoft’s documentation, and the exam will happily exploit the ambiguity.

The Log Analytics workspace is a resource: a container in which Azure Monitor log data is stored. You create one, point data sources at it (diagnostic settings on resources, the Azure Monitor Agent on VMs, Application Insights), and it accumulates tables of records. Retention, access control and pricing are configured per workspace.

The Log Analytics tool is the query editor in the Azure portal. The documentation defines it as the tool that “lets you run and edit log queries against data in the Azure Monitor Logs store”. You open it by selecting Logs in Azure Monitor, in a workspace, or on an individual resource; starting from a resource scopes the query to that resource’s data.

The query language is KQL, the Kusto Query Language, which Log Analytics shares with Azure Data Explorer and Microsoft Sentinel. A beginner-level query the exam might show looks like this:

Heartbeat
| where TimeGenerated > ago(1h)
| summarize LastBeat = max(TimeGenerated) by Computer
| where LastBeat < ago(10m)

That lists machines that have stopped reporting in the last ten minutes. You do not need to write KQL for AZ-900, but you should recognise it, and you should know that the current Log Analytics tool also offers a simple mode, a point-and-click experience with no query language, alongside the full KQL mode.

Two facts tie Log Analytics to the rest of the objective:

  • Log search alerts are alert rules that run a KQL query on a schedule and fire when the results meet a condition. So Log Analytics is not only for investigation; it is the engine behind log-based alerting.
  • Application Insights is workspace-based: its telemetry is stored in a Log Analytics workspace, which is why you can query application traces with KQL alongside infrastructure logs.

The exam distinction: Azure Monitor is the platform, the Log Analytics workspace is where logs are stored, and Log Analytics is where you query them with KQL.

Application Insights: Monitoring the Application

Application Insights is the application performance monitoring (APM) feature of Azure Monitor. Where VM insights watches the machine and Container insights watches the cluster, Application Insights watches the code: how many requests it serves, how fast, how often they fail, which dependencies (databases, HTTP calls, queues) they wait on, and what exceptions they throw.

How Data Gets In

The current implementation is built on OpenTelemetry (OTel), the vendor-neutral observability standard. The documentation describes Application Insights as “an OpenTelemetry feature of Azure Monitor that offers application performance monitoring (APM) for live web applications”. In practice:

  • Server-side apps in .NET, Node.js, Python and Java add an OpenTelemetry distribution and a connection string that points at the Application Insights resource.
  • Some hosting platforms, such as App Service and Azure Functions, offer automatic instrumentation with no code changes.
  • Browser apps use the Application Insights JavaScript SDK (not OpenTelemetry) to capture page views and client-side errors.

What You Get

The portal experiences the exam is most likely to name:

ExperienceWhat it shows
Application mapA topology diagram of the application’s components and their dependencies, with health overlaid
Live metricsA real-time stream of request rates, failures and performance, with roughly one-second latency
Failures and Performance viewsWhich operations fail or are slow, drilled down to individual transactions
Availability testsSynthetic probes that hit your endpoints from Azure regions on a schedule and alert if they fail
Usage (users, sessions, funnels, flows, cohorts)How people actually use the application
Smart detectionMachine-learning detection of failure and performance anomalies

The exam rule: if the scenario is about application behaviour (response times, exceptions, dependency failures, user flows, a web app that is “slow for some users”), the answer is Application Insights. If it is about infrastructure (CPU, memory, disk, a VM that will not start), it is Azure Monitor metrics, VM insights or Log Analytics. Application Insights is the only one of the five tools that understands HTTP requests and code-level exceptions.

Azure Monitor Alerts

Alerts are the “respond” half of Azure Monitor and the part of the objective with the most moving parts.

Anatomy of an Alert Rule

An alert rule combines three things, in the documentation’s words: “the resources to be monitored”, “the signal or data from the resource”, and “conditions”. For example: resource = a virtual machine; signal = the Percentage CPU metric; condition = greater than 90% averaged over five minutes.

When the condition is met, an alert fires. Firing does two things: it records an alert instance (visible on the Alerts page for 30 days, after which it is deleted) and it triggers the rule’s action group.

Action Groups

An action group is a reusable list of what to do when an alert fires. The exam tends to split its contents into notifications and automation:

  • Notifications: email, SMS, push notification to the Azure mobile app, voice call.
  • Actions: Automation runbooks, Azure Functions, Logic Apps, webhooks and secure webhooks, ITSM incidents, Event Hubs.

One action group can serve many alert rules, which is the point: define “page the on-call team” once and attach it everywhere.

Alert Types

Alert typeEvaluatesTypical use
Metric alertsResource metrics at regular intervals; supports dynamic thresholds that learn the normal patternCPU above 90%, queue length growing
Log search alertsA Log Analytics (KQL) query on a scheduleMore than 50 failed sign-ins in 15 minutes
Activity log alertsNew Activity log events matching a filterSomeone deleted a resource group; a Service Health event was published
Smart detection alertsApplication Insights anomaly detectionUnusual rise in failed requests
Prometheus alertsPromQL on Azure Monitor managed PrometheusKubernetes workload metrics

The row to underline is activity log alerts, because the documentation says explicitly that “Resource Health alerts and Service Health alerts are activity log alerts”. That is the mechanical link between Service Health and Azure Monitor: a Service Health alert is an Azure Monitor alert rule whose signal is the Activity log’s Service Health category, wired to an action group.

Alert States and Severity

Each fired alert has two independent states:

  • The alert condition, set by the system: fired when the condition is met, resolved when it clears (for stateful alerts).
  • The user response, set by a human: New, Acknowledged or Closed. It never changes on its own.

Alerts also carry a severity from 0 to 4 (Critical, Error, Warning, Informational, Verbose) chosen by the rule’s author. Severity is a label for triage, not a behaviour.

Finally, alerts are stateful or stateless. A stateful alert fires once and does not fire again until the condition resolves; a stateless alert fires every time the condition is evaluated as true. All activity log alerts are stateless. A metric alert is considered resolved when the condition is not met for three consecutive checks. Alert processing rules sit on top of all of this and let you suppress notifications (during a maintenance window, say) or add action groups across many rules at once.

For the AZ-900, the depth required is: alert rule = scope + signal + condition; action group = who gets told and what runs; metric alerts versus log search alerts versus activity log alerts; and the fact that Service Health alerts are built on the same machinery.

Azure Advisor: Personalised Recommendations

Azure Advisor is the tool that answers “how could I run this better?”. Microsoft calls it “a digital cloud assistant that helps you follow best practices to optimize your Azure deployments”. It inspects your resource configuration and usage telemetry and produces personalised, actionable recommendations, most with a one-click or guided remediation.

The Five Categories

Advisor organises every recommendation into five categories, and the exam expects you to know them as a set:

CategoryPurpose (per the documentation)Example recommendation
Reliability”Ensure and improve the continuity of your business-critical applications”Enable backup on this VM; add a second instance to this availability set
Security”Detect threats and vulnerabilities that might lead to security breaches”Enable MFA; close an exposed management port
Performance”Improve the speed of your applications”Upgrade a storage account to premium; enable accelerated networking
Cost”Optimize and reduce your overall Azure spending”Right-size or shut down an underutilised VM; buy a reservation
Operational excellence”Achieve process and workflow efficiency, resource manageability, and deployment best practices”Create a Service Health alert; add tags; repair invalid Azure Policy assignments

Older study material lists four categories (it predates operational excellence); the current count is five. Note also that the security recommendations are not Advisor’s own. The documentation states that Advisor “includes your recommendations from Microsoft Defender for Cloud”, so the same item appears in both places. The Defender for Cloud guide explains where those recommendations and the secure score originate.

Practical Facts the Exam Can Ask

  • Advisor is free. There is no plan to enable and no per-resource charge.
  • It is personalised: it only recommends changes for resources you actually have, based on their configuration and usage.
  • You need Owner, Contributor or Reader on the subscription, resource group or resource to see its recommendations.
  • Recommendations can be marked Postponed, Dismissed or Completed. Postponing hides a recommendation temporarily; dismissing says it is not relevant. After you implement a fix, it “can take up to a day for Advisor to recognize the action”.
  • An Advisor score summarises how well a subscription follows best practice across the categories, and Advisor alerts can notify you when new recommendations appear.

The decision rule: Advisor is proactive and advisory. It does not monitor telemetry in real time (that is Azure Monitor), it does not detect attacks (Defender for Cloud), and it does not enforce anything (Azure Policy). If the scenario asks for a prioritised list of improvements, it is Advisor.

Azure Service Health: Is It Azure, or Is It Me?

Service Health answers the question every operator asks first during an incident. Microsoft describes it as “a combination of three separate services”, and the exam tests the boundaries between them.

Azure Status

The Azure status page (azure.status.microsoft) is public and global: “a global view of the health of all Azure services across all Azure regions”. It requires no sign-in and knows nothing about your subscription. It is useful for widespread incidents and useless for anything specific to you, which is why the documentation “strongly recommends” that current customers use Service Health instead.

Service Health

Service Health in the Azure portal is the personalised layer: “a personalized view of the health of the Azure services and regions you use”. It filters Microsoft’s platform events to the subscriptions, services and regions you actually depend on. The portal tracks five event types:

Event typeWhat it means
Service issues”Problems in the Azure services that affect you right now” (an outage)
Planned maintenance”Upcoming maintenance that can affect the availability of your services in the future”
Health advisories”Changes in Azure services that require your attention”, such as feature deprecations or required upgrades
Security advisories”Security-related notifications or violations that might affect the availability of your Azure services”
Billing updates”Billing communications related to your subscription” (visible to subscription Owners and Contributors)

Events are kept in Health history for 90 days after they become inactive. Service Health alerts are configured from this dashboard and, as noted above, are implemented as activity log alert rules attached to an action group, so “email the operations team when a service issue affects West Europe” is a Service Health alert plus an action group.

Resource Health

Resource Health narrows the view to a single resource: “the health of your individual cloud resources, such as a specific virtual machine instance”. It reports one of four statuses:

StatusMeaning
AvailableNo events detected affecting the resource (a “recently resolved” note appears if it recovered in the last 24 hours)
UnavailableAn ongoing platform or non-platform event is affecting the resource
DegradedThe resource “detected a loss in performance, although it’s still available for use”
UnknownResource Health has had no information for more than 10 minutes, commonly because a VM is deallocated

The distinction inside Unavailable is one the exam likes: platform events are triggered by Azure infrastructure (planned maintenance, an unplanned host reboot, hardware predicted to fail), while non-platform events are triggered by user actions, such as stopping a virtual machine. Resource Health shows both, and it keeps 30 days of history per resource, which, as the documentation points out, “makes it easy for you to see if a Service Level Agreement (SLA) was violated”.

The Three-Way Decision

Scenario wordingAnswer
”Is there a global Azure outage?” without signing inAzure status page
”Will any planned maintenance affect my services next week?”Service Health (planned maintenance)
“Notify my team when Azure has an issue in the regions we use”Service Health alert with an action group
”Is this specific VM down because of Azure or because someone stopped it?”Resource Health
”Did Azure breach the SLA for my database last month?”Resource Health history
”Is my VM’s CPU at 100%?”Not Service Health at all: Azure Monitor metrics

Putting the Five Tools Side by Side

Azure MonitorLog AnalyticsApplication InsightsAzure AdvisorService Health
Looks atYour telemetry (metrics, logs, traces)Logs in a workspaceApplication requests, dependencies, exceptionsYour configuration and usageMicrosoft’s platform events
Core outputCharts, alerts, autoscaleKQL query resultsAPM views, application map, live metricsPrioritised recommendations in 5 categoriesService issues, maintenance, advisories; resource status
TimeframeReal time and historicalHistorical (seconds to years)Real time and historicalPeriodic re-evaluationAs Microsoft publishes events
CostPay for data ingested and retainedPart of Azure Monitor pricingPart of Azure Monitor pricingFreeFree
Answers”What is happening?""Show me the records where…""Why is my app slow or failing?""What should I improve?""Is it Azure?”

Worked Exam Scenarios

Scenario 1. A company wants to be notified by SMS whenever a virtual machine’s average CPU exceeds 85% for ten minutes. Create an Azure Monitor metric alert rule scoped to the VM, with a condition on the Percentage CPU signal, attached to an action group containing an SMS notification. Not Advisor (it does not watch real-time metrics) and not Service Health (CPU is your telemetry, not a platform event).

Scenario 2. An administrator needs a list of all Azure services that could be made cheaper or more resilient, ranked by impact. Azure Advisor, specifically the Cost and Reliability categories. The words “list”, “recommendations” and “ranked” are the giveaways.

Scenario 3. A web application is returning errors for some users, and the developers want to see which downstream dependency is failing. Application Insights, using the Application map and the Failures view. Only Application Insights understands requests and dependencies.

Scenario 4. A VM became unreachable overnight. The team needs to know whether Azure had an infrastructure problem on that host or whether a colleague stopped the machine. Resource Health, which distinguishes platform events from non-platform (user-initiated) events for that specific resource.

Scenario 5. The security team wants to query sign-in logs and VM security events together using a single language. Send both to a Log Analytics workspace and query with KQL in Log Analytics. The question is about correlating stored logs, not about alerting or recommendations.

Scenario 6. Microsoft is retiring a feature your solution relies on and you want to be told in advance. Service Health, via a health advisory, ideally with a Service Health alert so nobody has to check the portal.

Scenario 7. A Service Health alert must email the operations distribution list and open a ticket in the company’s ITSM tool. An action group with an email notification and an ITSM action, attached to the Service Health alert rule. One action group, two actions.

Common Mistakes to Avoid

  • Treating Log Analytics as a separate product from Azure Monitor. It is Azure Monitor’s log store and query tool. The question “which Azure Monitor component stores logs?” has the answer “a Log Analytics workspace”.
  • Confusing the Log Analytics tool with the workspace. The workspace stores; the tool queries. Both are called Log Analytics.
  • Picking Application Insights for infrastructure questions. It is APM. A disk-full alert is a metric alert, not an Application Insights feature.
  • Picking Service Health for your own resource’s metrics. Service Health only knows about Microsoft’s platform events. High CPU is not a Service Health event.
  • Confusing Service Health with Resource Health. Service Health is about services and regions you use; Resource Health is about one resource. “This VM” means Resource Health.
  • Listing four Advisor categories. There are five: reliability, security, performance, cost, operational excellence.
  • Assuming Advisor costs money or acts automatically. It is free and advisory; you choose whether to apply its recommendations.
  • Forgetting that action groups are reusable and separate from rules. A rule says when; an action group says who and what. Several rules can share one group.
  • Thinking alerts are only notifications. An action group can run automation (runbooks, Functions, Logic Apps), which is how a metric alert can trigger remediation.
  • Missing the Activity log. It is the subscription-level audit trail of control-plane operations and the signal behind activity log alerts, including Service Health and Resource Health alerts.

How to Lock This In Before Exam Day

Open the Azure portal with a free account and spend thirty minutes touring the five tools in order. Go to Monitor, open Metrics and chart a storage account’s transactions; open Logs and run a one-line query such as AzureActivity | take 10; create a throwaway alert rule and notice that the wizard asks for a scope, a signal, a condition and an action group in that order. Open Advisor and count the five category tiles. Open Service Health, click through the five event types, then open Resource health on any resource and read its status. Finally, open the public Azure status page in a private window and notice that it knows nothing about your subscription.

Then test yourself under exam conditions. The free AZ-900 practice questions include monitoring scenarios in the “which tool?” style used above, and the AZ-900 practice exam page offers a sample set you can try without an account. For a full, domain-weighted rehearsal across all three skill areas, the AZ-900 Azure Fundamentals Mock Exam Bundle includes six timed mock exams whose management-and-governance questions cover the monitoring tools at exactly this altitude, with explanations that spell out why the distractors are wrong. The 30-day AZ-900 study plan schedules the monitoring topics for day 20, and the AZ-900 exam guide maps the rest of the management and governance domain.

Conclusion

The AZ-900 monitoring objective is three questions wearing five names. Azure Monitor is the platform that collects your metrics, logs and traces; inside it, the Log Analytics workspace stores logs and the Log Analytics tool queries them with KQL, Application Insights watches your application code through OpenTelemetry, and alerts turn conditions into notifications and automation through reusable action groups. Azure Advisor reads your configuration and hands back free, personalised recommendations in five categories. Azure Service Health tells you whether the problem is Microsoft’s, with the public Azure status page for the world, Service Health for the services and regions you use, and Resource Health for a single resource and its four statuses.

Remember the boundaries (your telemetry versus advice versus Microsoft’s platform), the two meanings of Log Analytics, the five Advisor categories, the five Service Health event types, the four Resource Health statuses, and the fact that Service Health alerts are activity log alerts in Azure Monitor. With those in place, the “which tool?” questions in this domain become some of the most predictable marks on the exam.

Frequently Asked Questions

What is the difference between Azure Monitor, Log Analytics and Application Insights?

Azure Monitor is the overall observability platform that collects metrics, logs and traces from Azure resources and applications. A Log Analytics workspace is the Azure Monitor component that stores log data, and the Log Analytics tool is where you query that data with KQL. Application Insights is the application performance monitoring feature of Azure Monitor: it instruments your application code to track requests, dependencies, exceptions and usage, and it stores its data in a Log Analytics workspace.

What are the five Azure Advisor recommendation categories?

Reliability, Security, Performance, Cost and Operational excellence. Advisor is free, personalised to the resources you actually run, and includes the security recommendations generated by Microsoft Defender for Cloud. Recommendations can be postponed, dismissed or marked completed.

What is the difference between Azure Service Health and Resource Health?

Service Health gives a personalised view of Microsoft platform events (service issues, planned maintenance, health advisories, security advisories and billing updates) for the services and regions your subscriptions use. Resource Health reports the current and past health of one specific resource, such as a single virtual machine, with the statuses Available, Unavailable, Degraded and Unknown, and distinguishes platform events from user-initiated ones. Both are free and both sit under the Service Health service alongside the public Azure status page.

How do Azure Monitor alerts work?

An alert rule defines a scope (the resources to watch), a signal (a metric, a log query, an activity log event, or an Application Insights anomaly) and a condition. When the condition is met the alert fires, and an attached action group sends notifications (email, SMS, push, voice) or runs automation (runbooks, Functions, Logic Apps, webhooks, ITSM). Alerts have a system-set condition (fired or resolved) and a user-set response (New, Acknowledged, Closed), and fired alerts are kept for 30 days.

Is Azure Service Health the same as the Azure status page?

No. The Azure status page is public and global, showing the health of all services in all regions without any sign-in and without knowledge of your subscription. Service Health is the personalised, in-portal view filtered to what you use, and it is the one Microsoft recommends for current customers. Service Health alerts are implemented as activity log alert rules in Azure Monitor.

Do I need to know KQL for the AZ-900 exam?

No. You should know that KQL (Kusto Query Language) is the language used to query a Log Analytics workspace, that Log Analytics is where you run those queries, and that log search alerts are built on KQL queries. Writing queries is AZ-104 and AZ-500 territory, not AZ-900.

Which monitoring tool tells me if a VM stopped because of Azure or because a user stopped it?

Resource Health. For an Unavailable resource it distinguishes platform events, such as planned maintenance or an unplanned host reboot, from non-platform events triggered by user actions, such as stopping the virtual machine, and keeps 30 days of history.

Is Azure Advisor free?

Yes. Advisor has no plan to enable and no charge; anyone with Owner, Contributor or Reader access to a subscription, resource group or resource can view its recommendations. The only cost is any you choose to incur by acting on a recommendation.

Limited Time Offer: Get 80% off all Mock Exam Bundles | Sale ends in 7 days. Start learning today.

Claim Now