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');