Skip to content

Commit 29115e5

Browse files
authored
Merge pull request #591 from flashcatcloud/sync/alert-batch5-e2e-docs-test
docs: sync OpenStatus/Dead Man's Snitch/Axiom/Komodor/HyperDX/OpenNMS/Pandora FMS alert-integration fixes
2 parents 180a162 + 91ed2a3 commit 29115e5

14 files changed

Lines changed: 125 additions & 77 deletions

File tree

‎en/on-call/integration/alert-integration/alert-sources/axiom.mdx‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,13 @@ You can get the integration push URL in either of the following ways.
3535
<Steps>
3636
<Step title="Create a custom webhook notifier">
3737

38-
1. In Axiom, open the **Monitors** tab and click **Manage notifiers** on the right
38+
<Note>
39+
The **Custom Webhook** notifier is not available on Axiom's free Personal plan: it is greyed out in the notifier list. Use a paid Axiom plan.
40+
</Note>
41+
42+
1. In Axiom, open the **Monitors** tab, click **New monitor** (or open an existing monitor), and click **Manage notifiers** in the top right
3943
2. Click **New notifier** in the top right and name it `Flashduty`
40-
3. Select **Custom webhook** and paste the full Flashduty push URL into **Webhook URL**
44+
3. Select **Custom Webhook** and paste the full Flashduty push URL into **Webhook URL**
4145
4. Keep Axiom's default body template unchanged. If you edited it before, replace it with the template below
4246
5. No headers are needed. Click **Create**
4347

‎en/on-call/integration/alert-integration/alert-sources/dead-mans-snitch.mdx‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,17 @@ You can get the integration push URL in either of the following ways.
3838
<Step title="Add a webhook integration">
3939

4040
1. Sign in to Dead Man's Snitch and click **Integrations** in the top navigation bar
41-
2. In the list of available integrations, click **Add Webhook**
41+
2. In the **Available Integrations** list, click **ADD** next to **Webhooks**
4242
3. Paste the full Flashduty push URL (including `integration_key`) into the **Hook URL** field and click **Save**
43+
4. Click **SEND TEST**. Dead Man's Snitch sends a sample `snitch.reporting` notification; Flashduty returns success and creates no alert, and Dead Man's Snitch shows **Webhook is working correctly.**
4344

4445
</Step>
4546

4647
<Step title="Filter by tag (optional)">
4748

4849
By default, an integration receives notifications for every snitch in the current case. To send only some snitches to Flashduty:
4950

50-
1. On the **Integrations** page, click the filter icon next to the webhook
51+
1. On the **Integrations** page, click the **Manage Tags** icon next to the webhook
5152
2. Add one or more tags and click **Save**
5253

5354
After that, only snitches that carry at least one of these tags are sent to Flashduty. Remove all tags to send every snitch again.
@@ -112,7 +113,7 @@ Dead Man's Snitch webhooks carry no severity. Flashduty maps them as follows:
112113
<AccordionGroup>
113114
<Accordion title="Does a snitch that stays missing send repeated notifications?">
114115

115-
Yes. Until the snitch is paused or checks in again, Dead Man's Snitch sends one missing notification for every failed interval. These notifications have the same Alert Key as the original alert and are merged into that active alert instead of creating new ones.
116+
The Dead Man's Snitch FAQ says email alerts repeat once per failed period until the snitch is paused or checks in again. With a webhook integration, a snitch on a 1-minute interval sent only one missing notification over several failed periods. Any repeated missing notification has the same Alert Key as the original alert and is merged into that active alert instead of creating a new one.
116117

117118
</Accordion>
118119

‎en/on-call/integration/alert-integration/alert-sources/hyperdx.mdx‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Both open-source HyperDX and managed ClickStack in ClickHouse Cloud support Gene
3737
<Steps>
3838
<Step title="Create a Generic webhook">
3939

40-
1. Open **Team Settings** and click **Add Webhook** under **Webhooks**. You can also select **Add New Webhook** while creating an alert
40+
1. Open **Team Settings** → **Integrations** and click **Add Webhook** under **Webhooks**. You can also click **Add New Incoming Webhook** while creating an alert
4141
2. Set **Service Type** to **Generic**
4242
3. Enter `Flashduty` as the **Webhook Name** and paste the full Flashduty push URL into **Webhook URL**
4343
4. Leave **Webhook Headers** empty. HyperDX sends `Content-Type: application/json` by default
@@ -73,8 +73,8 @@ Older HyperDX releases do not have the `{{alertId}}` and `{{groupKey}}` variable
7373
**Search alerts**:
7474

7575
1. Run a query on the **Search** page and click **Alerts** in the top-right corner
76-
2. Save the search if it is not saved yet, set the threshold and time window, and fill in **grouped by** if needed
77-
3. Select the `Flashduty` webhook as the notification target and save the alert
76+
2. Set the threshold and time window, and fill in **grouped by** under **Advanced Settings** if needed
77+
3. Under **Send to**, select the `Flashduty` webhook, then click **Save Search with Alert**
7878

7979
**Dashboard chart alerts**:
8080

@@ -130,7 +130,7 @@ Flashduty uses `state` to decide between trigger and recovery, and `severity` to
130130
| :--- | :--- |
131131
| `event_id` | `{{eventId}}`, the Alert Key |
132132
| `alert_id` | `{{alertId}}`, the HyperDX alert ID |
133-
| `group` | `{{groupKey}}`, the group value of a grouped alert |
133+
| `group` | `{{groupKey}}`, the group of a grouped alert as `<column>:<value>`, for example `ServiceName:checkout` |
134134
| `severity` | Raw `severity` value from the template |
135135
| `link` | `{{link}}`, the link to the search or chart in HyperDX |
136136

‎en/on-call/integration/alert-integration/alert-sources/komodor.mdx‎

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: "Send Kubernetes workload, node, PVC, and Job issues and their reco
44
keywords: ["alert integration", "Komodor", "Kubernetes", "Realtime Health Monitors", "webhook"]
55
---
66

7-
Use the webhook notification channel of Komodor Realtime Health Monitors to send the issues Komodor detects in your Kubernetes clusters to Flashduty On-call. One kind of monitor issue on one resource in one namespace of one cluster maps to one Flashduty alert: an `open` message from Komodor triggers the alert, and a `close` message recovers it.
7+
Use the webhook notification channel of Komodor Realtime Health Monitors to send the issues Komodor detects in your Kubernetes clusters to Flashduty On-call. One kind of monitor issue on one resource in one namespace of one cluster maps to one Flashduty alert: an `open` message from Komodor triggers the alert, and a `closed` message recovers it.
88

99
<div className="hide">
1010

@@ -49,33 +49,37 @@ Choose this method when you need to route alerts to different channels based on
4949
---
5050

5151
- The Komodor Agent is installed in your Kubernetes cluster, and the cluster appears in the Komodor console.
52-
- Your account can edit Komodor **Realtime Health Monitors**.
52+
- Your account can edit Komodor **Health Policies**.
5353

5454
## In Komodor
5555
---
5656

5757
<Steps>
58-
<Step title="Open a monitor rule">
58+
<Step title="Open a monitor">
5959

60-
Sign in to the Komodor console, go to the **Realtime Health Monitors** page, select the cluster, and open a monitor rule (for example, the Availability monitor), or click **Add rule** to create one.
60+
Sign in to the Komodor console and open **Organization Settings** → **Health Policies** → **Realtime Monitors**. Expand the cluster and a monitor type (for example **Availability monitor**), then click a monitor (for example **Default Runtime Availability**) to open **Edit Monitor**, or click **+ Add Monitor** to create one.
6161

6262
</Step>
6363

6464
<Step title="Add a webhook notification channel">
6565

66-
1. In the rule's **Edit Rule** section, select **Webhook** as the notification method
66+
1. Under **Where do you want to receive notifications?**, select **Webhook**
6767
2. Click **Add New Webhook**:
68-
- **Webhook Name**: a recognizable name, for example `Flashduty`
6968
- **Webhook URL**: the full Flashduty push URL, including the `integration_key` parameter
70-
3. Save the rule
69+
- **Webhook Name**: a recognizable name, for example `Flashduty`
70+
- Leave **Headers** empty
71+
3. Click **Test Webhook** (see the next step), then **Add Webhook**
72+
4. Select `Flashduty` under **Select webhooks** and click **Save Monitor**
7173

72-
Once created, the webhook channel can be selected in any other monitor rule. Select it in every rule that should send alerts to Flashduty.
74+
Once created, the webhook can be selected in any other monitor. Select it in every monitor that should send alerts to Flashduty.
7375

7476
</Step>
7577

7678
<Step title="Confirm delivery">
7779

78-
The Komodor documentation does not provide a test send for webhooks. The next time the rule detects an issue, check that the alert appears in the channel's alert list in Flashduty, and that it recovers once the issue is resolved.
80+
**Test Webhook** posts `{"type":"Test!"}` from your browser. Flashduty returns success and creates no alert, so the test only confirms that the push URL is reachable.
81+
82+
The next time the monitor detects an issue, check that the alert appears in the channel's alert list in Flashduty, and that it recovers once the issue is resolved.
7983

8084
</Step>
8185
</Steps>
@@ -87,7 +91,7 @@ Deploy monitor notifications describe a rollout (successful or failed), not a he
8791
## Alert Key
8892
---
8993

90-
Flashduty builds the Alert Key from the `monitorType`, `cluster`, `namespace`, and `resourceName` fields. For one kind of issue on one resource, the `open` and `close` messages carry the same four values, so they merge into one alert and the `close` message recovers it.
94+
Flashduty builds the Alert Key from the `monitorType`, `cluster`, `namespace`, and `resourceName` fields. For one kind of issue on one resource, the `open` and `closed` messages carry the same four values, so they merge into one alert and the `closed` message recovers it.
9195

9296
- Different resources, namespaces, or clusters, or different monitor types on the same resource (for example Availability and Job), produce different alerts.
9397
- Changes to the issue details (`issueDetails`), the issue link (`issueURL`), and the time fields do not change the Alert Key.
@@ -101,7 +105,7 @@ Komodor webhook notifications carry no severity field, so Flashduty uses Critica
101105
| Komodor `status` | Flashduty status | Flashduty severity |
102106
| :--- | :--- | :--- |
103107
| `open` | Triggered | Critical |
104-
| `close` | Recovered | Critical |
108+
| `closed` | Recovered | Critical |
105109

106110
If `status` has any other value, or `monitorType`, `cluster`, or `resourceName` is missing, Flashduty returns an error and Komodor records a failed delivery.
107111

@@ -115,8 +119,8 @@ If `status` has any other value, or `monitorType`, `cluster`, or `resourceName`
115119
| `service` | Komodor service identifier `serviceName` |
116120
| `resource` | Resource name `resourceName` |
117121
| `check` | Monitor type, for example `availability`, `node`, `pvc`, or `job` |
118-
| `status` | `open` or `close` |
119-
| `issue_details` | Issue details, for example `[Terminating ContainersNotReady]` |
122+
| `status` | `open` or `closed` |
123+
| `issue_details` | Issue details, for example `NonZeroExitCode - Exit code: 1`; several details are joined with `; ` |
120124
| `issue_url` | Link to the issue in Komodor |
121125

122126
The alert title is `<monitor type> issue on <resource name> (<cluster>/<namespace>)`, and the description contains the issue details and the Komodor link.
@@ -133,15 +137,15 @@ No. Notification sinks deliver agent run and investigation events (such as `run.
133137

134138
<Accordion title="What if an alert does not recover?">
135139

136-
- Check that the monitor rule still selects the Flashduty webhook channel. After a rule is changed or deleted, Komodor no longer sends its `close` message.
140+
- Check that the monitor rule still selects the Flashduty webhook channel. After a rule is changed or deleted, Komodor no longer sends its `closed` message.
137141
- On the alert details page, compare the `check`, `cluster`, `namespace`, and `resource` labels. The recovery message must carry the same four values to recover the alert.
138-
- Changing the scope of an Availability monitor can remove existing issues, and Komodor may then send no `close` message. Close the alert in Flashduty by hand.
142+
- Changing the scope of an Availability monitor can remove existing issues, and Komodor may then send no `closed` message. Close the alert in Flashduty by hand.
139143

140144
</Accordion>
141145

142146
<Accordion title="Why does one workload have several alerts?">
143147

144-
Different monitor types produce different alerts. For example, when a CronJob triggers both the Availability and the CronJob monitors, Flashduty creates two alerts, and each recovers with its own `close` message.
148+
Different monitor types produce different alerts. For example, when a CronJob triggers both the Availability and the CronJob monitors, Flashduty creates two alerts, and each recovers with its own `closed` message.
145149

146150
</Accordion>
147151
</AccordionGroup>

‎en/on-call/integration/alert-integration/alert-sources/opennms.mdx‎

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,13 @@ Notes:
6868

6969
- Every `${name}` in the body needs an `<argument>` with the matching name; a missing one is replaced with an empty string. `notice_id` is the field Flashduty uses to identify the alert, so do not remove it
7070
- If the push URL contains `&` (for example, because you appended other query parameters), write it as `&amp;` in the XML
71-
- Changes to this file take effect immediately, without restarting OpenNMS
71+
72+
After saving, reload Notifd; until then the `flashduty` command does not appear in the destination path wizard in the next step. On the OpenNMS server, run `$OPENNMS_HOME/bin/send-event.pl -p 'daemonName Notifd' uei.opennms.org/internal/reloadDaemonConfig`. The official container image has no Perl, so send the same event through the REST API instead (replace `<OpenNMS>` with the OpenNMS address and enter the admin password when prompted):
73+
74+
```bash
75+
curl -u admin -X POST -H 'Content-Type: application/json' http://<OpenNMS>:8980/opennms/rest/events \
76+
-d '{"uei": "uei.opennms.org/internal/reloadDaemonConfig", "source": "flashduty", "parms": [{"parmName": "daemonName", "value": "Notifd"}]}'
77+
```
7278

7379
</Step>
7480

@@ -81,7 +87,7 @@ OpenNMS runs the notification command once for each target user in a destination
8187
3. Name it `Flashduty`, click **Edit**, select only `flashduty` under **Send to Selected Users**, and click **Next Step**
8288
4. Select the `flashduty` command, set **Auto Notify** to **On**, click **Next Step**, and then click **Finish**
8389

84-
**Auto Notify** must be **On**. With the default value, OpenNMS does not send the resolution notice for a notice that someone has already acknowledged by hand in OpenNMS, and the Flashduty alert does not close.
90+
**Auto Notify** must be **On**, which the wizard preselects. With **Off** or **Auto**, OpenNMS does not send the resolution notice for a notice that someone has already acknowledged by hand in OpenNMS, and the Flashduty alert does not close.
8591

8692
</Step>
8793

@@ -128,6 +134,15 @@ $OPENNMS_HOME/bin/send-event.pl -n <node ID> -i <IP address> uei.opennms.org/nod
128134
$OPENNMS_HOME/bin/send-event.pl -n <node ID> -i <IP address> uei.opennms.org/nodes/nodeUp
129135
```
130136

137+
The official container image has no Perl to run `send-event.pl`; send the same events through the REST API instead:
138+
139+
```bash
140+
curl -u admin -X POST -H 'Content-Type: application/xml' http://<OpenNMS>:8980/opennms/rest/events \
141+
-d '<event><uei>uei.opennms.org/nodes/nodeDown</uei><source>flashduty</source><nodeid><node ID></nodeid><interface><IP address></interface></event>'
142+
curl -u admin -X POST -H 'Content-Type: application/xml' http://<OpenNMS>:8980/opennms/rest/events \
143+
-d '<event><uei>uei.opennms.org/nodes/nodeUp</uei><source>flashduty</source><nodeid><node ID></nodeid><interface><IP address></interface></event>'
144+
```
145+
131146
OpenNMS has no button to test a notification command on its own.
132147

133148
</Step>
@@ -165,7 +180,7 @@ To push other notices that have no auto-acknowledgement (for example, threshold
165180
<auto-acknowledge-alarm resolution-prefix="RESOLVED: " notify="true"/>
166181
```
167182

168-
When the event's alarm is cleared by its clearing event, OpenNMS acknowledges the notice and sends the resolution notice. After the change, run `$OPENNMS_HOME/bin/send-event.pl -p 'daemonName Notifd' uei.opennms.org/internal/reloadDaemonConfig` to reload. For notices that still get no resolution notice, turn on the [auto-resolve timeout](/en/on-call/channel/create-edit) in the channel that receives this integration's alerts, set **Window timing start** to **Incident trigger**, and set the timeout to 24 hours.
183+
When the event's alarm is cleared by its clearing event, OpenNMS acknowledges the notice and sends the resolution notice. After the change, reload Notifd as in the first step. For notices that still get no resolution notice, turn on the [auto-resolve timeout](/en/on-call/channel/create-edit) in the channel that receives this integration's alerts, set **Window timing start** to **Incident trigger**, and set the timeout to 24 hours.
169184

170185
## Severity
171186
---
@@ -183,14 +198,14 @@ Severity comes from `severity` in the request, which is the OpenNMS event severi
183198
| `Cleared` | Info |
184199
| Empty or any other value | Critical |
185200

186-
A resolution notice carries the severity of the original outage event, so the recovery event keeps the severity the alert was triggered with.
201+
In a resolution notice, `severity` is the numeric severity id OpenNMS stores (for example `5` for `Minor` and `6` for `Major`). Flashduty converts ids 1–7 back to severity names, so the recovery event keeps the severity the alert was triggered with.
187202

188203
## Alert content
189204
---
190205

191206
- **Title**: the notice subject `subject` without the `RESOLVED: ` prefix; `OpenNMS notice #<notice ID>` when the subject is empty
192207
- **Description**: the notice text `message` without the `RESOLVED: ` prefix
193-
- **Labels**: `notice_id`, `event_id`, `event_uei`, `node_id`, `interface`, `service`, `severity`. Labels with empty values are not added
208+
- **Labels**: `notice_id`, `event_id`, `event_uei`, `node_id`, `interface`, `service`, `severity` (the severity name; the numeric id in a resolution notice is converted to its name). Labels with empty values are not added
194209

195210
## Troubleshooting
196211
---

‎en/on-call/integration/alert-integration/alert-sources/openstatus.mdx‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,24 +35,24 @@ You can get the integration push URL in either of the following ways.
3535
<Steps>
3636
<Step title="Create a Webhook notification channel">
3737

38-
1. Sign in to the OpenStatus dashboard, open **Notifications** in the sidebar, and click **Create Notification Channel**
39-
2. Select **Webhook** as the channel type
40-
3. Name the channel `Flashduty`
38+
1. Sign in to the OpenStatus dashboard and open **Notifications** in the sidebar
39+
2. Under **Create a new notifier**, click **Webhook**
40+
3. Enter `Flashduty` as the **Name**
4141
4. Paste the full Flashduty push URL into **Webhook URL**
4242
5. Leave **Request Headers** empty. OpenStatus always sends `application/json`
43-
6. Under **Monitors**, select the monitors that should alert, then save
43+
6. Under **Monitors**, select the monitors that should alert, then click **Submit**. You can also attach the notifier later from a monitor's **Settings → Notifications**
4444

4545
</Step>
4646

4747
<Step title="Send a test">
4848

49-
In the same form, click **Send Test**. The test message uses a fixed sample monitor (`monitor.id` `1`, name `test`, URL `http://openstat.us`). Flashduty returns success and creates no alert. When OpenStatus shows **Test sent**, the push URL works.
49+
In the same form, click **Send Test**. The test message uses a fixed sample monitor (`monitor.id` `1`, name `test`, URL `http://openstat.us`). Flashduty returns success and creates no alert.
5050

5151
</Step>
5252

5353
<Step title="Verify the alert lifecycle">
5454

55-
1. Create a monitor with the URL `https://openstat.us/500` (always returns 500) and attach the notification channel from the first step
55+
1. Create a monitor with the URL `https://openstat.us/500` (always returns 500) and attach the notification channel from the first step. OpenStatus checks the URL before saving and asks **Still save?** because it returns 500; click **Save**
5656
2. After at least half of the monitor's regions report an error, confirm that Flashduty receives a Critical alert
5757
3. Point the monitor back at a healthy URL, wait for the regions to recover, and confirm that the alert recovers
5858
4. Delete the test monitor when you are done

‎en/on-call/integration/alert-integration/alert-sources/pandora-fms.mdx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ Go to **Management → Alerts → Templates**, open the template you use, and in
8585

8686
<Step title="Add the action to module alerts">
8787

88-
1. Go to **Management → Alerts → Module Alerts** and create a module alert, or open an existing one
89-
2. Select the **Agent**, **Module**, and **Template**, and add `Flashduty` under **Actions**
90-
3. Save
88+
1. Go to **Management → Alerts → List of Alerts** and click **Create** to create a module alert, or find an existing one in the list
89+
2. Select the **Agent**, **Module**, and **Template**, and select `Flashduty` under **Actions**
90+
3. Click **Add alert**
9191

9292
You can also add an alert for a module from the agent's **Alerts** tab and select the `Flashduty` action. For an existing module alert, just add the `Flashduty` action; existing actions such as email are not affected.
9393

0 commit comments

Comments
 (0)