preprio / opsgenie
Laravel integration for Opsgenie alerts, incidents, and heartbeats.
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.12.1
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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');