In Flashduty On-call
You can get the integration push URL in either of the following ways.
Use a dedicated integration
- In the Flashduty console, select Channel and open a channel
- Select Configuration → Integrations → Private integration, then click Add an integration
- Select Kuvasz and click Save
- Open the new integration card and copy the Push URL
Use a shared integration
- In the Flashduty console, select Integration Center → Alert Events
- Select Kuvasz and enter an integration name
- Configure the default route and select a channel. You can add more rules under Routes after creation
- Click Save and copy the generated Push URL
Configure Kuvasz
Kuvasz integrations are configured only in the YAML configuration file, and you must restart the Kuvasz container after changing it.
1
Add a webhook integration
Add a
webhook integration to the Kuvasz configuration file. Set url to the full push URL, including ?integration_key=..., and do not set payload-template, so Kuvasz sends its default body:global: true makes every monitor use this integration by default. To limit it to some monitors, remove global and reference the integration ID webhook:flashduty in those monitors’ configuration. The integration ID is the type plus the name.If you set excluded-events, do not exclude the *_UP events or SSL_VALID, or alerts will never recover.2
Restart and send a test event
Restart Kuvasz, then click the test button on the integration in the web UI (or call
POST /api/v2/integrations/{integrationId}/test). Kuvasz sends one sample message per monitor event type, all for a monitor named Test monitor. Flashduty recognizes these samples, returns 200, and creates no alert.3
Verify the lifecycle
Make a monitor fail (for example, create an HTTP monitor that points to a URL returning 500) and confirm Flashduty receives a Critical alert. Point it back to a healthy URL and, once Kuvasz detects the recovery, confirm the alert closes.
Alert Key
Flashduty uses the monitor type plus
monitorId as the Alert Key. Each Kuvasz monitor has a fixed numeric ID, and the down (*_DOWN) and up (*_UP) messages of one monitor carry the same monitorId, so they land on the same Flashduty alert.
- Monitor IDs are independent per monitor type (HTTP monitor 12 and TCP monitor 12 are different monitors), so the Alert Key also contains the monitor type (HTTP, Push, ICMP, TCP, DNS, Docker)
- SSL certificate events use a separate Alert Key, so an HTTP monitor’s recovery message does not close them
- Renaming a monitor does not change the Alert Key
monitorId.
Alert lifecycle
Flashduty handles messages by the
type field:
Other types are ignored as well.
DNS_RECORDS_CHANGED has no recovery message, so turn on auto-close after timeout for the channel, start the timer from Incident triggered, and set about 24 hours.
Severity
Kuvasz messages carry no severity. Down events and
SSL_INVALID mean the service is unavailable and are fixed at Critical; SSL_WILL_EXPIRE and DNS_RECORDS_CHANGED are fixed at Warning. A recovery event keeps the original alert’s severity.
Alert content
- Title: the monitor name
- Description: the event text Kuvasz generates (
eventDetails) - Labels:
check(monitor name),monitor_id,monitor_type,monitor_name,monitor_urn,monitor_detail(relative path of the monitor’s details page),event_type(Kuvasztype), andsource(alwayskuvasz)
Troubleshooting
- The test event created no alert: this is expected; test events only verify connectivity
- 4xx or an invalid
integration_keyerror: check thaturlis the full push URL and the integration is not disabled - An alert did not recover: check that
excluded-eventsdoes not exclude*_UPorSSL_VALID, and that no custompayload-templateis set (a custom template changes the fields, which Flashduty cannot recognize)