In Flashduty On-call
You can obtain an integration push URL in either of the following ways.
Use a dedicated integration
Choose this method when you do not need to route alerts to different channels.Expand
Expand
- In the Flashduty console, select Channel and open a channel
- Select Configuration → Integrations → Private integration, then click Add an integration
- Select Elastic, then click Save
- Open the generated integration card and copy the Push URL
Use a shared integration
Choose this method when you need to route alerts to different channels based on the payload.Expand
Expand
- In the Flashduty console, select Integration Center → Alert Events
- Select Elastic and enter an integration name
- Configure the default route and select a channel; after creation, add more rules under Route if needed
- Click Save and copy the generated Push URL
Prerequisites
- Subscription: the Kibana Webhook and PagerDuty connectors require an Elastic Gold subscription or higher (Basic does not include them); a 30-day trial license also works. See Elastic subscriptions.
- Network: Kibana must be able to reach the Flashduty push URL. If your self-managed Kibana sets
xpack.actions.allowedHostsinkibana.yml, add the push URL’s host name (for exampleapi.flashcat.cloud) to that list, otherwise the connector refuses to send. - Permissions: you need Kibana privileges to create connectors and edit rules. See Alerting security.
In Kibana
1
Create a Webhook connector
- Go to Stack Management → Alerts and Insights → Connectors and click Create connector
- Select Webhook and name it, for example,
Flashduty - Set Method to
POSTand paste the full Flashduty push URL (including theintegration_keyparameter) into URL - Set Authentication to None; the
integration_keyin the push URL authenticates the request - Under HTTP headers, add
Content-Type: application/json - Click Save
2
Add an action to the rule
Edit or create a rule, select the
Flashduty connector under Actions, and configure the action:- Set Action frequency to For each alert. With Summary of alerts, Kibana provides no
alert.idand Flashduty rejects the request - Set Run when to the rule’s alert action group (such as
Alert,Query matched, orThreshold met); On status changes is the recommended notification timing - Paste the template below into Body
3
Add a second action for Recovered
Add another action with the same connector, set Action frequency to For each alert and Run when to Recovered, and paste the same template into Body.If the rule has several alert action groups (for example
Alert and Warning on a Metric threshold rule, or Critical, High, Medium, and Low on an SLO burn rate rule), add one action per action group and set the matching severity in its template.4
Verify the lifecycle
Let the rule actually match its condition and confirm that Flashduty receives an active alert, then let the data return to normal and confirm that the same alert recovers. The connector’s Test tab sends the body you type in by hand without rendering rule or alert variables, so it only proves that the push URL is reachable. If you paste the template below into Test, Flashduty receives the literal
{{rule.id}} and {{alert.id}} and opens an active alert titled {{rule.name}}; change action_group in the body to recovered and click Run again to recover that test alert.Action template
Paste the following JSON into the Body of every action:
Kibana JSON-escapes variables in the Body, so quotes or line breaks in rule names or descriptions do not break the JSON.
Custom labels
To turn fields from the rule context into Flashduty labels (for routing or noise reduction), add acustom_labels object to the template, for example:
Alert Key
Flashduty builds the Alert Key from
rule_id and alert_id.
rule.iduniquely identifies the rule.alert.idis the ID of a single alert produced by the rule. For rules grouped by a field it is the group value (such as a host name); for ungrouped rules it is usually a fixed value (such as*). It does not change while an alert goes from active to Recovered.- Kibana’s own PagerDuty connector uses
<rule ID>:<alert ID>as its default dedup key to tie an alert’s trigger and resolve together, the same pairing this integration uses.
alert.uuid stays the same while an alert is active, and a new UUID is generated when the same alert.id fires again after recovering. Flashduty stores it only as the alert_uuid label so you can find that occurrence in Kibana. After a Flashduty alert recovers, the next trigger with the same Alert Key opens a new alert, so keying on alert.id also gives one Flashduty alert per occurrence.
Changes to the rule name, tags, severity, description, or action group do not change the Alert Key. For example, when a Metric threshold rule’s group moves from Warning to Alert, both notifications carry the same Alert Key.
Status and severity
severity is case-insensitive. Any other value is rejected so that a typo cannot produce the wrong severity.
Security detection rules do not send Recovered notifications. Each detection alert becomes a separate Flashduty alert that you close manually or through auto-close in Flashduty.
Use the PagerDuty connector (optional)
If your rules already use the Kibana PagerDuty connector, you can point it at the Flashduty PagerDuty integration without rewriting the actions. Alerts sent this way arrive through Flashduty’s PagerDuty integration, not the Elastic integration on this page.
- Add a PagerDuty integration in Flashduty and copy its push URL
- Create a PagerDuty connector in Kibana: set API URL to that push URL (in the form
https://api.flashcat.cloud/event/push/alert/pagerduty?integration_key=<integration key>) and Integration Key to the integration key from the push URL - In the rule, use For each alert: add an action with Event action
Triggerfor the alert action group, and one with Event actionResolvefor Recovered (the Recovered action defaults toResolve) - Keep the DedupKey that Kibana pre-fills,
{{rule.id}}:{{alert.id}}, on both actions and do not clear it, so the resolve event closes the matching alert. With an empty DedupKey on the Trigger action, Kibana sends nodedup_key, Flashduty generates a random Alert Key for each trigger, and the resolve event cannot close it
Troubleshooting
- Kibana reports
target url "..." is not added to the Kibana config xpack.actions.allowedHosts: add the Flashduty push URL’s host name toxpack.actions.allowedHosts - Flashduty returns an error starting with
alert_id is required: the action’s Action frequency is Summary of alerts; change it to For each alert - Flashduty returns
rule_id is required: the Body is not the template on this page, orrule_idwas changed - Alerts do not recover: make sure a Recovered action exists and the Body keeps
"action_group": "{{alert.actionGroup}}" - Alerts for different hosts merge into one: make sure the rule groups by a field (Group by) and the Body keeps
{{alert.id}} - Flashduty returns
severity ... is not supported:severitymust be Critical, Warning, or Info, or critical, high, medium, or low from Security rules