npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

hubot-pager-maint

v1.0.7

Published

PagerDuty integration for Hubot

Downloads

4

Readme

hubot-pager-maint

npm version Build Status

PagerDuty integration for Hubot but only for creating maintenance windows. Syntax is as such:

hubot pager maint Sun May 17 01:06:58 UTC 2020 10

A maintenance window will be created with all services with the "PROD" string.

Installation

In your hubot repository, run:

npm install hubot-pager-maint --save

Then add hubot-pager-maint to your external-scripts.json:

["hubot-pager-maint"]

Configuration

Upgrading from v2.x? The HUBOT_PAGERDUTY_SUBDOMAIN parameter has been replaced with HUBOT_PAGERDUTY_FROM_EMAIL, which is sent along as a header to indicate the actor for the incident creation workflow. This would be the email address for a bot user in PagerDuty.

| Environment Variable | Required? | Description | | -------------------- | --------- | ----------------------------------------- | | HUBOT_PAGERDUTY_API_KEY | Yes | The REST API Key for this integration.| | HUBOT_PAGERDUTY_FROM_EMAIL | Yes | The email of the default "actor" user for incident creation and modification. | | HUBOT_PAGERDUTY_USER_ID | No* | The user ID of a PagerDuty user for your bot. This is only required if you want chat users to be able to trigger incidents without their own PagerDuty user.| | HUBOT_PAGERDUTY_SERVICE_API_KEY | No* | The Incident Service Key to use when creating a new incident. This should be assigned to a dummy escalation policy that doesn't actually notify, as Hubot will trigger on this before reassigning it.| | HUBOT_PAGERDUTY_SCHEDULES | No | Provide a comma separated list of schedules identifiers (e.g. PFGPBFY,AFBCGH) to restrict queries to only those schedules. | | HUBOT_PAGERDUTY_SERVICE_QUERY | No | Query in JSON string format to pass to PagerDuty |

* - May be required for certain actions.

Webhook

| Environment Variable | Required? | Description | | -------------------- | --------- | ----------------------------------------- | | HUBOT_PAGERDUTY_ENDPOINT | Yes | PagerDuty webhook listener on your Hubot's server. Must be public. Example: /hook. | | HUBOT_PAGERDUTY_ROOM | Yes | Room in which you want the pagerduty webhook notifications to appear. Example: #pagerduty |

To setup the webhooks and get the alerts in your chatrooms, you need to add the endpoint you define here (e.g /hooks) in the service settings of your PagerDuty accounts. You also need to define the room in which you want them to appear. That is, unless you want to spam all the rooms with alerts, but we don't believe that should be the default behavior. 😁

Example interactions

Trigger an incident assigned to a specific user:

technicalpickles> hubot pager trigger jnewland omgwtfbbq
hubot> technicalpickles: :pager: triggered! now assigning it to the right user...
hubot> technicalpickles: :pager: assigned to jnewland!

Trigger an incident assigned to an escalation policy:

technicalpickles> hubot pager trigger ops site is down
hubot> Shell: :pager: triggered! now assigning it to the right user...
hubot> Shell: :pager: assigned to ops!

Check on open incidents:

technicalpickles> hubot pager sup
hubot>
      Triggered:
      ----------
      8: 2014-11-05T20:17:50Z site is down - @technicalpickles - assigned to jnewland

      Acknowledged:
      -------------
      7: 2014-11-05T20:16:29Z omgwtfbbq - @technicalpickles - assigned to jnewland

Acknowledge triggered alerts assigned to you:

jnewland> /pager ack
hubot> jnewland: Incident 9 acknowledged

Resolve acknowledged alerts assigned to you:

jnewland> /pager resolve
hubot> jnewland: Incident 9 resolved

Check up coming schedule, and schedule shift overrides on it:

technicalpickles> hubot pager schedules
hubot> * Ops - https://urcompany.pagerduty.com/schedules#DEADBEE
technicalpickles> hubot pager schedule ops
hubot> * 2014-06-24T09:06:45-07:00 - 2014-06-25T03:00:00-07:00 technicalpickles
       * 2014-06-25T03:00:00-07:00 - 2014-06-26T03:00:00-07:00 jnewland
       * 2014-06-26T03:00:00-07:00 - 2014-06-27T03:00:00-07:00 technicalpickles
       * 2014-06-27T03:00:00-07:00 - 2014-06-28T03:00:00-07:00 jnewland
       * 2014-06-28T03:00:00-07:00 - 2014-06-29T03:00:00-07:00 technicalpickles
technicalpickles> hubot pager override ops 2014-06-25T03:00:00-07:00 - 2014-06-26T03:00:00-07:00 chrislundquist
hubot> Override setup! chrislundquist has the pager from 2014-06-25T06:00:00-04:00 until 2014-06-26T06:00:00-04:00
technicalpickles> hubot pager schedule
hubot> * 2014-06-24T09:06:45-07:00 - 2014-06-25T03:00:00-07:00 technicalpickles
       * 2014-06-25T03:00:00-07:00 - 2014-06-26T03:00:00-07:00 chrislundquist
       * 2014-06-26T03:00:00-07:00 - 2014-06-27T03:00:00-07:00 technicalpickles
       * 2014-06-27T03:00:00-07:00 - 2014-06-28T03:00:00-07:00 jnewland
       * 2014-06-28T03:00:00-07:00 - 2014-06-29T03:00:00-07:00 technicalpickles

Conventions

hubot-pager-me makes some assumptions about how you are using PagerDuty:

  • PagerDuty email matches chat email
    • override with hubot pager me as <pagerduty email>
  • The Service used by hubot-pager-me should not be assigned to an escalation policy with real people on it. Instead, it should be a dummy user that doesn't have any notification rules. If this isn't done, the escalation policy assigned to it will be notified, and then Hubot will immediately reassign to the proper team

Development

Fork this repository, and clone it locally. To start using with an existing Hubot for testing:

  • Run npm install in hubot-pager-me repository
  • Run npm link in hubot-pager-me repository
  • Run npm link hubot-pager-me in your Hubot directory
  • NOTE: if you are using something like nodenv or similar, make sure your npm link from the same node version

There's a few environment variables useful for testing:

  • HUBOT_PAGERDUTY_NOOP: Don't actually make POST/PUT HTTP requests.
  • HUBOT_PAGERDUTY_TEST_EMAIL: Force email of address to this for testing.

Resources

  • https://v2.developer.pagerduty.com/docs/getting-started
  • https://v2.developer.pagerduty.com/docs/webhooks-v2-overview