FortiGate
EvoHub receives FortiGate events through an automation stitch: a trigger on the event logs you care about, and a Webhook action that sends the log to EvoHub.
Set it up
Create the integration
In EvoHub, go to On-Call → Integrations → + Add Integration, choose FortiGate, pick an Escalation Policy and click Create Integration. Copy the Webhook URL.
Create the action
In FortiOS, go to Security Fabric → Automation, create an Action of type Webhook with protocol HTTPS, method POST, your webhook URL, and the HTTP body devname=FGT-HQ-01 %%log%%, with FGT-HQ-01 replaced by this FortiGate's hostname. FortiGate replaces %%log%% with the triggering log line in FortiOS's own key=value format (date=… logid="0100032002" … msg="…"), and EvoHub reads it as it is. That log line does not name the device, so the devname= in front of it is what keeps two FortiGates' alerts apart; without it, the same event from every FortiGate on this integration lands on one alert. To keep the key out of the URL, remove ?key=… and add an HTTP header with key Authorization and value Bearer YOUR_INTEGRATION_KEY instead.
The same action from the CLI:
config system automation-action
edit "evohub"
set action-type webhook
set protocol https
set method post
set uri "evohub.io/ingest/fortigate"
set port 443
set http-body "devname=FGT-HQ-01 %%log%%"
config http-headers
edit 1
set key "Authorization"
set value "Bearer YOUR_INTEGRATION_KEY"
next
end
next
end
Without the header, put the key in the URI instead: set uri "evohub.io/ingest/fortigate?key=YOUR_INTEGRATION_KEY".
Warning
Every log that matches the trigger is one delivery. Trigger on specific event log IDs, not on traffic logs.
What EvoHub reads
| EvoHub alert | Taken from |
|---|---|
| Title | logdesc and the device name (devname), for example Admin login failed on FGT-HQ-01. |
| Description | msg. |
| Labels | devname, devid, vd, logid, type, subtype, level, eventtype, action, user, srcip, dstip, srcport, dstport, policyid, ui, status, reason, time. |
Severity
| FortiOS log level | EvoHub severity |
|---|---|
| emergency, alert, critical | critical |
| error | high |
| warning | medium |
| notice | low |
| information, debug | info |
Resolve and deduplication
An alert is identified by the FortiGate (devname from the HTTP body, else devid) and the log ID. While it is open, the same event again is recorded as Retriggered instead of paging again.
Log entries are events and FortiGate sends no recovery, so alerts stay open until someone resolves them in EvoHub.

