Monitoring
pagerduty

PagerDuty

SaaSPaidREST

The leading incident management and on-call scheduling platform. PagerDuty routes alerts from your monitoring tools to the right on-call engineer, manages escalation policies, and tracks incident response.

License

Proprietary

Language

N/A

50
Trust
Limited

Why PagerDuty?

You have a production system that needs 24/7 on-call coverage

You need automated alert routing and escalation policies

You want post-incident reports and reliability analytics

Signal Breakdown

What drives the Trust Score

npm downloads
320k / wk
Commits (90d)
Active
GitHub stars
N/A (SaaS)
Stack Overflow
3.1k q's
Community
High
Weighted Trust Score50 / 100

Download Trend

Last 12 months

Tradeoffs & Caveats

Know before you commit

You're a solo developer — BetterStack or a simple email alert suffices

Budget is tight — PagerDuty is expensive (try Opsgenie or Grafana OnCall)

Pricing

Free tier & paid plans

Free tier

Free for 1 user (Developer plan)

Paid

$21/user/mo Starter

Incident response gets expensive at scale

Often Used Together

Complementary tools that pair well with PagerDuty

prometheus

Prometheus

Monitoring

96Excellent
View
grafana

Grafana

Monitoring

61Fair
View
sentry

Sentry

Monitoring

94Excellent
View
datadog

Datadog

Monitoring

86Strong
View
aws

AWS

Cloud Platforms

94Excellent
View

Learning Resources

Docs, videos, tutorials, and courses

Get Started

Repository and installation options

View on GitHub

github.com/PagerDuty/pdpyras

npmnpm install @pagerduty/pdjs
pippip install pdpyras

Quick Start

Copy and adapt to get going fast

import { api } from '@pagerduty/pdjs';

const pd = api({ token: process.env.PAGERDUTY_API_KEY });

// Trigger an incident
await pd.post('/incidents', {
  data: {
    incident: {
      type: 'incident',
      title: 'High error rate detected',
      service: { id: 'SERVICE_ID', type: 'service_reference' },
      urgency: 'high',
    },
  },
});

Code Examples

Common usage patterns

Resolve an incident

Programmatically resolve an open incident

import { api } from '@pagerduty/pdjs';

const pd = api({ token: process.env.PAGERDUTY_API_KEY });

await pd.put(`/incidents/${incidentId}`, {
  data: {
    incident: {
      type: 'incident',
      status: 'resolved',
    },
  },
  headers: { From: 'oncall@yourcompany.com' },
});

List on-call users

Fetch who is currently on call for a schedule

import { api } from '@pagerduty/pdjs';

const pd = api({ token: process.env.PAGERDUTY_API_KEY });

const { resource: oncalls } = await pd.get('/oncalls', {
  data: { schedule_ids: ['SCHEDULE_ID'], limit: 5 },
});

oncalls.forEach(({ user }) => {
  console.log(`On call: ${user.name} <${user.email}>`);
});

Add a note to an incident

Post a note for responders during an active incident

await pd.post(`/incidents/${incidentId}/notes`, {
  data: {
    note: {
      content: 'Rolled back deployment v2.3.1 — monitoring recovery.',
    },
  },
  headers: { From: 'oncall@yourcompany.com' },
});

Community Notes

Real experiences from developers who've used this tool