File IQ Webhooks

Prev Next

File IQ version 10.2 enhances its Alerting feature by introducing Alerting Webhooks. In addition to the current email notification method, alerts can now be sent directly to Slack, Microsoft Teams, or another custom destination through HTTPS webhooks.

Note: The Alerting Webhook is a Premium feature of Nasuni File IQ.

What is a Webhook?

A webhook is a simple way for one application to send real-time information to another application. Unlike traditional integrations that require constant polling or manual checks, webhooks automatically push data whenever an event occurs.

A webhook is a configured HTTPS endpoint. When an alert is triggered, File IQ sends a structured JSON payload to that endpoint.

Slack and Microsoft Teams Alert Webhook Configuration

The Alerting webhook configuration requires configuration in both the Alerting feature and the alerting destination.

Note: To configure the Alerting webhook to a custom destination, navigate to Custom Alert Webhook Configuration.

To configure Slack or Microsoft Teams webhook alerts, follow these steps:

  1. Configure a webhook with one of the following destinations:

    - Slack

    - Microsoft Teams

  2. Navigate the Nasuni File IQ UI and click Configuration > Webhook Configuration.

  3. Check the Enable Alerts Webhooks checkbox.

  4. Select an Integration Type from the dropdown.

  5. Enter the Webhook URL.

    Note: The Webhook URL is the destination endpoint receiving the webhook request.

  6. Click the Validate Configuration checkbox to validate the settings as part of the save process.

  7. Click Save.

Slack Integration

To send alerts from Nasuni File IQ to Slack, configure a Slack Webhook URL. This is a URL that Slack generates for your workspace and channel, which allows Nasuni File IQ to post messages into Slack on your behalf.

Use the Slack documentation to create a new webhook: Slack: Incoming Webhooks Overview. After creating the webhook, proceed to step 2 of the configuration.

Slack Message Format

Slack webhook messages contain the following information:

  • Alert Name: The Alert name

  • The description of the File IQ Appliance that dispatched the message.

  • Alert Description: A brief description of the Alert.

  • Configuration Summary: Key parameters used in the Alert configuration, including:

    • Interval: Alert Interval used for Alert detection.

    • Threshold: The threshold that must be crossed before the Alert fires.

    • Repeat After: Resends an Alert notification if not resolved within the selected time interval.

  • Details of each alert instance, including its current status and value.

  • Dashboard Link: A link to the Nasuni File IQ Inspector dashboard.

For more information on the Alert type, see the Alerting Documentation.

Microsoft Teams Integration

To send alerts from Nasuni File IQ to Microsoft Teams, configure an incoming webhook for a Teams channel. An Incoming Webhook provides a unique URL that allows Nasuni File IQ to post messages into Teams. These messages are sent as Adaptive Card–formatted JSON payloads, which means they render as rich, interactive cards inside Teams. After creating the webhook, proceed to step 2 of the configuration.

Use the following Microsoft Teams documentation to create a Teams webhook:

Microsoft Teams Message Format

The Microsoft Teams webhook messages contain the following information:

  • Alert Name: The Alert name

  • The description of the File IQ Appliance that dispatched the message.

  • Alert Description: A brief description of the Alert.

  • Configuration Summary: Key parameters used in the Alert configuration, including:

    • Interval: Alert Interval used for Alert detection.

    • Threshold: The threshold that must be crossed before the Alert fires.

    • Repeat After: Resends an Alert notification if not resolved within the selected time interval.

  • Details of each alert instance, including its current status and value.

  • Dashboard Link: A link to the Nasuni File IQ Inspector dashboard.

For more information on the Alert type, see the Alerting Documentation.

Custom Webhook Alert Integration

Nasuni File IQ enables the delivery of alert payloads to any arbitrary HTTPS endpoint. The JSON schema describing the custom payload format is documented here. Every payload contains the following information:

  • alert_name (string) – Name of the alert type.

  • alert_description (string) – The alert description.

  • Version (string) – Schema version identifier "1.0".

  • source_appliance (object) – Metadata about the originating Appliance:

    • Description (string, required) – The Appliance description.

    • grafana_url (string, URI, optional) – Grafana UI URL if resolvable.

  • Alerts (array) – One or more alert instances from the same source. Each alert includes:

    • Entity (string) – Appliance or volume affected.

    • Name (string) – Alert name.

    • Value (string) – Evaluated value that triggered the alert.

    • start_timestamp (RFC3339 string) – When the alert started.

    • end_timestamp (RFC3339 string or null) – When the alert ended, or null if active.

    • Status (string) – "firing" or "resolved".

  • Configuration (object) – Defines how the alert is configured:

    • parameter_friendly_name (string, required) – Human-readable parameter name.

    • Description (string, required) – Explanation of what the parameter controls.

    • Value (integer | number | boolean | string, required) – Configured value.

    • Unit (string or null, optional) – Unit of measure (if applicable).

To configure a custom webhook alert, follow these steps:

  1. Navigate the Nasuni File IQ UI and click Configuration > Webhook Configuration.

  2. Check the Enable Alerts Webhooks checkbox.

  3. For the Integration type, select Custom.

  4. Enter the Webhook URL. This is the HTTPS endpoint URL.

  5. Select an HTTP Method.

  6. Select an HTTP Authentication Type.

    - If selecting No Authentication, proceed to step 7.

    - If selecting Basic Authentication, enter a Username and Password.

    - If selecting Authorization Header, enter the Authorization Header Scheme and Authorization Header Credentials.

  7. Enter a Server CA Certificate to ensure that the webhook client can establish a trusted TLS connection with the configured endpoint.

  8. Check the Validate Configuration, which validates this part of the save process.

  9. Click Save.

Custom Webhook Payload Schema

The JSON schema delivered to the custom webhook is as follows:

{

 "$schema": "https://json-schema.org/draft/2020-12/schema",

 "title": "Nasuni File IQ Alert Webhook Payload",

 "description": "Schema for File IQ Alert Webhook payloads.",

 "type": "object",

 "properties": {

   "alert_name": {

     "type": "string",

     "description": "The alert name."

   },  

   "alert_description": {

     "type": "string",

     "description": "The alert description."

   },      

   "version": {

     "type": "string",

     "description": "Schema version identifier for this payload (e.g. '1.0')."

   },

   "source_appliance": {

     "type": "object",

     "description": "Metadata about the originating appliance (applies to all alerts in this payload).",

     "properties": {

       "description": {

         "type": "string",

         "description": "Human-readable description of the source appliance"

       },

       "grafana_url": {

         "type": "string",

         "format": "uri",

         "description": "Grafana UI URL if the appliance has a DNS-resolvable hostname"

       }

     },

     "required": ["description"],

     "additionalProperties": false

   }

   "alerts": {

     "type": "array",

     "description": "One or more alert instances from the same source.",

     "minItems": 0,

     "items": { "$ref": "#/$defs/Alert" }

   },

   "configuration": {

     "type": "object",

     "description": "Configuration details of the underlying alert.",

     "properties": {

       "parameter_friendly_name": {

         "type": "string",

         "description": "Human-readable parameter name."

       },

       "description": {

         "type": "string",

         "description": "Explains what the parameter controls."

       },

       "value": {

         "description": "Configured value for the parameter.",

         "oneOf": [

           { "type": "integer" },

           { "type": "number" },

           { "type": "boolean" },

           { "type": "string" }

         ]

       },

       "unit": {

         "type": ["string", "null"],

         "description": "Unit of measure for the value, if applicable."

       }

     },

     "required": ["parameter_friendly_name", "description", "value"],

     "additionalProperties": false,

     "examples": [

       {

         "parameter_friendly_name": "Threshold",

         "description": "Number of events observed before the alert fires",

         "value": "0",

         "unit": "Events"

       }

     ]

   }  

 },

 "required": ["alert_name", "alert_description", "version", "source_appliance", "alerts", "configuration"],

 "additionalProperties": false,

 "$defs": {

   "Alert": {

     "title": "Alert",

     "type": "object",

     "properties": {

       "entity": {

         "type": "string",

         "description": "The entity (appliance or volume) to which the alert applies"

       },        

       "name": {

         "type": "string",

         "description": "The alert name"

       },

       "value": {

         "type": "string",

         "description": "The evaluated value that triggered the alert"

       },

       "start_timestamp": {

         "type": "string",

         "format": "date-time",

         "description": "RFC3339 timestamp marking when the alert started"

       },

       "end_timestamp": {

         "type": ["string", "null"],

         "format": "date-time",

         "description": "RFC3339 timestamp when the alert ended (null if still active)"

       },

       "status": {

         "type": "string",

         "enum": ["firing", "resolved"],

         "description": "Current status of the alert instance"

       }

     },

     "required": [

       "entity",

       "name",

       "value",

       "start_timestamp",

       "end_timestamp",

       "status"

     ],

     "additionalProperties": false

   }

 }

}

Proxy Considerations

Webhook connectivity is established via the HTTPS proxy when one is configured.

Alert Configuration and Webhook Messages

If an alert is currently firing and the alert configuration is updated, a Webhook message is sent with a Status of RESOLVED and a Value of N/A. This allows reevaluation of the alert based on the new configuration criteria at the next alert evaluation period.