Managing the Webhook Alarm Plugin
Get your business-users aware, by sending them a notification based on the Nodinite monitoring alert
The Webhook Alarm Plugin sends an HTTP Request with the alert data to your Webhook (with your logic) when the status of Resources in one or more Monitor Views changes their state (all according to user-defined configurations).
Custom Metadata is part of the alert.
Support custom HTTP headers, for example, to add x-api-key authentication.
Customizable set of Webhooks, please review the ResendWebhookSettings System Parameter.
This feature enables you to easily integrate Nodinite monitoring with Freshdesk or any other Customer Support Software of your choice. You can automate your incident process, and tag the tickets with the Custom Metadata properties set using the Nodinite Repository Model.
The HTTP Webhook Alarm Plugin come pre-installed with the Nodinite Core Services.
Example templates
- Logic App Template - Integrating Nodinite Alarms with Freshdesk: https://github.com/Nodinite/Azure.LogicApp.Template.Alert.FreshDesk
- Azure Connectors - Use the HTTP Webhook plugin to activate just about anything out there
There are several hundred connectors to choose between(!)
- Send alarms to Jira using the Integrations hub for Jira available on the Atlassian marketplace here.
Follow the How to guide on how to create alarm issues from Nodinite to set it up.
Webhooks are user-defined HTTP callbacks and an event is triggered by the Nodinite Monitoring Service when rules and settings from the Nodinite alarm plugins apply. When that event occurs the Nodinite HTTP Webhook plugin makes an HTTP request to the configured URL. You can use these events to invoke behaviour on another system with any appropriate action. A common use case is to trigger your incident process.
Configuring the Webhook Alarm Plugin
There are two ways of configuring the Alarm Plugin:
Global Configuration
You can configure the Alarm Plugin using Nodinite's Web Client by navigating to "Administration", "Settings", "Alarm Plugins" and choose "HTTP Webhook", and review the Add or manage Alarm Plugin for generic details.
The following properties can be configured for this plugin:
Property | Description |
---|---|
Web Client URL | The URL for end-users back to your Nodinite Web Client instance |
URL | The address of the Webhook to send alert to |
Compress Body | Whether the body of the request should be compressed. The compression is GZIP. Important Note: When implementing a solution that retrieves the call needs to decompress the body to read the JSON payload. |
Test URL | Nodinite provides a way for you to verify that the plugin works using the Execute Alarm Test or Restore Alarm Test. The Test URL property is the destination URL for these two test executions |
Specific Settings from within Monitor Views
From a Monitor View, you can override the following global (default) settings with a 'Specific' setting:
*
- Trigger on changed Resource state - Trigger alarms when a Resource changes state, default is to trigger alarm when the Monitor View changes state
- Override default URL - The URL to the Webhook to send alerts to from this Monitor View. Leave this field empty to use the default value.
- Override Compress Body - When checked, the body for the alert is sent in compressed format. This setting is honoured if the 'Override default URL' property is also set.
- Enable Recurrence - Configure the recurrence for redistributing alarm
Monitoring State Options tab
You can opt to override the global settings about the Monitoring State Options.
Monitoring State Options tab
What does the alert payload look like?
You can send the payload to the Webhook either in a compressed format or not.
Compress body option
when the Override Compress Body check box is checked, the payload is sent compressed.
Please review the following examples (actual data varies with each alert):
Uncompressed example
{
"MonitorViews": [
{
"MonitorViewId": 1,
"Name": "Test View",
"Description": "Simple unit testing view.",
"WebSite": null,
"StatusCode": {
"StatusCode": 0,
"Name": "OK"
},
"NumberOfMonitoredResources": 2,
"Integrations": [
{
"IntegrationId": 1,
"Name": "INT001 - Orders to first company",
"Description": "",
"WebSite": "https://www.nodinite.com",
"CustomFields": [
{
"CustomFieldId": 1,
"Name": "SLA",
"Description": "",
"WebSite": null,
"ValueType": {
"CustomFieldTypeId": 1,
"Name": "Text",
"Description": null,
"WebSite": null
},
"CustomValues": [
{
"CustomValueId": 1,
"Value": "Gold",
"Description": "Act fast!!",
"WebSite": "https://www.nodinite.com",
"ValueType": {
"CustomFieldTypeId": 1,
"Name": "Text",
"Description": null,
"WebSite": null
}
}
]
}
],
"CustomMetaDatas": [
{
"CustomMetaDataId": 1,
"Name": "Summary",
"Description": "My integration is the perfect one",
"WebSite": "https://www.nodinite.com",
"DataType": 1,
"CustomValues": [
{
"CustomValueId": 1,
"Value": "My integration is the perfect one",
"Description": "Act fast!!",
"WebSite": "https://www.nodinite.com",
"ValueType": null
}
]
}
]
}
],
"ChangedResources": [
{
"ResourceId": 1,
"Name": "First Resource - Send Port",
"Description": null,
"WebSite": "https://www.nodinite.com/resource/send-port",
"Source": {
"SourceId": 1,
"Name": "Test Source",
"Description": "Simple source for testing purposes only.",
"Server": null,
"Environment": null,
"Version": null,
"WebSite": "https://www.nodinite.com/"
},
"Category": {
"CategoryId": 1,
"Name": "Send Ports",
"Description": "Send ports category.",
"WebSite": null
},
"Application": {
"ApplicationId": 1,
"Name": "BizTalk System",
"Description": "Default biztalk application",
"WebSite": "https://www.nodinite.com/application/biztalk-system"
},
"StatusCode": {
"StatusCode": 0,
"Name": "OK"
},
"LogText": "All OK! \r\nTest\t - \r - \n"
},
{
"ResourceId": 2,
"Name": "Second Resource - Receive Port",
"Description": null,
"WebSite": null,
"Source": {
"SourceId": 1,
"Name": "Test Source",
"Description": "Simple source for testing purposes only.",
"Server": null,
"Environment": null,
"Version": null,
"WebSite": "https://www.nodinite.com/"
},
"Category": {
"CategoryId": 2,
"Name": "Receive Ports",
"Description": "Receive ports category.",
"WebSite": "https://www.nodinite.com/category/receive-ports"
},
"Application": {
"ApplicationId": 1,
"Name": "BizTalk System",
"Description": "Default biztalk application",
"WebSite": "https://www.nodinite.com/application/biztalk-system"
},
"StatusCode": {
"StatusCode": 0,
"Name": "OK"
},
"LogText": "All OK!"
}
],
"Users": [
{
"UserId": 1,
"Name": "\\IBSS\\imsvc",
"Description": null,
"MailAddress": "john.doe@nodinite.com"
},
{
"UserId": 2,
"Name": "\\IBSS\\imsvc",
"Description": null,
"MailAddress": "jane.doe@nodinite.com"
}
]
},
{
"MonitorViewId": 2,
"Name": "Second View",
"Description": "Simple test view (second).",
"WebSite": null,
"StatusCode": {
"StatusCode": 2,
"Name": "ERROR"
},
"NumberOfMonitoredResources": 2,
"Integrations": [],
"ChangedResources": [
{
"ResourceId": 10,
"Name": "LogAPI Queue",
"Description": "Queue for Nodinite's LogAPI.",
"WebSite": null,
"Source": {
"SourceId": 2,
"Name": "MSMQ",
"Description": "Source to monitor MSMQ queues.",
"Server": "IBSS-DEV01",
"Environment": "Production",
"Version": "1.0",
"WebSite": null
},
"Category": {
"CategoryId": 10,
"Name": "MSMQ Queue",
"Description": "MSMQ Queues category",
"WebSite": "https://msdn.microsoft.com/en-us/library/ms711472%28v=vs.85%29.aspx"
},
"Application": null,
"StatusCode": {
"StatusCode": 2,
"Name": "ERROR"
},
"LogText": "Number of messages in queue exceeded error limit."
},
{
"ResourceId": 11,
"Name": "LogAPI Test Queue",
"Description": "",
"WebSite": null,
"Source": {
"SourceId": 2,
"Name": "MSMQ",
"Description": "Source to monitor MSMQ queues.",
"Server": "IBSS-DEV01",
"Environment": "Production",
"Version": "1.0",
"WebSite": null
},
"Category": {
"CategoryId": 10,
"Name": "MSMQ Queue",
"Description": "MSMQ Queues category",
"WebSite": "https://msdn.microsoft.com/en-us/library/ms711472%28v=vs.85%29.aspx"
},
"Application": null,
"StatusCode": {
"StatusCode": 1,
"Name": "WARNING"
},
"LogText": "Number of messages in queue exceeded warning limit, but not error limit."
}
],
"Users": [
{
"UserId": 1,
"Name": "\\IBSS\\imsvc",
"Description": null,
"MailAddress": "jane.doe@nodinite.com"
}
]
}
],
"Version": "1.0.0.0",
"Environment": "Test",
"Customer": "UnitTest",
"Created": "2019-02-06T13:06:00.0604707Z",
"WebClientUrl": "http://localhost/IM-Dev/WebClient/",
"IsRecurring": false,
"ProductStatus": {
"IsTrial": false,
"ExpirationDate": null
}
}
Example payload with some Custom Metadata.
Compressed example
Below is an example of a compressed JSON alert object:
Ew0AAB+LCAAAAAAABADtVWtv2zYU/SscgWIdYMuS6jaJgQLz7HQwstip5aZAHx9o6dolKpEaSdlJg/z3XuphS5ZbNAEKDNu+SZe8r3PP4b2jl1JwI9U1h62mg/d3dcMkogOvQ6csATqgC9CGWDPt0DHoUPHUcCnwJOBJGgPJ0JEYvMXFmmzwImHxlt1qMrtw0OctLANuMJLI4rhDA8NMpkcyQstd48/dpZxd0Hv8yZIlqNmqrAyiOWiZqRCwYL9DJ8LAWjFbi+3gY4eOPjGxblzDvqq/ZlOvuMKuqjPSJQGIiFxJZQ67LKreNUE/GZPqQa+33W4dISOOtYETyqRX/fQsFD1Vhu5pDNxNi8BBbsr7PlJTDnTZLBmuQbRqqRAvq17hvQr3NFOp1KCJFPGthT0AtQFV1X8uNlxJkdigpekalH5Yh3YoI4aoS3Vrm6i+m23skNTt8u2RxUKTsPRtMQRzDNM05iErnO7qv81Mf/AvCxZ/JsGtNpC0so1hxbLYkCX/Yuw1Vgv7iInW3HtlyK4uMt8/hNZ/yfUCbnAMdBjHqJFf0NikqV/DMpQIWY2ncwiBb+BHqFrq7d/LuT1OdVTatKtOv8O8HyVB5Yz6zmPmytb0v0hafHDfaJxn/srar2afHz5Ybln7cZpeMh4PowjfSYxAbbG/1/vA+FYWB1uppYzv7SUbs9hHT3V++7cHraN9rvP5fDb/SRtpDzRCPLyakNcZZNBqKbfm4puWIP2qSeFxrKkjmt+3cxlcvm4laLwBxEiSlAZ7m/xt0+u6xOlCMaFZaN0Lm+/6Lj1QPb1SMsrCkr079VPPcY+8+9/cLW6j9m9AtD/aa/yoZBIdCSfhoZJarkwuGhDdTPdivlQMtZ3oE8/rn/hP/NPNy412Tp8/8c8cptObltAfQaK9lAo6EbkiCaqArbFwLgqsCdyEABFEBJTCKcQ84cZpbQrPO6RP/qAfB+h/nvxzebKf49vhfDqZ/vkIpmyZEnYt51zpLDNDhDQH/Pn5j/bH+vz6Tt9xHa9/1hr4GDZoG2XayCTnyWS6CGavFuPza2tXgJPB0qjvemdd1++6LxaeO/CeDXzXOXnWPzv13hVDG8UcI75RcVVjSaUCXYvzRC8UZ3i+YrEGLOQm5cUrPWY7Vt1/BSAomRwTDQAA
Example with a compressed payload.