This SDK is used by the Prepr team to monitor Laravel projects in Atlassian Opsgenie.
composer require preprio/opsgenie
Publish opsgenie.php
config
php artisan vendor:publish --provider="Prepr\OpsGenie\OpsGenieServiceProvider"
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
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 |
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.
Ops()->incident()
Ops()->alert()
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() |
Set incident title.
->message('Import failed')
Set incident description.
->description('Import failed')
Set incident details. (Key-Value list)
->description([
'environment' => 'xxx-xxx-xxx',
'file' => 'xxx_x_xxxx_xxxx_xx.csv'
'example' => true
])
Set incident tags. (Simple list)
->tags(['critical', 'import', 'micro-service'])
Send incident to Opsgenie.
->send();
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();
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');
Ops()
...
->send()
->attachFile('/path/to/file');
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');