How-toAny ERP with a relational databaseOperations / Performance Monitoring

How to Monitor ERP Performance: What to Track and Alert On

Question
how to monitor ERP performance

Also searched as

  • ERP slow what to monitor
  • ERP performance monitoring metrics and tools
  • how to find what is slowing down our ERP
  • ERP database blocking and long running queries monitoring

Short answer

Monitor the ERP from the user's side first (response time of a few key transactions), then the layers beneath: database waits, blocking and long queries, application server health, batch and integration job duration, queues and storage. Baseline normal for each, alert on deviation, and keep history so you can answer slow-yesterday questions.

Applies to: Self-hosted ERPs on SQL Server, Oracle, DB2 or HANA: SAP, SyteLine, Infor LN, Dynamics, Epicor, JD Edwards. SaaS ERPs expose fewer layers but synthetic checks still apply.

Building ERP performance monitoring

  1. 1Pick five to ten critical transactions: open a sales order, post a receipt, run an inventory inquiry, release a work order, print a pick list. Time them with a scripted synthetic check every few minutes.
  2. 2Collect OS metrics on database and application servers: CPU, memory, disk latency, network, and for virtual machines CPU ready and ballooning.
  3. 3Collect database health: top wait types, blocking chains, longest-running queries, log growth, tempdb or undo usage, index fragmentation and statistics age.
  4. 4Track job duration for nightly and intraday batch work: MRP or planning runs, cost roll-ups, period-end jobs, interface imports and exports. Alert on both failure and duration far above baseline.
  5. 5Monitor queues and integrations: pending messages, failed IDocs or API calls, middleware backlog, print queues.
  6. 6Set baselines from two to four weeks of normal data and alert on deviation from baseline, plus hard limits for disk space and log size.
  7. 7Route alerts to a named on-call with a short runbook per alert, and review noisy alerts monthly to prune them.
  8. 8Keep at least 90 days of history so you can compare a complaint about last Tuesday against the data.

Start with what the user feels

Server graphs can look healthy while users wait. A synthetic transaction that logs in as a test user and times a representative screen tells you what users experience and when it started. Run it from a location that resembles the plant floor or branch office, not only from the data centre, so network problems show up.

Pair synthetic checks with a simple way for users to report slowness: a help desk category with the screen name and time. Correlating three complaints about the same screen at 10:15 with a blocking chain in the database is how most root causes are found.

Choose metrics the business understands. Seconds to open an order and minutes to finish the nightly planning run communicate better to management than CPU percentages, and they set clear service levels.

Database: waits, blocking and long queries

The database is the most frequent bottleneck in transactional ERPs. Look at wait statistics to see where time goes: lock waits point to blocking and long transactions, I/O waits to storage, and CPU or parallelism waits to heavy queries or poor plans. A single poorly written custom report or a missing index can slow everyone for the duration of its run.

Alert on blocking chains lasting more than a defined number of seconds and capture the head blocker's session, user and statement. Capture the top queries by total duration and by reads each day, so you can tie a slow period to a specific statement or job.

Keep maintenance healthy: statistics updates and index maintenance on a schedule suited to your churn, and capacity trends for data and log files. Many sudden slowdowns follow an unnoticed plan change after statistics drift, or a full log volume.

-- SQL Server: current blocking sessions and what they are running
SELECT r.session_id, r.blocking_session_id, r.wait_type, r.wait_time,
       s.login_name, s.program_name, t.text AS sql_text
FROM sys.dm_exec_requests r
JOIN sys.dm_exec_sessions s ON s.session_id = r.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.blocking_session_id <> 0
ORDER BY r.wait_time DESC;

Batch jobs, integrations and queues

In manufacturing, many complaints are really about batch work overrunning into the morning shift. Record the start, end and row counts of planning, costing and period-end jobs, and alert when duration passes a multiple of its baseline. A job that takes twice as long as last month has usually met more data or a degraded plan, and it is cheaper to fix before it breaks the window.

Integrations fail quietly. Track queue depth and age of oldest message for EDI, bank, MES, PLM and e-commerce links, and alert on failures and on silence, since a feed that stops sending produces no errors. A daily reconciliation count between ERP and the connected system catches the rest.

Watch print and document services too. A stalled print queue or report server can look to users like the ERP being down, especially for pick lists and shipping documents.

Capacity trends and making it useful

Performance management is not only firefighting. Trend data growth, concurrent users, transaction volume and storage consumption monthly, and forecast when you will hit limits. Present it with a simple traffic-light summary to management so capacity requests are backed by evidence.

Document what normal looks like and write one-page runbooks for the top alerts: what it means, how to confirm, who to call, safe first actions. During an incident, a good runbook is worth more than another dashboard.

Review after each significant slowdown: timeline, root cause, detection time and prevention. Over a year, the list of causes (a missing index, a runaway report, a full volume) tells you which monitors earn their keep.

Common pitfalls

  • !Alerting on every CPU spike, which trains the on-call to ignore alerts that matter.
  • !Monitoring servers but not the user experience, so slowness is discovered by phone call.
  • !No history retention, making yesterday's slowdown impossible to investigate.
  • !Ignoring custom reports and ad hoc queries run by power users directly against the production database.
  • !Watching job failure but not job duration or silence from integrations.
  • !Running statistics and index maintenance during peak hours, causing the slowness it was meant to prevent.

How an ERP-grounded AI assistant handles this

An assistant such as ERPray, working read-only against the ERP's own tables, can answer operational questions like which scheduled jobs ran longest this week or which users posted the most transactions at the time of a slowdown, and it shows the query so you can check it. It does not replace database and infrastructure monitoring tools; it helps link a slowdown to business activity.

Frequently asked questions

What are the most important ERP metrics to monitor?

Response time of a handful of key transactions, database blocking and wait types, long-running queries, batch job duration, integration queue depth and age, and disk and log space. Add server CPU, memory and storage latency for context. User-facing timing should be the primary signal.

Why is our ERP slow only at certain times?

Usually a scheduled job, a report run by many users, or a month-end process competes for the same database resources, causing blocking or I/O saturation. Compare slow periods with job schedules and top queries by duration to find the overlap.

Do we need a paid monitoring tool?

Not always. Built-in database views, the OS performance counters and a free or inexpensive monitoring stack can cover most needs for a mid-size manufacturer. Paid tools add convenience, history and ERP-specific dashboards, which matter more as complexity and user count grow.

How long should we keep performance history?

Keep detailed data for at least 30 to 90 days and summarised daily figures for a year or more. Short retention makes it impossible to compare against last month-end, which is when many performance problems appear.

Related

How-to

How to Test ERP Backup and Disaster Recovery

A backup is only proven when you have restored it and a user has transacted in the restored system. Define RTO and RPO with the business, restore the full ERP stack (database, application, integrations, attachments, secrets) to an isolated environment, run a scripted smoke test, time every step, and record gaps as action items.

How-to

ERP Patching Cadence: How Often Should You Patch?

Patch the ERP stack in layers on different clocks: operating system and database monthly or quarterly, ERP vendor cumulative updates quarterly or semi-annually, and security fixes on an emergency path measured in days. Test every patch in a sandbox refreshed from production, with a scripted regression and a tested rollback.

How-to

How to Run an Internal ERP Help Desk: Tiers, SLAs and Knowledge

An effective ERP help desk uses three tiers: business super users for how-do-I questions, an ERP support analyst tier for configuration, data and access issues, and technical or vendor escalation for defects and infrastructure. Categorise tickets by process and impact, set SLAs by business impact, and mine ticket data monthly to fix root causes and training gaps.

How-to

How to Run an ERP User Access Review (Quarterly Checklist)

An ERP user access review is a recurring control where system owners confirm that every active user, role and privileged permission is still justified. Extract users and roles from the ERP itself, join them to HR status, send each business owner a scoped list to certify or revoke, record the decisions, and execute the removals with ticket evidence.

CIO briefing

ERP Integration Architecture: API vs iPaaS vs ETL

Choose by what the data does, not by tool preference. Use the ERP's own API (or its native bus) for transactional writes that must be validated by ERP business logic, ETL or change data capture for bulk analytical reads, and an iPaaS when you have many endpoints, need monitoring and retries, and lack the staff to run your own middleware. Most real estates need two of the three.

CIO briefing

Data Platform for ERP Data: Replica, Warehouse or Lakehouse

Start with the smallest thing that removes reporting load from the ERP: a read replica or vendor replication feed. Add a warehouse or lakehouse when you must join ERP data with other sources, keep history, or serve many consumers. Put a governed semantic layer on top, because raw ERP tables are not a usable analytics or AI interface on their own.

AI for ERP

AI for Infor SyteLine and CloudSuite Industrial

Add grounded AI to Infor SyteLine or CloudSuite Industrial: natural-language answers, agents over IDOs and ION, on-prem or CloudSuite deployment.

AI for ERP

AI for Infor LN: Sessions, BODs, and Engineer-to-Order Work

Add grounded AI to Infor LN 10.x or CloudSuite: natural-language answers over sessions and BODs, agents for project and engineer-to-order work, on-prem options.

Stuck on Any ERP with a relational database?

Talk to engineers who work inside Any ERP with a relational database every week, and who build private AI that answers these questions from your own ERP data.