preprio/opsgenie

1.0.8 2024-01-05 16:06 UTC

This package is auto-updated.

Last update: 2024-05-05 16:54:29 UTC


README

This SDK is used by the Prepr team to monitor Laravel projects in Atlassian Opsgenie.

Installation

Composer

composer require preprio/opsgenie

Config

Publish opsgenie.php config

php artisan vendor:publish --provider="Prepr\OpsGenie\OpsGenieServiceProvider"

Configuration

Update .env file with the api access token (API_ACCESS_TOKEN) and service id (SERVICE_ID).

Example:

OPSGENIE_KEY=API_ACCESS_TOKEN
OPSGENIE_SERVICE=SERVICE_ID

Optional configuration

Prefix

It's optional to add a prefix to the message that's send to Opsgenie, to clearify what service/repo. You can add a prefix by configuring the following line in your .env file.

OPSGENIE_PREFIX=preprio/mutation.prepr.io

Examples:

config result
PREFIX [PREFIX] Message
preprio/mutation.prepr.io [preprio/mutation.prepr.io] MESSAGE
mutation-api [mutation-api] MESSAGE

Default tags

It's optional to add default tags to the message that's send to Opsgenie. You can add a default tags by configuring the following line in your .env file. (comma-separated list)

OPSGENIE_TAGS=tagOne,tagTwo,etc.

Docs OpsGenie

Usage

Base

For an incident

Ops()->incident()

For an alert

Ops()->alert()

Priority functions (required)

Set incident priority.

Priority Function
Critical ->P1() or ->critical()
High ->P2() or ->high()
Moderate ->P3() or ->moderate()
Low ->P4() or ->low()
Informational ->P5() or ->informational()

Message (required)

Set incident title.

->message('Import failed')

Description (optional)

Set incident description.

->description('Import failed')

Details (optional)

Set incident details. (Key-Value list)

->description([
        'environment' => 'xxx-xxx-xxx',
        'file' => 'xxx_x_xxxx_xxxx_xx.csv'
        'example' => true
    ])

Tags (optional)

Set incident tags. (Simple list)

->tags(['critical', 'import', 'micro-service'])

Send (required)

Send incident to Opsgenie.

->send();

Full example:

Function above combined.

Ops()
    ->incident()
    ->critical()
    ->message('Import failed')
    ->description('The import script failed to import data from customer X.')
    ->details([
        'environment' => 'xxx-xxx-xxx',
        'file' => 'xxx_x_xxxx_xxxx_xx.csv'
        'example' => true
    ])
    ->tags(['critical', 'import', 'micro-service'])
    ->send();

Alert attachments

Attach Resource/Blob (optional)

You can add attachments to alerts like log files, exception files, renders, json, etc. By adding the following function(s) after ->send().

Ops()
    ...
    ->send()
    ->attachBlob('RESOURCE/BLOB', 'filename_with.extension');

You can also attach multiple files

Ops()
    ...
    ->send()
    ->attachBlob('RESOURCE/BLOB', 'filename_with.extension')
    ->attachBlob('<html><body><h1>Hello World!</h1></body></html', 'index.html');
    ->attachBlob('{"Hello":"World"}', 'export.json');

Attach files (optional) ⚠️ NOT TESTED

Ops()
    ...
    ->send()
    ->attachFile('/path/to/file');

Attach example/combined

You can use attach-function multiple times, and mix them in random order. For example 2x ->attachBlob(), 1x ->attachFile().

Ops()
    ...
    ->send()
    ->attachBlob('{"Hello":"World"}', 'export.json')
    ->attachFile('/path/to/file')
    ->attachBlob('<html><body><h1>Hello World!</h1></body></html', 'index.html');