2017 © Pedro Peláez
 

library pagerduty

PHP wrapper to PagerDuty Events API.

image

adilbaig/pagerduty

PHP wrapper to PagerDuty Events API.

  • Sunday, June 3, 2018
  • by adilbaig
  • Repository
  • 0 Watchers
  • 2 Stars
  • 59,450 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 6 Versions
  • 29 % Grown

The README.md

PHP PagerDuty Events API

PHP implementation of the PagerDuty Events API V2, (*1)

UPGRADE NOTICE

The PagerDuty Events API V2 is not backwards compatible with the PagerDuty Events API V1. Hence, this API has changed. If you are upgrading from a 2.* release, make sure you pay attention to the contructor of the TriggerEvent, (*2)

Latest Stable Version Total Downloads, (*3)

Features

Installation

Add this line to your project's composer.json, (*4)

{
...
    "require": {
        "adilbaig/pagerduty": "3.*"
    }
...
}

The packagist URL is https://packagist.org/packages/adilbaig/pagerduty, (*5)

Usage

Trigger an event, (*6)

use \PagerDuty\TriggerEvent;
use \PagerDuty\Exceptions\PagerDutyException;

$routingKey = "1d334a4819fc4b67a795b1c54f9a"; //Replace this with the integration key of your service.

// In this example, we're triggering a "Service is down" message from a web server.
try {
    $event = new TriggerEvent(
        $routingKey, 
        "Service is down",  // A high-level, text summary message of the event. Will be used to construct an alert's description.
        "web-server-01",    // human-readable unique identifier, such as a hostname, for the system having the problem.
        TriggerEvent::ERROR,// How impacted the affected system is? Influences the priority of any created incidents. 
        true                // Generate the dedup_key from the driver. If false, the dedup_key will be generated on PD 
    );
    $responseCode = $event->send();
    if($responseCode == 200)
        echo "Success";
    elseif($responseCode == 429)
        echo "Rate Limited";  //You're being throttled. Slow down.
    else // An error occured. Try again later
        echo "Some error has occured. Try again later";
} catch(PagerDutyException $exception) { //This doesn't happen unless you've broken their guidelines. The API tries to minimize user mistakes
    var_dump($exception->getErrors());
}

Trigger event with custom connection, for example: using proxies and/or setting verbosity for debugging, etc., (*7)


use \PagerDuty\TriggerEvent; use \PagerDuty\Exceptions\PagerDutyException; use \PagerDuty\Http\PagerDutyHttpConnection; try { $routingKey = '1d334a4819fc4b67a795b1c54f9a'; //Replace this with the integration key of your service. $event = new TriggerEvent( $routingKey, "Service is down", // A high-level, text summary message of the event. Will be used to construct an alert's description. "web-server-01", // human-readable unique identifier, such as a hostname, for the system having the problem. TriggerEvent::ERROR,// How impacted the affected system is? Influences the priority of any created incidents. true // Generate the dedup_key from the driver. If false, the dedup_key will be generated on PD ); // create a custom proxy connection $connection = new PagerDutyHttpConnection(); // .. and set the proxy $connection->setProxy('https://user:password@your-proxy-ip-address:port'); // set custom CURL options. Here we set verbosity for debugging $connection->addCurlOption('CURLOPT_VERBOSE', 1); // send event through proxy $connection->send($event); } catch(PagerDutyException $exception) { //This doesn't happen unless you've broken their guidelines. The API tries to minimize user mistakes var_dump($exception->getErrors()); } catch (\Exception $e) { // A configuration exception }

Automatically send only one PagerDuty incident for repeated errors, (*8)


//You will only see one incident on PD (TriggerEvent($routingKey, "Service is down", "web-server-01", TriggerEvent::ERROR, true))->send(); (TriggerEvent($routingKey, "Service is down", "web-server-01", TriggerEvent::ERROR, true))->send(); (TriggerEvent($routingKey, "Service is down", "web-server-01", TriggerEvent::ERROR, true))->send();

Create a detailed 'trigger' event, add optional data. Dump the event and inspect response from PD, (*9)

use \PagerDuty\TriggerEvent;

//Taken from the `trigger` example @ https://v2.developer.pagerduty.com/docs/send-an-event-events-api-v2
//Send a detailed event, and store the `dedup_key` generated on the server

$event = new TriggerEvent(
    $routingKey, 
    "Example alert on host1.example.com", 
    "monitoringtool:cloudvendor:central-region-dc-01:852559987:cluster/api-stats-prod-003", 
    TriggerEvent::INFO
);
$event
    ->setPayloadTimestamp("2015-07-17T08:42:58.315+0000")
    ->setPayloadComponent("postgres")
    ->setPayloadGroup("prod-datapipe")
    ->setPayloadClass("deploy")
    ->setPayloadCustomDetails(["ping_time" => "1500ms", "load_avg" => 0.75])
    ->addLink("https://example.com/", "Link text")
    ->addImage("https://www.pagerduty.com/wp-content/uploads/2016/05/pagerduty-logo-green.png", "https://example.com/", "Example text"))
;

// Pass in the '$response' variable by reference if you want to inspect PD's response. This is optional, and you probably don't need this in production.
$response = null;
$responseCode = $event->send($response);
// In this case, we will save the `dedup_key` generated by the PD server
var_dump($response['dedup_key']);

Acknowledge an event

(new AcknowledgeEvent($routingKey, "dedup key"))->send();

Resolve an event

(new ResolveEvent($routingKey, "dedup key"))->send();

UnitTests

> ./vendor/bin/phpunit test/
.....                                                               5 / 5 (100%)

Time: 37 ms, Memory: 4.00MB

OK (5 tests, 6 assertions)

Questions

Q. How do i get the service key from PagerDuty?, (*10)

A. In your PagerDuty console, click 'Configuration' > 'Services'. Click the link under 'Integrations' column. It's the 'Integration Key', (*11)

Read more here : https://v2.developer.pagerduty.com/v2/docs/events-api#getting-started, (*12)

Requirements

This library needs the curl pecl extension., (*13)

In Ubuntu 16.04, install it like so :, (*14)

sudo apt install php-curl

In Ubuntu 18.04, install it like so :, (*15)

sudo apt install php7.2-curl

The Versions

03/06 2018

dev-events-v2

dev-events-v2 https://github.com/adilbaig/pagerduty

PHP wrapper to PagerDuty Events API.

  Sources   Download

MIT

The Requires

  • php >=5.4.0
  • ext-curl *

 

The Development Requires

rest pagerduty

02/06 2018

dev-master

9999999-dev https://github.com/adilbaig/pagerduty

PHP wrapper to PagerDuty Events API.

  Sources   Download

MIT BSD

The Requires

  • php >=5.4.0
  • ext-curl *

 

The Development Requires

rest pagerduty

02/06 2018

2.1.0

2.1.0.0 https://github.com/adilbaig/pagerduty

PHP wrapper to PagerDuty Events API.

  Sources   Download

MIT

The Requires

  • php >=5.4.0
  • ext-curl *

 

The Development Requires

rest pagerduty

29/05 2018

dev-php7.2

dev-php7.2 https://github.com/adilbaig/pagerduty

PHP wrapper to PagerDuty Events API.

  Sources   Download

MIT

The Requires

  • php >=5.4.0
  • ext-curl *

 

The Development Requires

rest pagerduty

11/10 2016

2.0.0

2.0.0.0 https://github.com/adilbaig/pagerduty

PHP wrapper to PagerDuty Events API.

  Sources   Download

BSD

The Requires

  • php >=5.4.0
  • ext-curl *

 

The Development Requires

rest pagerduty

03/04 2014

1.0.0

1.0.0.0 https://github.com/adilbaig/pagerduty

PHP wrapper to PagerDuty Integration API.

  Sources   Download

rest pagerduty