Grafana OnCall
Grafana Oncall
This transport sends alerts to Grafana OnCall with a formatted webhook or with a webhook. For both methods, read the Grafana documentation. The difference is small. The formatted webhook gives a clearer default view.
NOTE: by default, Grafana converts an acknowledged alert to a resolved alert. To change this behaviour, update the Template settings of your integration as below.
Autoresolution: {{ payload.get("raw_state", "") != 2 and payload.get("state", "").upper() == "OK" }}
Auto acknowledge: {{ payload.get("raw_state", "") == 2 }}
The payload to Grafana holds more information. This information is useful in the templates and the routes. Run a test of the LibreNMS transport to see the payload in the Grafana interface.
To change the data to Grafana, or to override or add fields, create your own template. This template gives the correct information in JSON. For example:
{
"message": "Severity: {{ $alert->severity }}\nTimestamp: {{ $alert->timestamp }}\nRule: {{ $alert->title }}\n @foreach ($alert->faults as $key => $value) {{ $key }}: {{ $value['string'] }}\n @endforeach",
"number_of_processors": \App\Models\Processors::where('device_id', $alert->device_id)->count(),
"title": "{{ $alert->title }}",
"link_to_upstream_details": "{{ \LibreNMS\Util\Url::deviceUrl($device) }}",
}
@if ($alert->transport == 'grafana')
{
"message": "Severity: {{ $alert->severity }}\nTimestamp: {{ $alert->timestamp }}\nRule: {{ $alert->title }}\n @foreach ($alert->faults as $key => $value) {{ $key }}: {{ $value['string'] }}\n @endforeach",
"number_of_processors": \App\Models\Processors::where('device_id', $alert->device_id)->count(),
"title": "{{ $alert->title }}",
"link_to_upstream_details": "{{ \LibreNMS\Util\Url::deviceUrl($device) }}",
}
@else
{{ $alert->title }}
Severity: {{ $alert->severity }}
@if ($alert->state == 0) Time elapsed: {{ $alert->elapsed }} @endif
Timestamp: {{ $alert->timestamp }}
Unique-ID: {{ $alert->uid }}
Rule: @if ($alert->name) {{ $alert->name }} @else {{ $alert->rule }} @endif
@if ($alert->faults) Faults:
@foreach ($alert->faults as $key => $value)
{{ $key }}: {{ $value['string'] }}
@endforeach
@endif
Alert sent to:
@foreach ($alert->contacts as $key => $value)
{{ $value }} <{{ $key }}>
@endforeach
@endif
Example:
| Config | Example |
|---|---|
| Webhook URL | https://a-prod-us-central-0.grafana.net/integrations/v1/formatted_webhook/m12xmIjOcgwH74UF8CN4dk0Dh/ |