Kokil Thapa - Professional Web Developer in Nepal
Freelancer Web Developer in Nepal with 15+ Years of Experience

Kokil Thapa is an experienced full-stack web developer focused on building fast, secure, and scalable web applications. He helps businesses and individuals create SEO-friendly, user-focused digital platforms designed for long-term growth.

Opsgenie for On-Call and Alerting

By Kokil Thapa | Last reviewed: September 2026

Production outages do not wait for office hours. When a Laravel queue worker dies, a payment webhook stalls, or disk fills on a shared EC2 host, someone must respond fast. Opsgenie for on-call and alerting sits between your monitors and your engineers. It turns raw signals into owned incidents with clear escalation paths. If you already run Prometheus Alertmanager or log-based checks, Opsgenie adds the human layer: schedules, deduplication, and delivery to phone, SMS, push, or chat. This guide covers what it does, how to configure it, and where it fits beside tools you likely already use.

What is Opsgenie and how does on-call alerting work?

Opsgenie is Atlassian's incident management platform. It ingests alerts from dozens of integrations and applies rules before anyone's phone buzzes. Think of it as a switchboard, not a monitor. Prometheus tells you CPU is high. Opsgenie decides who owns that alert tonight and whether a second page is warranted if nobody answers.

The core objects are straightforward. A team owns a service area. A schedule defines who is primary and secondary on each shift. An escalation policy defines what happens when an alert is not acknowledged within N minutes. An integration receives inbound alerts from Grafana, Datadog, UptimeRobot, or a generic webhook. Each alert becomes an incident that responders can acknowledge, escalate, or close.

Opsgenie Alert PipelineMonitorsPrometheus, logsIntegrationWebhook APIOpsgenieDedup + routeOn-callApp, SMS, voiceSchedulePrimary + backupEscalationTime-based stepsIncidentAck, close, notesUnacked alert escalates every 5–15 minTeam lead → secondary on-call → all-hands policy
Opsgenie for on-call and alerting: monitors feed integrations, then schedules and escalation policies deliver incidents to responders.

On sister sites I maintain with Deployer 7 and GitLab CI, one noisy cron job can spam five domains at once. Opsgenie's deduplication groups alerts that share the same alias within a time window. That alone saves sleep. The official Atlassian Opsgenie documentation describes alert grouping, suppression, and maintenance windows in detail.

Opsgenie also supports heartbeats. Your cron sends a periodic ping. If the ping stops, Opsgenie opens an alert. That pattern catches silent failures—jobs that exit zero but do nothing—better than process-up checks alone.

How do you set up Opsgenie on-call rotations and escalation policies?

Start with teams that mirror real ownership. Do not create one giant "DevOps" team unless one person truly owns everything. On production Laravel applications I work on, I split web app, database, and infrastructure at minimum. Legal-tech portals with document uploads get a separate queue from marketing brochure sites.

Create the team and schedule

  1. Sign in to Opsgenie and create a team (for example, platform-nepal).
  2. Add members with correct time zones—Nepal is UTC+5:45, which matters for handoffs.
  3. Build a weekly rotation: primary Mon–Sun, secondary as backup.
  4. Attach the schedule to an escalation policy as step zero.

Use overlapping coverage during Dashain and Tihar if your team takes leave. Override schedules manually for holidays rather than editing the whole rotation each year.

Define escalation that matches severity

A practical three-step policy for production web apps:

  • Step 0 (0 min): Notify primary on-call via mobile app and SMS.
  • Step 1 (5 min): Notify secondary on-call if unacknowledged.
  • Step 2 (15 min): Notify team lead and post to a Slack or Microsoft Teams channel.

Reserve "notify everyone" policies for true SEV-1 only. Pair this with SLO-driven alerting that does not page at 3am so low-priority warnings land in email or chat instead of SMS.

Escalation TimelineT + 0 minPrimaryT + 5 minSecondaryT + 15 minTeam leadT + 30 minAll-handsAcknowledge stops escalation immediatelyP1 — page fastCheckout down, DB unreachableP3 — delay pageDisk 80%, queue lag warning
Escalation policies in Opsgenie for on-call and alerting: time-based steps with severity-based routing reduce missed pages and alert fatigue.

Configure notification rules

Each user should install the Opsgenie mobile app and confirm SMS delivery. Voice call is a last resort—it works when mobile data fails but adds stress. Set quiet hours only for non-production teams. Production on-call means production on-call.

Document the rotation in your incident response runbook. Include who can declare maintenance windows and how to page the database owner separately from the front-end owner.

How do you connect Opsgenie to Prometheus, logs, and Laravel apps?

Most teams already emit metrics or log lines. Opsgenie does not replace those layers. It receives their output.

Prometheus and Alertmanager

Alertmanager can forward to Opsgenie via the built-in Opsgenie receiver or a webhook integration. In Alertmanager config:

receivers:
  - name: 'opsgenie-critical'
    opsgenie_configs:
      - api_key: '<OPSGENIE_INTEGRATION_API_KEY>'
        message: '{{ .GroupLabels.alertname }}'
        description: '{{ .CommonAnnotations.description }}'
        priority: 'P1'
        tags: 'env:production,team:platform'

Map Alertmanager severity labels to Opsgenie priority (P1–P5). Critical payment failures on an eCommerce stack deserve P1. High queue depth might be P3 until SLO burn confirms impact. See the Prometheus Opsgenie receiver documentation for all supported fields.

Generic webhook from Laravel or cron scripts

When a health check fails outside Prometheus, POST JSON directly to the Opsgenie Create Alert API:

curl -X POST 'https://api.opsgenie.com/v2/alerts' \
  -H 'Authorization: GenieKey YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "message": "Laravel queue worker stopped on prod-01",
    "alias": "queue-worker-prod-01",
    "description": "supervisor status shows FATAL",
    "priority": "P2",
    "tags": ["laravel", "queue", "production"]
  }'

Use a stable alias so repeat failures deduplicate instead of opening fifty incidents. I use this pattern when php artisan queue:work dies silently after a deploy—exactly the kind of issue that passes a simple HTTP 200 check.

Validate JSON payloads with a JSON formatter before you paste them into Postman or CI scripts. A trailing comma has caused more failed drills than broken servers.

Log-based and shell checks

Not every client runs Kubernetes or a full metrics stack. A cron job that greps Laravel logs for ERROR or payment gateway timeouts still belongs in Opsgenie. Combine log parsing with awk, grep, and journalctl with a small shell wrapper that calls the API when thresholds breach.

For regex-heavy log filters, test patterns in a regex tester first. False positives at 2 a.m. train teams to ignore pages.

Common Opsgenie IntegrationsPrometheusAlertmanagerLaravelWebhook APICron / shellLog grep alertsHeartbeat pingOpsgenieRoute + dedupMobile appSMS / voiceSlack / Teams
Opsgenie integrations for on-call alerting: metrics, application webhooks, log scripts, and heartbeats converge into unified notification channels.

Opsgenie vs PagerDuty vs Alertmanager — which should you choose?

You rarely pick only one tool. Alertmanager routes and silences Prometheus alerts—it is free and stays close to your metrics. Opsgenie and PagerDuty add enterprise on-call workflows, mobile apps, and broader integrations. For a small Nepal agency running Laravel on Ubuntu with tight budgets, the decision is operational cost versus sleep protected.

CriteriaOpsgeniePagerDutyAlertmanager alone
On-call schedulesFull rotations, overrides, calendarsFull rotations, advanced analyticsNone—pair with external tool
Escalation policiesMulti-step, team-basedMulti-step, event orchestrationBasic grouping and inhibition only
IntegrationsStrong Atlassian/Jira tie-inVery broad SaaS catalogPrometheus-native receivers
Cost (small team)Free tier limited; paid per userPaid tiers from small team upFree (self-hosted)
Best fitTeams on Jira/JSM alreadyLarge ops orgs needing analyticsMetrics-only shops adding Opsgenie later

My default for Linux system administration clients: keep Alertmanager for Prometheus, forward P1/P2 to Opsgenie, send P3+ to email or Slack. That split mirrors how I structure support and maintenance retainers—critical paths get pages, everything else gets tickets.

If you are fully on Atlassian Cloud, Opsgenie (now woven into Jira Service Management operations) reduces vendor sprawl. If you live in Datadog or Grafana Cloud, check their native on-call modules before adding another subscription.

What Opsgenie mistakes cause alert fatigue and missed incidents?

The software works when the operating model is disciplined. These failures show up on every production Laravel deployment I have inherited.

Paging on symptoms instead of user impact

CPU at 85% is not an incident. Checkout error rate above 2% for ten minutes is. Tie pages to SLOs or business metrics, not raw infrastructure thresholds alone. Read AIOps basics if you want anomaly detection—but fix alert rules first.

Missing maintenance windows during deploys

Zero-downtime Deployer releases still restart PHP-FPM and flush opcache. Without a maintenance window, health checks flap and Opsgenie pages the whole rotation. I open a fifteen-minute window automatically from GitLab CI before symlink swap on sensitive hosts—same pipeline pattern used on Notary Kathmandu sister sites.

Every integration should pass a runbook URL in the description field. "Disk full on /var" is useless without steps for log rotation, MySQL binlog cleanup, or df -h triage. Your on-call engineer should not grep Confluence at 3 a.m.

Shared API keys and no test drills

Rotate integration API keys when staff leave. Run a monthly game day: deliberately fail a staging heartbeat and confirm the primary acknowledges within five minutes. Testing and optimization applies to alerting pipelines too—not just page speed.

Alert Hygiene: Before vs AfterBeforeAfter120 alerts / nightCPU, disk, 404 spikesNo dedup aliasEveryone paged3 pages / weekSLO + payment failuresStable alias dedupEscalation onlyOpsgenie for on-call and alerting wins on routingFix rules upstream — Opsgenie delivers fewer, better pagesPair with runbooks + monthly drill
Good Opsgenie for on-call and alerting practice: reduce noise upstream with SLOs, aliases, and severity mapping before tuning notification channels.

On booking platforms like Adventure Third Pole Trek, payment and supplier API failures need immediate routing. Marketing blog downtime can wait until morning. Opsgenie team routing makes that separation enforceable instead of hopeful.

Key Takeaways

  • Opsgenie sits between monitors and humans—configure schedules, escalations, and integrations; it does not replace Prometheus or log checks.
  • Map alert severity to Opsgenie priority (P1–P5) and use stable aliases so deduplication prevents duplicate incidents.
  • Forward Alertmanager critical alerts via opsgenie_configs; use the REST API for Laravel queue, cron, and heartbeat failures.
  • Run monthly game-day drills and maintenance windows during Deployer or PHP-FPM reloads to stop deploy flapping.
  • Attach runbook URLs to every alert description so on-call engineers act fast without guessing.
  • Combine Opsgenie with SLO-based rules so only user-impacting failures page overnight.

People Also Ask

Does Opsgenie work with Jira Service Management?

Yes. Atlassian acquired Opsgenie and integrates it with Jira Service Management. Alerts can create or link to JSM incidents, and on-call schedules appear inside the Atlassian ops workflow. Teams already paying for Atlassian Cloud often enable ops features without a separate vendor contract.

How much does Opsgenie cost for a small team?

Pricing is per user and changes with Atlassian bundling. Small teams should compare JSM ops licensing against standalone PagerDuty quotes. Budget roughly USD 15–30 per user/month for paid tiers at small scale, but verify current Atlassian pricing for Nepal-based billing in NPR before you commit.

Can Opsgenie replace Prometheus Alertmanager?

No. Alertmanager handles Prometheus-specific grouping, inhibition, and silencing. Opsgenie handles people, schedules, and multi-channel delivery. The usual architecture keeps both: Alertmanager filters metrics alerts, Opsgenie pages on-call.

What is the difference between an Opsgenie alert and an incident?

An alert is the inbound signal from a monitoring tool. Opsgenie may group multiple alerts into one incident. Responders acknowledge and close incidents; alerts are the raw events that feed them. Use aliases and tags so related alerts collapse correctly.

Build on-call alerting that matches your production stack

Opsgenie for on-call and alerting earns its place when you have real rotations, real escalations, and monitors that already emit trustworthy signals. Start with one team, one schedule, and one Prometheus integration. Add Laravel webhook alerts for the failure modes metrics miss—queue workers, payment callbacks, silent crons. Keep Alertmanager for inhibition rules. Document everything in a runbook your next engineer can follow at 3 a.m.

If you want help wiring alerting into a Laravel production stack, CI pipeline, or shared hosting fleet, see enterprise application development and API development services—or review how similar systems were built on the portfolio. For infrastructure hardening alongside alerting, Ansible playbooks for PHP servers pair well with heartbeat checks. Ready to audit your current setup? Contact us for a practical review focused on pages that matter, not noise that burns out your team.

Frequently Asked Questions

Opsgenie collects alerts from monitoring tools, deduplicates noise, routes them through on-call schedules and escalation policies, and notifies the right responder via app, SMS, voice, or chat until someone acknowledges or resolves the incident.

Pricing is per user and changes with Atlassian bundling. Small teams should compare Jira Service Management ops licensing against standalone PagerDuty quotes. Budget roughly USD 15–30 per user/month at small scale, but verify current Atlassian pricing for Nepal-based billing in NPR before you commit.

No. Alertmanager handles Prometheus-specific grouping, inhibition, and silencing. Opsgenie handles people, schedules, and multi-channel delivery. The usual architecture keeps both: Alertmanager filters metrics alerts, Opsgenie pages on-call.

Start with teams that mirror real ownership—web app, database, and infrastructure at minimum—not one giant DevOps bucket. Create a team, add members with correct time zones (Nepal is UTC+5:45), and build a weekly primary and secondary rotation. Attach the schedule to an escalation policy as step zero. A practical three-step policy: notify primary via app and SMS at zero minutes, secondary at five minutes if unacknowledged, then team lead plus Slack or Teams at fifteen minutes. Reserve notify-everyone policies for true SEV-1 only. Document overrides for Dashain and Tihar leave rather than rewriting the whole rotation each year.

Opsgenie does not replace your monitors—it receives their output. Forward Alertmanager alerts via the built-in Opsgenie receiver using opsgenie_configs with your integration API key, mapping severity labels to Opsgenie priority P1–P5 and tagging env and team. For Laravel queue workers, cron failures, or health checks outside Prometheus, POST JSON to the Opsgenie Create Alert API with a stable alias so repeat failures deduplicate. On stacks without full metrics, a cron job that greps Laravel logs for ERROR or payment gateway timeouts and calls the API on threshold breach still belongs in Opsgenie. Combine log parsing with awk, grep, and journalctl in a small shell wrapper.

You rarely pick only one. Alertmanager is free, self-hosted, and stays close to Prometheus metrics—it handles grouping and inhibition but has no on-call schedules. Opsgenie and PagerDuty add rotations, mobile apps, and broad integrations. Opsgenie fits teams already on Jira or Jira Service Management; PagerDuty suits large ops orgs wanting advanced analytics. For a small Nepal agency running Laravel on Ubuntu with tight budgets, my default is keep Alertmanager for Prometheus, forward P1 and P2 to Opsgenie, and send P3 and above to email or Slack. If you live in Datadog or Grafana Cloud, check their native on-call modules before adding another subscription.

An alert is the inbound signal from a monitoring tool—Prometheus, a Laravel webhook, or a log script. Opsgenie may group multiple related alerts into one incident using aliases and tags within a time window. Responders acknowledge, escalate, and close incidents; alerts are the raw events feeding them. Use stable aliases like queue-worker-prod-01 so the same failure deduplicates instead of opening dozens of separate pages. Getting this distinction right reduces noise and keeps on-call focused on owned work rather than duplicate tickets.

Yes. Atlassian acquired Opsgenie and integrates it with Jira Service Management. Alerts can create or link to JSM incidents, and on-call schedules appear inside the Atlassian ops workflow. Opsgenie is now woven into Jira Service Management operations, which reduces vendor sprawl for teams already paying for Atlassian Cloud. If your incident response, change management, and ticketing already live in Jira, enabling ops features there often beats running a separate on-call contract alongside your existing Atlassian billing.

The software works when the operating model is disciplined. Paging on symptoms instead of user impact—CPU at 85% versus checkout error rate above 2% for ten minutes—trains teams to ignore pages. Missing maintenance windows during Deployer releases causes health checks to flap when PHP-FPM restarts and opcache flushes. Alerts without runbook URLs force engineers to search Confluence at 3 a.m. Shared integration API keys that never rotate when staff leave are a security and audit gap. Skipping monthly game-day drills means you discover broken SMS delivery during a real outage. Fix alert rules and SLO mapping upstream before tuning notification channels.

Heartbeats let a cron job or scheduled task send a periodic ping to Opsgenie. If the ping stops arriving, Opsgenie opens an alert. That pattern catches silent failures better than simple process-up checks—jobs that exit zero but do nothing, or queue workers that die quietly after a deploy while HTTP still returns 200. I use heartbeats alongside Laravel queue monitoring when supervisor status shows FATAL but the site looks fine externally. Pair heartbeats with the Create Alert API alias field so repeated heartbeat failures deduplicate into one incident instead of spamming the rotation.

Opsgenie groups alerts that share the same alias within a configured time window into a single incident. Without deduplication, one noisy cron job on shared hosting can spam five domains at once and page the entire rotation for what is effectively one root cause. Set a stable alias in every integration—Alertmanager messages, Laravel webhook payloads, and shell scripts should all pass one. Tags like env:production and team:platform help routing and filtering but aliases drive deduplication. Test alias behaviour during a staging drill before you rely on it during a production payment or queue failure.

Opsgenie uses priority P1 through P5. Map Alertmanager severity labels in opsgenie_configs so critical payment failures on an eCommerce stack get P1, while high queue depth might start at P3 until SLO burn confirms user impact. Reserve P1 and P2 for pages that wake people—SMS and mobile app—and route P3 and above to email or chat overnight. Tie severity to business metrics, not raw infrastructure thresholds alone. On booking platforms, payment and supplier API failures need immediate routing; marketing blog downtime can wait until morning. Severity-based routing makes that separation enforceable instead of hopeful.

Zero-downtime Deployer 7 releases still restart PHP-FPM and flush opcache. Without a maintenance window, health checks flap and Opsgenie pages the whole rotation for expected deploy noise. I open a fifteen-minute window automatically from GitLab CI before symlink swap on sensitive hosts—the same pipeline pattern used on sister sites sharing that deploy workflow. Maintenance windows suppress or defer alerts while known work is in progress. Document who can declare windows in your incident response runbook so deploys do not train on-call to treat every page as false alarm.

POST JSON to https://api.opsgenie.com/v2/alerts with Authorization GenieKey and your integration API key. Include message, description, priority, tags, and a stable alias such as queue-worker-prod-01. I use this when php artisan queue:work dies silently after a deploy—exactly the kind of issue that passes a simple HTTP 200 check. Validate JSON payloads before pasting into Postman or CI scripts; a trailing comma has caused more failed drills than broken servers. Rotate integration API keys when staff leave and store keys outside version control.

Run a monthly game day: deliberately fail a staging heartbeat or trigger a test alert and confirm the primary acknowledges within five minutes. Testing applies to alerting pipelines, not just application code. Confirm each user has the mobile app installed and SMS delivery works; voice call is a last resort when mobile data fails but adds stress. After every integration change—new Alertmanager receiver, Laravel webhook, or log script—run one end-to-end drill before promoting to production. Untested paging paths fail at 3 a.m., not during business hours when someone can fix the config calmly.

Share this article

0 Comments

Leave a comment

Your email is not published. Comments appear once they have been read. Sign in to have your details filled in.

Quick Contact Options
Choose how you want to connect me: