- 10.x (LTS)
- 12.x (LTS)
- 14.x (LTS)
- Create config file
config.json
PAGERDUTY_READ_ONLY_TOKEN
is used for reading schedules and checking the overlaps.SCHEDULES
array can contain one or moreSCHEDULE
items to check- every
SCHEDULE
should have aNOTIFICATIONS
section to create a PagerDuty incident or send a Slack message if overlap is found SCHEDULE
can contain aEXCLUSION_DAYS
key, which specifies days (3 letter abb.) in form of object with optionalstart
andend
time (hh:mm
format CET TIMEZONE).Ifstart
orend
is omitted, whole day is considered excluded. Example below represents current weekend on-call setup.
Currently, we support Slack (SLACK
with SLACK_WEBHOOK_URL
and CHANNEL
) or shorthanded SLACK_WEBHOOK_URL
and
PagerDuty (PAGERDUTY
with PAGERDUTY_TOKEN
, PAGERDUTY_SERVICE_ID
and PAGERDUTY_FROM
) notifications. The
PAGERDUTY_TOKEN
has to have full access.
For PagerDuty, an incident can either be directly assigned to the user with overlaps (default) or set to an escalation
policy (if specified by PAGERDUTY_ESCALATION_POLICY_ID
in config).
All PagerDuty integrations are using PagerDuty API v2. When generating an API token, select the v2 option.
{
"PAGERDUTY_API_URL": "https://acme.pagerduty.com/api/v1",
"PAGERDUTY_READ_ONLY_TOKEN": "33333333333333333333",
"WEEKS_TO_CHECK": 2,
"SCHEDULES": [{
"SCHEDULE": ["PWEVPB6", "PT57OLG"],
"NOTIFICATIONS": {
"SLACK": {
"SLACK_WEBHOOK_URL": "http://acme.slack.com/11111",
"CHANNEL": "#channel-name"
}
}
}, {
"SCHEDULE": ["PWEVPB6", "PT57OLA"],
"NOTIFICATIONS": {
"PAGERDUTY": {
"PAGERDUTY_TOKEN": "22222222222222222222",
"PAGERDUTY_SERVICE_ID": "PFARE53",
"PAGERDUTY_FROM": "[email protected]"
},
"SLACK_WEBHOOK_URL": "http://acme.slack.com/11111"
},
"EXCLUSION_DAYS": {"Fri": {"start": "18:00", "end": "23:59"}, "Sat": {}, "Sun": {"start": "00:00", "end": "18:00"}}
}]
}
- Run command and check:
$ ./bin/pdoverrides check --config config.json
Config schedule IDs passed.
OK
For debugging you can use debug
package included in the library:
DEBUG=pagerduty-overrides* ./bin/pdoverrides check -c config.json
Alternatively, you can include the DEBUG
variable in the config.json
file (esp. for debugging on AWS Lambda).