flashduty-knowledge-base 1.3.4 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/iife/en.js CHANGED
@@ -82,6 +82,15 @@ Field|Required|Type|Description
82
82
  | alert_key | No | string | Alert identifier, used to update or automatically recover existing alerts.<br><br>You can customize this value, but it cannot exceed \`255\` characters. You can also rely on system auto-generation, this value will be returned in the response.<br><br>If you're reporting a recovery event, this value must exist.
83
83
  | description | No | string | Alert description, no more than \`2048\` characters, will be truncated if exceeded.
84
84
  | labels | No | map | Alert label collection, key is the label name, value is the label value:<br><br>1. Both key and value of labels are string type, case-sensitive.<br>2. Label key should not exceed \`128\` characters, following Prometheus label naming conventions. Value should not exceed \`2048\` characters, will be truncated if exceeded.<br>3. Maximum of \`50\` labels. See \`Label Content Reference\` in [Best Practices](#best-practices).<br><br>Example: "resource": "171.26.23.22", "check": "api latency > 500ms"
85
+ | images | No | [][image](#image) | Array of images, used for image display in frontend or Feishu/DingTalk application notifications.The system merged/overwritten based on alt, for the same alt (including empty strings), only one is retained
86
+
87
+ #### image Structure <span id="image"></span>
88
+
89
+ Field|Required|Type|Description
90
+ :-:|:-:|:-:|:---
91
+ | alt | No | string | Image alternative text, limit 128 characters, truncated if exceeded.
92
+ | src | Yes | string | Image source, value: http/https URL or image_key returned by [Image Upload API](https://developer.flashcat.cloud/api-344943718). Limit 256 characters, discarded if exceeded
93
+ | href | No | string | Hyperlink reference path, limit 256 characters, truncated if exceeded
85
94
 
86
95
  </div>
87
96
 
@@ -387,7 +396,7 @@ In the new version, although you can configure the collaboration space directly
387
396
  #### Step 1: Add Notification Media
388
397
 
389
398
  1. Log in to your n9e console, select Alerting > Media types and click **Add**
390
- 2. Fill in the media name and identifier, select **FlashDuty** type, and enter the integration push URL in the \`URL\` section
399
+ 2. Fill in the media name and identifier, select **Flashduty** type, and enter the integration push URL in the \`URL\` section
391
400
  3. Click **Save** and complete
392
401
 
393
402
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/en/fd/n9e-1.png" />
@@ -396,7 +405,7 @@ In the new version, although you can configure the collaboration space directly
396
405
 
397
406
  1. Log in to your n9e console, select Alerting > Rules and click **Add** or edit the existing alert rules
398
407
  2. Configure the basic information as needed
399
- 3. Select the \`FlashDuty\` notification media added in the previous step
408
+ 3. Select the \`Flashduty\` notification media added in the previous step
400
409
  4. Select the collaboration space (the collaboration space must be created in [Flashduty](https://console.flashcat.cloud/channel) in advance), and select other options as needed
401
410
  5. Click **Save** and complete
402
411
 
@@ -405,7 +414,7 @@ In the new version, although you can configure the collaboration space directly
405
414
  #### Step 3: Select Notification Rules in Alert Rules
406
415
 
407
416
  1. Log in to your n9e console, select Alerting > Alert Rules and click **Add** or edit the existing alert rules
408
- 2. Select the \`FlashDuty\` notification rule added in the previous step, and select other options as needed
417
+ 2. Select the \`Flashduty\` notification rule added in the previous step, and select other options as needed
409
418
  3. Click **Save** and complete
410
419
 
411
420
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/en/fd/n9e-3.png" />
@@ -890,7 +899,7 @@ The media type must be associated with a user to send events. The user must have
890
899
  1. Log in to the Zabbix console, select \`Users > Users\`, select Admin user, select media, select Add to enter the editing window:
891
900
 
892
901
  - Type: Select the Flashduty media type created above
893
- - Send To: Fill in FlashDuty
902
+ - Send To: Fill in Flashduty
894
903
  - Keep other configurations unchanged using default settings
895
904
 
896
905
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/zabbix-3.png" />
@@ -904,7 +913,7 @@ Sending notifications is one of the operations executed by actions in Zabbix. Th
904
913
 
905
914
  1. Click \`Create action\` to enter the action editing page
906
915
 
907
- - Name: Fill in "Send To FlashDuty"
916
+ - Name: Fill in "Send To Flashduty"
908
917
 
909
918
  2. Select \`Operations\`, add notification sending configurations for three scenarios respectively:
910
919
 
@@ -978,7 +987,7 @@ Sending notifications is one of the operations executed by actions in Zabbix. Th
978
987
 
979
988
  1. Click \`Create action\` to enter the action editing page
980
989
 
981
- - Name: Fill in "Send To FlashDuty"
990
+ - Name: Fill in "Send To Flashduty"
982
991
 
983
992
  2. Select \`Operations\`, add notification sending configurations for three scenarios respectively:
984
993
 
@@ -1015,7 +1024,7 @@ Log in to the Zabbix console, select \`Monitoring > Problems\` to view the lates
1015
1024
 
1016
1025
  - \`{ALERT.SUBJECT}\`: Alert title, keep as first parameter
1017
1026
  - \`{ALERT.MESSAGE}\`: Alert message, keep as second parameter
1018
- - \`FlashDuty webhook push URL\`, simply copy the integration push URL, keep as third parameter
1027
+ - \`Flashduty webhook push URL\`, simply copy the integration push URL, keep as third parameter
1019
1028
  - \`Zabbix console address\`, copy directly (if your page is configured with tomcat/nginx forwarding path, please include it), used to generate alert detail page links. Leave empty if none, keep as fourth parameter
1020
1029
  - \`HTTPProxy\`: If your Zabbix Server cannot directly access Flashduty services, you can set this parameter to a proxy address. Leave empty if none, keep as fifth parameter
1021
1030
 
@@ -1059,7 +1068,7 @@ Sending notifications is one of the operations executed by actions in Zabbix. Th
1059
1068
 
1060
1069
  1. Click \`Create action\` to enter the action editing page
1061
1070
 
1062
- - Name: Fill in "Send To FlashDuty"
1071
+ - Name: Fill in "Send To Flashduty"
1063
1072
 
1064
1073
  2. Select \`Operations\`, update notification user configurations for three scenarios respectively:
1065
1074
 
@@ -1074,10 +1083,10 @@ Sending notifications is one of the operations executed by actions in Zabbix. Th
1074
1083
 
1075
1084
  3. Select \`Operations\`, update notification content configurations for three scenarios respectively:
1076
1085
 
1077
- - **In the Default Message configuration item, completely copy the following content and paste it after the default content**. FlashDuty will parse corresponding text after receiving events to find alert attribute information:
1086
+ - **In the Default Message configuration item, completely copy the following content and paste it after the default content**. Flashduty will parse corresponding text after receiving events to find alert attribute information:
1078
1087
 
1079
1088
  \`\`\`
1080
- -----FlashDuty Required Starts-----event_severity={TRIGGER.SEVERITY}||event_name={TRIGGER.NAME}||event_id={EVENT.ID}||event_tags={EVENT.TAGS}||event_ack={EVENT.ACK.STATUS}||event_value={EVENT.VALUE}||trigger_id={TRIGGER.ID}||trigger_desc={TRIGGER.DESCRIPTION}||trigger_expr={TRIGGER.EXPRESSION}||host_group={TRIGGER.HOSTGROUP.NAME}||host_ip={HOST.IP}||host_name={HOST.NAME}||item_name={ITEM.NAME}||item_value={ITEM.VALUE}-----FlashDuty Required Ends-----
1089
+ -----Flashduty Required Starts-----event_severity={TRIGGER.SEVERITY}||event_name={TRIGGER.NAME}||event_id={EVENT.ID}||event_tags={EVENT.TAGS}||event_ack={EVENT.ACK.STATUS}||event_value={EVENT.VALUE}||trigger_id={TRIGGER.ID}||trigger_desc={TRIGGER.DESCRIPTION}||trigger_expr={TRIGGER.EXPRESSION}||host_group={TRIGGER.HOSTGROUP.NAME}||host_ip={HOST.IP}||host_name={HOST.NAME}||item_name={ITEM.NAME}||item_value={ITEM.VALUE}-----Flashduty Required Ends-----
1081
1090
  \`\`\`
1082
1091
 
1083
1092
  - Repeat the above steps to complete the configuration of \`Recovery operations\` and \`Update operations\`
@@ -1163,7 +1172,7 @@ Choose this option when you need to route alerts to different channels based on
1163
1172
  **Step 1: Set up Notification Channel**
1164
1173
 
1165
1174
  1. Go to \`Settings -> Notifications\` page, click Setup to edit, as shown below;
1166
- 2. Select \`FlashDuty (Flashduty)\` as the \`Notification Type\`;
1175
+ 2. Select \`Flashduty (Flashduty)\` as the \`Notification Type\`;
1167
1176
  3. Copy and paste the integration_key parameter value from the integration push URL into \`Integration Key\`;
1168
1177
  4. Select \`Severity\` as needed;
1169
1178
  5. Submit and save
@@ -1176,7 +1185,7 @@ Choose this option when you need to route alerts to different channels based on
1176
1185
 
1177
1186
  1. Click \`Add New Monitor\` or edit existing monitors, configure monitoring settings as needed;
1178
1187
  2. As shown, enable the notification method created in the previous step in the \`Notifications\` section;
1179
- 3. If needed, add \`Tags\`. Note that only tags with both Key/Value will be pushed to FlashDuty;
1188
+ 3. If needed, add \`Tags\`. Note that only tags with both Key/Value will be pushed to Flashduty;
1180
1189
  4. Submit and save, then wait for alerts to trigger.
1181
1190
 
1182
1191
  <img src="https://download.flashcat.cloud/flashduty/doc/en/upk/upk-2.png" alt="drawing" width="500"/>
@@ -1369,7 +1378,7 @@ Alibaba Cloud Monitor event alert to Flashduty severity level mapping:
1369
1378
  | WARNING | Warning | Warning |
1370
1379
  | INFO | Info | Info |
1371
1380
 
1372
- </div>`,h=`---
1381
+ </div>`,u=`---
1373
1382
  title: "Alibaba Cloud Monitor CM Metrics Integration"
1374
1383
  description: "Sync Alibaba Cloud Monitor alert events to Flashduty via webhook for automated alert noise reduction"
1375
1384
  date: "2025-05-19T10:00:00+08:00"
@@ -1575,7 +1584,7 @@ Choose this option when you need to route alerts to different channels based on
1575
1584
  <img src="https://download.flashcat.cloud/flashduty/doc/en/aliyun/sls-5.png" alt="drawing" width="500"/>
1576
1585
 
1577
1586
  4. Click the \`Confirm\` button to save
1578
- 5. Repeat these steps for all other rules to push all alerts to FlashDuty
1587
+ 5. Repeat these steps for all other rules to push all alerts to Flashduty
1579
1588
 
1580
1589
  </div>
1581
1590
 
@@ -1594,7 +1603,7 @@ Alibaba Cloud SLS monitoring to Flashduty alert severity mapping:
1594
1603
  | 2 | Info | Info |
1595
1604
 
1596
1605
  </div>
1597
- `,u={CustomAlert:t,Email:a,N9e:o,Prometheus:i,Grafana:s,Zabbix:r,UptimeKuma:l,AliyunARMS:d,AliyunCmEvent:c,AliyunCm:h,AliyunSLS:e,AWSCW:e,AzureMonitor:`---
1606
+ `,h={CustomAlert:t,Email:a,N9e:o,Prometheus:i,Grafana:s,Zabbix:r,UptimeKuma:l,AliyunARMS:d,AliyunCmEvent:c,AliyunCm:u,AliyunSLS:e,AWSCW:e,AzureMonitor:`---
1598
1607
  title: "AWS CloudWatch Integration"
1599
1608
  description: "Sync AWS CloudWatch alert events to Flashduty via webhook to achieve automated alert noise reduction"
1600
1609
  date: "2025-05-19T10:00:00+08:00"
@@ -1646,10 +1655,10 @@ Choose this method when you need to route alerts to different channels based on
1646
1655
 
1647
1656
  1. Log in to your AWS Console, search for \`Simple Notification Service\` product and enter its console
1648
1657
  2. Go to the \`Topics\` page, click the \`Create topic\` button to start creating a topic
1649
- 3. Select \`Standard\` for \`Type\`, enter \`FlashDuty\` as the name
1658
+ 3. Select \`Standard\` for \`Type\`, enter \`Flashduty\` as the name
1650
1659
  4. Click the \`Create Topic\` button to complete topic creation
1651
1660
  5. Go to the \`Subscriptions\` page, click the \`Create subscription\` button to create a subscription for the topic
1652
- 6. Select \`FlashDuty\` for \`Topic ARN\`, choose \`HTTPS\` for \`Protocol\`, enter the integration push URL for \`Endpoint\` (enter the integration name on the current page, the URL will be generated after saving)
1661
+ 6. Select \`Flashduty\` for \`Topic ARN\`, choose \`HTTPS\` for \`Protocol\`, enter the integration push URL for \`Endpoint\` (enter the integration name on the current page, the URL will be generated after saving)
1653
1662
  7. Click the \`Create subscription\` button to complete subscription creation
1654
1663
 
1655
1664
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/aws-cloudwatch-subscribe.png" />
@@ -1657,7 +1666,7 @@ Choose this method when you need to route alerts to different channels based on
1657
1666
  8. Return to the \`Subscriptions\` page. When the subscription status shows \`Confirmed\`, the subscription URL verification is successful; otherwise, please contact Flashduty
1658
1667
  9. Search for the \`CloudWatch\` product and enter its console
1659
1668
  10. Go to the \`All alarms\` page, choose to create or edit existing alarm policies
1660
- 11. For the \`Notification\` step, select \`FlashDuty\` as the \`SNS topic\` for all three states: \`In alarm\`, \`OK\`, and \`Insufficient data\`, as shown below:
1669
+ 11. For the \`Notification\` step, select \`Flashduty\` as the \`SNS topic\` for all three states: \`In alarm\`, \`OK\`, and \`Insufficient data\`, as shown below:
1661
1670
 
1662
1671
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/aws-cloudwatch-alram.png" />
1663
1672
 
@@ -1806,7 +1815,7 @@ Choose this method when you need to route alerts to different channels based on
1806
1815
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/hw-1.png" alt="drawing" width="500"/>
1807
1816
 
1808
1817
  5. Go to \`Alarm-Alarm Notifications-Notification Groups\` page, click \`Create Notification Group\` button
1809
- 6. Enter \`FlashDuty\` as group name, check the \`flashduty\` notification object created earlier
1818
+ 6. Enter \`Flashduty\` as group name, check the \`flashduty\` notification object created earlier
1810
1819
  7. Click \`OK\` button to complete notification group creation
1811
1820
 
1812
1821
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/hw-2.png" alt="drawing" width="500"/>
@@ -1814,7 +1823,7 @@ Choose this method when you need to route alerts to different channels based on
1814
1823
  Note: When creating a notification group, Huawei Cloud will send a request to Flashduty to verify the push URL. Check the notification group's object list - alerts will only be pushed normally when the notification object status is \`Confirmed\`
1815
1824
 
1816
1825
  8. Go to \`Alarm-Alarm Rules\` page, edit existing alarm rules or create new ones to open the \`Alarm Rule Details\` page
1817
- 9. Select \`FlashDuty\` as the notification group, check both \`Alarm Triggered\` and \`Cleared\` conditions. Click \`OK\` button to save changes
1826
+ 9. Select \`Flashduty\` as the notification group, check both \`Alarm Triggered\` and \`Cleared\` conditions. Click \`OK\` button to save changes
1818
1827
 
1819
1828
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/hw-3.png" alt="drawing" width="500"/>
1820
1829
 
@@ -1891,7 +1900,7 @@ Supports Influxdata versions 1.x ~ 2.x, with different configurations for each v
1891
1900
  #### Step 1: Create Alert Channel
1892
1901
  1. Log in to your \`Influxdata\` console and navigate to the \`Alerts > Notification Endpoints\` page.
1893
1902
  2. Click \`Create\` to create an alert notification channel.
1894
- 3. Select \`HTTP\` for \`Destination\` and enter \`FlashDuty\` for \`Name\`.
1903
+ 3. Select \`HTTP\` for \`Destination\` and enter \`Flashduty\` for \`Name\`.
1895
1904
  4. Choose \`POST\` for \`HTTP Method\` and enter the integration push URL.
1896
1905
 
1897
1906
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/influxdb-1.png" />
@@ -1900,7 +1909,7 @@ Supports Influxdata versions 1.x ~ 2.x, with different configurations for each v
1900
1909
  1. Log in to your \`Influxdata\` console and navigate to the \`Alerts > Notification Rules\` page.
1901
1910
  2. Click \`Create\` to create an alert notification rule.
1902
1911
  3. Configure \`About\` and \`Conditions\` as needed.
1903
- 4. Select \`FlashDuty\` created in Step 1 for \`Message\`.
1912
+ 4. Select \`Flashduty\` created in Step 1 for \`Message\`.
1904
1913
 
1905
1914
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/influxdb-2.png" />
1906
1915
 
@@ -2164,7 +2173,7 @@ filter:
2164
2173
  query_string:
2165
2174
  query: "created_at:*"
2166
2175
 
2167
- # ------- FlashDuty ----------------
2176
+ # ------- Flashduty ----------------
2168
2177
  alert: pagerduty
2169
2178
  pagerduty_service_key: xxx
2170
2179
  pagerduty_client_name: wahaha
@@ -2174,7 +2183,7 @@ pagerduty_v2_payload_component: mysql
2174
2183
  pagerduty_v2_payload_group: app-stack
2175
2184
  pagerduty_v2_payload_severity: error
2176
2185
  pagerduty_v2_payload_source: mysql.host.name
2177
- # ------- FlashDuty ----------------
2186
+ # ------- Flashduty ----------------
2178
2187
  \`\`\`
2179
2188
 
2180
2189
  4. Step 4: Restart ElastAlert and wait for alerts to trigger
@@ -2238,7 +2247,7 @@ BlueKing alert policies can trigger \`Action Plans\`, which can integrate with e
2238
2247
 
2239
2248
  1. Log in to your BlueKing desktop and enter the \`Monitor Platform\`;
2240
2249
  2. Go to \`Configuration-Action Plans\` page, click the \`Add Plan\` button to start creating an action plan;
2241
- 3. Enter the name as \`Send To FlashDuty\`, select \`HTTP Callback\` as the plan type, choose \`POST\` as the push method, and fill in the integration push URL (obtained after saving the integration), as shown below:
2250
+ 3. Enter the name as \`Send To Flashduty\`, select \`HTTP Callback\` as the plan type, choose \`POST\` as the push method, and fill in the integration push URL (obtained after saving the integration), as shown below:
2242
2251
 
2243
2252
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/integration/tencent-bk/create_package.jpg" />
2244
2253
 
@@ -2256,12 +2265,12 @@ BlueKing alert policies can trigger \`Action Plans\`, which can integrate with e
2256
2265
  <div class="md-block">
2257
2266
 
2258
2267
  1. Go to \`Configuration-Alert Policies\` page, select an existing policy to edit or create a new one;
2259
- 2. Scroll down to the \`Alert Processing\` section, select the \`Send To FlashDuty\` action plan for all three scenarios, and disable \`Defense Rules\`, as shown below:
2268
+ 2. Scroll down to the \`Alert Processing\` section, select the \`Send To Flashduty\` action plan for all three scenarios, and disable \`Defense Rules\`, as shown below:
2260
2269
 
2261
2270
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/integration/tencent-bk/update_alert_rule.jpg" />
2262
2271
 
2263
2272
  3. Submit and save to complete;
2264
- 4. Repeat these steps for other alerts you want to push to FlashDuty.
2273
+ 4. Repeat these steps for other alerts you want to push to Flashduty.
2265
2274
 
2266
2275
  </div>
2267
2276
 
@@ -2398,7 +2407,7 @@ Choose this option when you need to route alerts to different channels based on
2398
2407
  "record_group_id": "{{escape .RecordGroupId}}",
2399
2408
  "detail_url": "{{escape .DetailUrl}}",
2400
2409
  "query_url": "{{escape .QueryUrl}}",
2401
- "message": {{.Message}},
2410
+ "message": "{{.Message}}",
2402
2411
  "query_result": {{.QueryResult}},
2403
2412
  "query_log": {{.QueryLog}},
2404
2413
  "analysis_result": {{.AnalysisResult}}
@@ -2545,7 +2554,7 @@ Choose this method when you need to route alerts to different channels based on
2545
2554
 
2546
2555
  1. Log in to your Tencent Cloud Console and select EventBridge service
2547
2556
  2. Go to the Event Rules page, click the New button to start editing rules
2548
- 3. Enter the name as FlashDuty, as shown below:
2557
+ 3. Enter the name as Flashduty, as shown below:
2549
2558
 
2550
2559
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/tencent-eb-new-rule.png" />
2551
2560
 
@@ -2646,12 +2655,12 @@ Choose this method when you need to route alerts to different channels based on
2646
2655
 
2647
2656
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/oceanbase-1.png" />
2648
2657
 
2649
- 5. Copy the following script content into the channel configuration, and **please add the integration_key value from your FlashDuty push URL to the integration_key parameter in the script**
2658
+ 5. Copy the following script content into the channel configuration, and **please add the integration_key value from your Flashduty push URL to the integration_key parameter in the script**
2650
2659
 
2651
2660
  \`\`\`
2652
2661
  #!/usr/bin/env bash
2653
2662
 
2654
- function sendToFlashDuty() {
2663
+ function sendToFlashduty() {
2655
2664
  URL="\${address}/event/push/alert/standard?integration_key=\${integration_key}"
2656
2665
  curl -s -X POST \${URL} -H 'Content-Type: application/json' -d '{
2657
2666
  "event_status": "'\${alert_level}'",
@@ -2715,7 +2724,7 @@ elif [[ \${statusMd5} == "\${active}" ]];then
2715
2724
  fi
2716
2725
 
2717
2726
  if [[ \${statusMd5} == \${active} || \${statusMd5} == \${Inactive} ]];then
2718
- sendToFlashDuty
2727
+ sendToFlashduty
2719
2728
  fi
2720
2729
  \`\`\`
2721
2730
 
@@ -2753,7 +2762,7 @@ OCP Alert Notification - Single Alert
2753
2762
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/oceanbase-2.png" />
2754
2763
 
2755
2764
  3. Select **English** for push language
2756
- 4. Select **FlashDuty** for alert channel
2765
+ 4. Select **Flashduty** for alert channel
2757
2766
  5. Enable **Recovery Notification**
2758
2767
  6. Submit
2759
2768
 
@@ -2834,7 +2843,7 @@ Choose this option when you need to route alerts to different channels based on
2834
2843
 
2835
2844
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/graylog-2.png" />
2836
2845
 
2837
- 6. Enter the FlashDuty URL you obtained (URL whitelist required for first-time use)
2846
+ 6. Enter the Flashduty URL you obtained (URL whitelist required for first-time use)
2838
2847
 
2839
2848
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/graylog-3.png" />
2840
2849
 
@@ -2846,11 +2855,11 @@ Choose this option when you need to route alerts to different channels based on
2846
2855
 
2847
2856
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/graylog-5.png" />
2848
2857
 
2849
- ### Step 2: Use FlashDuty Alert Channel in Alert Events
2858
+ ### Step 2: Use Flashduty Alert Channel in Alert Events
2850
2859
  1. Create or edit existing Event Definition
2851
2860
  2. Skip other alert configurations here (configure alert conditions according to business requirements)
2852
2861
  3. Configure channel in Notifications
2853
- 4. Add Notification and select FlashDuty channel
2862
+ 4. Add Notification and select Flashduty channel
2854
2863
  5. Click Done
2855
2864
  6. Complete the next step to finish
2856
2865
 
@@ -2936,7 +2945,7 @@ rules:
2936
2945
  tags:
2937
2946
  level: Warning
2938
2947
  \`\`\`
2939
- 4. Add the FlashDuty webhook URL
2948
+ 4. Add the Flashduty webhook URL
2940
2949
 
2941
2950
  \`\`\`
2942
2951
  # Add at the bottom of the configuration file
@@ -3022,12 +3031,12 @@ Sentry provides two types of alert mechanisms: Issue Alerts and Metric Alerts. W
3022
3031
 
3023
3032
  ## II. Sentry Alert Push Configuration
3024
3033
 
3025
- ### Step 1: Add FlashDuty Custom Integrations
3034
+ ### Step 1: Add Flashduty Custom Integrations
3026
3035
 
3027
3036
  1. Log in to the Sentry management console
3028
3037
  2. In the left navigation bar, locate **Settings => Custom Integrations**
3029
3038
  3. Click Create New Integration and select **Internal Integration**
3030
- 4. On the editing page, **enter FlashDuty for Name and paste the integration push URL into WebhookURL**
3039
+ 4. On the editing page, **enter Flashduty for Name and paste the integration push URL into WebhookURL**
3031
3040
  5. Enable **Alert Rule Action**, configure as shown below:
3032
3041
 
3033
3042
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/sentry-1.png" />
@@ -3039,11 +3048,11 @@ Sentry provides two types of alert mechanisms: Issue Alerts and Metric Alerts. W
3039
3048
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/sentry-2.png" />
3040
3049
 
3041
3050
  **Special notes about WEBHOOKS configuration:**
3042
- 1. After checking **issue**, FlashDuty can receive resolved events for issues, meaning when manually triggering resolved for an issue in the issue list, we will automatically recover the associated incident in FlashDuty
3051
+ 1. After checking **issue**, Flashduty can receive resolved events for issues, meaning when manually triggering resolved for an issue in the issue list, we will automatically recover the associated incident in Flashduty
3043
3052
  2. Other issue events such as create, assigned, archived, and unresolved are not supported
3044
- 3. If error and comment are also checked, FlashDuty will not receive or process these types of events
3053
+ 3. If error and comment are also checked, Flashduty will not receive or process these types of events
3045
3054
 
3046
- ### Step 2: Use FlashDuty Integration in Alerts
3055
+ ### Step 2: Use Flashduty Integration in Alerts
3047
3056
  1. In the left navigation bar, locate **Alerts => Create Alert**
3048
3057
  2. Select the type of Alert to create, such as Issue
3049
3058
 
@@ -3055,7 +3064,7 @@ Sentry provides two types of alert mechanisms: Issue Alerts and Metric Alerts. W
3055
3064
 
3056
3065
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/sentry-4.png" />
3057
3066
 
3058
- 5. Select **FlashDuty** added above as the notification channel
3067
+ 5. Select **Flashduty** added above as the notification channel
3059
3068
 
3060
3069
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/sentry-5.png" />
3061
3070
 
@@ -3136,7 +3145,7 @@ Choose this option when you need to route alerts to different channels based on
3136
3145
 
3137
3146
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/jkb-2.png" />
3138
3147
 
3139
- 4. Enter FlashDuty as the custom name, and input the copied integration push URL
3148
+ 4. Enter Flashduty as the custom name, and input the copied integration push URL
3140
3149
  5. Select **POST** as the callback method and **JSON** as the data format
3141
3150
  6. Check **Enable URL Callback**, configure other options as needed, refer to the image below
3142
3151
 
@@ -3144,10 +3153,10 @@ Choose this option when you need to route alerts to different channels based on
3144
3153
 
3145
3154
  7. Click Save
3146
3155
 
3147
- ### Step 2: Use FlashDuty Alert Channel in Monitoring Tasks
3156
+ ### Step 2: Use Flashduty Alert Channel in Monitoring Tasks
3148
3157
  1. Create or edit an existing monitoring task
3149
3158
  2. Other alert configurations are omitted here
3150
- 3. Under Webhook notification, select the FlashDuty channel
3159
+ 3. Under Webhook notification, select the Flashduty channel
3151
3160
 
3152
3161
  <img alt="drawing" width="600" src="https://fcpub-1301667576.cos.ap-nanjing.myqcloud.com/flashduty/doc/jkb-4.png" />
3153
3162
 
@@ -3225,10 +3234,10 @@ Choose this option when you need to route alerts to different channels based on
3225
3234
 
3226
3235
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/aws-eb-3.png" />
3227
3236
 
3228
- 4. In the \`Connection details\` section, enter \`FlashDuty\` for \`Connection name\`
3237
+ 4. In the \`Connection details\` section, enter \`Flashduty\` for \`Connection name\`
3229
3238
  5. In the \`Authorization\` section, select \`Other\` for \`Destination type\`
3230
3239
  6. Select \`API Key\` for \`Authorization type\`
3231
- 7. Enter \`FlashDuty\` for \`API key name\`, and enter the \`integration_key\` from the integration push URL for \`Value\`
3240
+ 7. Enter \`Flashduty\` for \`API key name\`, and enter the \`integration_key\` from the integration push URL for \`Value\`
3232
3241
  8. Click \`Create\` to save
3233
3242
 
3234
3243
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/aws-eb-4.png" />
@@ -3239,10 +3248,10 @@ Choose this option when you need to route alerts to different channels based on
3239
3248
 
3240
3249
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/aws-eb-5.png" />
3241
3250
 
3242
- 2. Fill in the information in the \`API destination detail\` editing interface, enter \`FlashDuty\` for \`Name\`
3251
+ 2. Fill in the information in the \`API destination detail\` editing interface, enter \`Flashduty\` for \`Name\`
3243
3252
  3. Enter the integration push URL for \`API destination endpoint\`
3244
3253
  4. Select \`POST\` for \`HTTP method\`
3245
- 5. Select \`Use an existing connection\` for \`Connection type\` and choose the \`FlashDuty\` Connection added in Step 1
3254
+ 5. Select \`Use an existing connection\` for \`Connection type\` and choose the \`Flashduty\` Connection added in Step 1
3246
3255
  6. Click \`Create\` to save
3247
3256
 
3248
3257
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/aws-eb-6.png" />
@@ -3252,7 +3261,7 @@ Choose this option when you need to route alerts to different channels based on
3252
3261
  2. Select \`Buses=>Rules\` from the left navigation bar, create or edit existing rules
3253
3262
  3. Other configurations are omitted here
3254
3263
  4. For \`Target types\`, select \`EventBridge API destination\` as the target type
3255
- 5. Under \`API destination\`, select \`Use an existing API destination\` and choose the \`FlashDuty\` API destination created in Step 2 from the dropdown
3264
+ 5. Under \`API destination\`, select \`Use an existing API destination\` and choose the \`Flashduty\` API destination created in Step 2 from the dropdown
3256
3265
  6. Click \`Next\`, configure as needed, and save
3257
3266
 
3258
3267
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/aws-eb-7.png" />
@@ -3261,8 +3270,8 @@ Choose this option when you need to route alerts to different channels based on
3261
3270
 
3262
3271
  <div class="md-block">
3263
3272
 
3264
- 1. Since AWS EventBridge events don't have severity levels, all events pushed to FlashDuty will have a Warning severity
3265
- 2. AWS EventBridge events only have triggers without recovery states, so events received by FlashDuty won't automatically associate with recovery
3273
+ 1. Since AWS EventBridge events don't have severity levels, all events pushed to Flashduty will have a Warning severity
3274
+ 2. AWS EventBridge events only have triggers without recovery states, so events received by Flashduty won't automatically associate with recovery
3266
3275
 
3267
3276
  </div>
3268
3277
 
@@ -3335,7 +3344,7 @@ Choose this option when you need to route alerts to different channels based on
3335
3344
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/dyn-3.png" />
3336
3345
 
3337
3346
  5. Under \`Notification type\`, select \`Custom Integration\`
3338
- 6. Fill in \`Display name\` with \`FlashDuty\`
3347
+ 6. Fill in \`Display name\` with \`Flashduty\`
3339
3348
  7. In \`Webhook URL\`, enter the integration push URL (generated after saving the integration name on the current page)
3340
3349
  8. Keep \`Call webhook if problem is closed\` enabled
3341
3350
 
@@ -3426,14 +3435,14 @@ Choose this option when you need to route alerts to different channels based on
3426
3435
 
3427
3436
  ## I. Huawei Cloud LTS Alert Push Configuration
3428
3437
 
3429
- ### Step 1: Create FlashDuty Alert Channel
3438
+ ### Step 1: Create Flashduty Alert Channel
3430
3439
  1. Log in to your Huawei Cloud Console, search for \`SMN\` (Simple Message Notification) service and enter its console
3431
3440
  2. Select \`Topic Management=>Topics\` from the left navigation bar
3432
- 3. Click \`Create Topic\`, enter \`FlashDuty\` as the topic name in the edit page and confirm
3441
+ 3. Click \`Create Topic\`, enter \`Flashduty\` as the topic name in the edit page and confirm
3433
3442
 
3434
3443
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/lts-1.png" alt="drawing" width="500"/>
3435
3444
 
3436
- 4. Return to the topic list and click \`Add Subscription\` in the newly created FlashDuty topic
3445
+ 4. Return to the topic list and click \`Add Subscription\` in the newly created Flashduty topic
3437
3446
 
3438
3447
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/lts-2.png" alt="drawing" width="500"/>
3439
3448
 
@@ -3452,14 +3461,14 @@ Choose this option when you need to route alerts to different channels based on
3452
3461
 
3453
3462
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/lts-5.png" alt="drawing" width="500"/>
3454
3463
 
3455
- 3. In the template edit page, enter **FlashDuty** as the name, select \`English\` as the message header language
3464
+ 3. In the template edit page, enter **Flashduty** as the name, select \`English\` as the message header language
3456
3465
  4. Select \`HTTP/HTTPS\` as notification type and \`JSON\` as data type
3457
3466
  5. Click \`Confirm\` to save
3458
3467
 
3459
3468
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/lts-6.png" alt="drawing" width="500"/>
3460
3469
 
3461
3470
  6. Return to the \`Alert Action Rules\` list and click \`Create\`
3462
- 7. Enter **FlashDuty** as the rule name, select the previously created **FlashDuty** topic and template
3471
+ 7. Enter **Flashduty** as the rule name, select the previously created **Flashduty** topic and template
3463
3472
 
3464
3473
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/lts-7.png" alt="drawing" width="500"/>
3465
3474
 
@@ -3469,7 +3478,7 @@ Choose this option when you need to route alerts to different channels based on
3469
3478
  2. Create or edit existing alert rules
3470
3479
  3. Other configurations are omitted here
3471
3480
  4. In \`Advanced Settings\`, check both \`Alert Trigger\` and \`Alert Recovery\` in notification scenarios
3472
- 5. Enable action rules and select the **FlashDuty** rule created in \`Step 2\`
3481
+ 5. Enable action rules and select the **Flashduty** rule created in \`Step 2\`
3473
3482
  6. Select \`English\` as language, click \`Confirm\` to save after configuration is complete
3474
3483
 
3475
3484
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/lts-8.png" alt="drawing" width="500"/>
@@ -3547,18 +3556,18 @@ Choose this option when you need to route alerts to different channels based on
3547
3556
 
3548
3557
  3. Find \`Webhooks\` on the Notification channels page and click \`ADD NEW\`
3549
3558
  4. Enter the integration push URL in the \`Endpoint URL\` field (the URL will be generated after saving the integration name on the current page)
3550
- 5. Enter **FlashDuty** in the \`Display Name\` field
3559
+ 5. Enter **Flashduty** in the \`Display Name\` field
3551
3560
  6. Click \`TEST CONNECTION\` and then \`SAVE\` to complete
3552
3561
 
3553
3562
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/google-cm-2.png" />
3554
3563
 
3555
- ### Step 2: Use FlashDuty Alert Channel in Alert Policy
3564
+ ### Step 2: Use Flashduty Alert Channel in Alert Policy
3556
3565
 
3557
3566
  1. Return to the \`Alerting\` page
3558
3567
  2. Create or edit an existing policy
3559
3568
  3. Skip other policy configurations (configure alert conditions according to business requirements)
3560
3569
  4. On the \`Notifications and name\` page, keep \`Use notification channel\` enabled
3561
- 5. Select the **FlashDuty** channel created in **Step 1** from the \`Notification channels\` dropdown, and check \`Notify on incident closure\`
3570
+ 5. Select the **Flashduty** channel created in **Step 1** from the \`Notification channels\` dropdown, and check \`Notify on incident closure\`
3562
3571
  6. Complete other configurations and save the policy
3563
3572
 
3564
3573
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/google-cm-3.png" />
@@ -3778,14 +3787,14 @@ Choose this method when you need to route alerts to different channels based on
3778
3787
 
3779
3788
  ## I. AppDynamics Alert Push Configuration
3780
3789
 
3781
- ### Step 1: Configure FlashDuty Alert Channel
3790
+ ### Step 1: Configure Flashduty Alert Channel
3782
3791
 
3783
3792
  1. Log in to your AppDynamics console
3784
3793
  2. Find \`Alert Respond\`, select \`HTTP Request Templates\`, and click \`New\` to create an alert channel
3785
3794
 
3786
3795
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/appdyn-1.png" />
3787
3796
 
3788
- 3. In the template configuration, enter **FlashDuty** as the \`Name\`
3797
+ 3. In the template configuration, enter **Flashduty** as the \`Name\`
3789
3798
  4. In the \`Request URL\` section, select **POST** as the \`Method\`, and enter the integration push URL in \`Raw URL\` (enter the integration name on this page, and the URL will be generated after saving)
3790
3799
 
3791
3800
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/appdyn-2.png" />
@@ -3858,7 +3867,7 @@ If you need to configure \`Custom Templating Variables\`, you can refer to the f
3858
3867
 
3859
3868
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/appdyn-6.png" />
3860
3869
 
3861
- 3. In the \`Create HTTP Action\` popup, enter a Name, select **FlashDuty** created in \`Step 1\` as the \`HTTP Request Template\`, and click \`SAVE\`
3870
+ 3. In the \`Create HTTP Action\` popup, enter a Name, select **Flashduty** created in \`Step 1\` as the \`HTTP Request Template\`, and click \`SAVE\`
3862
3871
 
3863
3872
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/appdyn-7.png" />
3864
3873
 
@@ -3938,11 +3947,11 @@ Choose this option when you need to route alerts to different channels based on
3938
3947
 
3939
3948
  ## I. SolarWinds Alert Push Configuration
3940
3949
 
3941
- ### Step 1: Configure FlashDuty Alert Channel
3950
+ ### Step 1: Configure Flashduty Alert Channel
3942
3951
 
3943
3952
  **Prerequisites**
3944
3953
  1. SolarWinds has five types of alerts (Anomaly, Entity, Event, Log, Metric Group), each requiring a different alert channel, so five alert channels need to be created
3945
- 2. When creating Webhook channels, it's recommended to name them using the format: Type_FlashDuty, for example: Anomaly_FlashDuty
3954
+ 2. When creating Webhook channels, it's recommended to name them using the format: Type_Flashduty, for example: Anomaly_Flashduty
3946
3955
  3. When selecting **Select Custom Body Template Based On The Alert Types**, the system will generate a default **HTTP POST Body**. **Please do not modify the generated template content**
3947
3956
 
3948
3957
  **Getting Started**
@@ -3952,7 +3961,7 @@ Choose this option when you need to route alerts to different channels based on
3952
3961
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/sw-1.png" />
3953
3962
 
3954
3963
  3. Click \`CREATE CONFIGURATION\` to create the corresponding alert channel
3955
- 4. Select **POST** for \`Method\`, name it according to the prerequisites, e.g., Anomaly_FlashDuty
3964
+ 4. Select **POST** for \`Method\`, name it according to the prerequisites, e.g., Anomaly_Flashduty
3956
3965
  5. Fill in the integration push URL in \`Destination URL\` (enter the integration name on the current page, save to generate the URL)
3957
3966
  6. Select **application/json** for \`Content Type\`
3958
3967
  7. Choose the type you need to create in \`Select Custom Body Template Based On The Alert Types\`, e.g., Anomaly Based Alert
@@ -3968,7 +3977,7 @@ Choose this option when you need to route alerts to different channels based on
3968
3977
  1. Find \`Alerts\` in the left navigation bar, select \`Alert Settings\`
3969
3978
  2. Create or edit existing policies (configure alert rules as needed, alert rule configuration is omitted here)
3970
3979
  3. In the \`Actions\` section of the policy configuration page, select **Webhook** for \`Services\`
3971
- 4. Select the Anomaly_FlashDuty channel created in Step 1 for \`Configuration\`
3980
+ 4. Select the Anomaly_Flashduty channel created in Step 1 for \`Configuration\`
3972
3981
  5. Keep \`Send an additional notification when the Alert is cleared\` enabled
3973
3982
 
3974
3983
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/sw-4.png" />
@@ -4041,14 +4050,14 @@ Choose this method when you need to route alerts to different channels based on
4041
4050
 
4042
4051
  ## I. Volcengine Cloud Monitor Alert Push Configuration
4043
4052
 
4044
- ### Step 1: Create FlashDuty Alert Channel
4053
+ ### Step 1: Create Flashduty Alert Channel
4045
4054
  1. Log in to your Volcengine console, search for \`Cloud Monitor\` product, and enter the corresponding product console
4046
4055
  2. Select \`Notification Groups=>Callback\` from the left navigation bar
4047
4056
  3. Click \`Create Callback URL\`
4048
4057
 
4049
4058
  <img src="https://download.flashcat.cloud/flashduty/doc/en/volcengine/event-1.png" alt="drawing" width="500"/>
4050
4059
 
4051
- 4. Fill in the information on the edit page, enter \`FlashDuty_Metric\` as the callback URL name
4060
+ 4. Fill in the information on the edit page, enter \`Flashduty_Metric\` as the callback URL name
4052
4061
  5. Select \`General Callback URL\` as the callback URL type
4053
4062
  6. Enter the **integration push URL** (enter the integration name on the current page, save to generate the URL)
4054
4063
  7. Click \`Confirm\` to complete the creation (connectivity testing is not supported; even if the test shows connectivity failure, it won't affect alert reception)
@@ -4061,7 +4070,7 @@ Choose this method when you need to route alerts to different channels based on
4061
4070
  2. Create or edit existing alert policies (configure policies as needed, skipped here)
4062
4071
  3. On the policy edit page, select \`Rules and Resources\` for \`Send Aggregation Policy\`
4063
4072
  4. Keep \`Alert Recovery Notification\` enabled
4064
- 5. Check \`Alert Callback\` in \`Alert Channels\`, and select the \`FlashDuty_Metric\` channel created in **Step 1** from the dropdown menu
4073
+ 5. Check \`Alert Callback\` in \`Alert Channels\`, and select the \`Flashduty_Metric\` channel created in **Step 1** from the dropdown menu
4065
4074
  6. After completing other configurations, click \`Confirm\` to finish
4066
4075
 
4067
4076
  <img src="https://download.flashcat.cloud/flashduty/doc/en/volcengine/event-3.png" alt="drawing" width="500"/>
@@ -4130,14 +4139,14 @@ Choose this method when you need to route alerts to different channels based on
4130
4139
 
4131
4140
  ## I. Volcengine Cloud Monitor Event Center Alert Push Configuration
4132
4141
 
4133
- ### Step 1: Create FlashDuty Alert Channel
4142
+ ### Step 1: Create Flashduty Alert Channel
4134
4143
  1. Log in to your Volcengine console, search for \`Cloud Monitor\` product, and enter the corresponding product console
4135
4144
  2. Select \`Notification Groups=>Callback\` from the left navigation bar
4136
4145
  3. Click \`Create Callback URL\`
4137
4146
 
4138
4147
  <img src="https://download.flashcat.cloud/flashduty/doc/en/volcengine/event-1.png" alt="drawing" width="500"/>
4139
4148
 
4140
- 4. Fill in the information on the edit page, enter \`FlashDuty_Event\` as the callback URL name
4149
+ 4. Fill in the information on the edit page, enter \`Flashduty_Event\` as the callback URL name
4141
4150
  5. Select \`General Callback URL\` as the callback URL type
4142
4151
  6. Enter the **integration push URL** (enter the integration name on the current page, save to generate the URL)
4143
4152
  7. Click \`Confirm\` to complete the creation (connectivity testing is not supported; even if the test shows connectivity failure, it won't affect alert reception)
@@ -4148,7 +4157,7 @@ Choose this method when you need to route alerts to different channels based on
4148
4157
 
4149
4158
  1. Select \`Event Center=>Event Rules\` from the left navigation bar
4150
4159
  2. Create or edit existing event rules (configure rules as needed, skipped here)
4151
- 3. On the rule editing page, check \`Alert Callback\` under delivery channels, and select the \`FlashDuty_Event\` channel created in **Step 1** from the alert callback dropdown
4160
+ 3. On the rule editing page, check \`Alert Callback\` under delivery channels, and select the \`Flashduty_Event\` channel created in **Step 1** from the alert callback dropdown
4152
4161
  4. After completing other configurations, click \`Confirm\` to finish
4153
4162
 
4154
4163
  <img src="https://download.flashcat.cloud/flashduty/doc/en/volcengine/metric-3.png" alt="drawing" width="500"/>
@@ -4217,14 +4226,14 @@ Choose this method when you need to route alerts to different channels based on
4217
4226
 
4218
4227
  ## I. Volcengine Log Service (TLS) Alert Push Configuration
4219
4228
 
4220
- ### Step 1: Create FlashDuty Alert Channel
4229
+ ### Step 1: Create Flashduty Alert Channel
4221
4230
  1. Log in to your Volcengine console, search for \`TLS\` Log Service product, and enter the corresponding product console
4222
4231
  2. Select \`Alert=>Notification Management\` from the left navigation bar
4223
4232
  3. Choose \`Webhook Alert Integration\` and click \`Create Webhook Alert Integration\`
4224
4233
 
4225
4234
  <img src="https://download.flashcat.cloud/flashduty/doc/en/volcengine/tls-1.png" alt="drawing" width="500"/>
4226
4235
 
4227
- 4. Fill in the information in the pop-up editor, enter \`FlashDuty\` as the name
4236
+ 4. Fill in the information in the pop-up editor, enter \`Flashduty\` as the name
4228
4237
  5. Select \`Custom Webhook\` as type and \`POST\` as request method
4229
4238
  6. Enter the **Integration Push URL** as the request URL (generated after saving the integration name on the current page)
4230
4239
  7. Keep the request headers as default and click \`Create\`
@@ -4235,7 +4244,7 @@ Choose this method when you need to route alerts to different channels based on
4235
4244
 
4236
4245
  1. Return to the \`Notification Management\` page
4237
4246
  2. Select \`Content Templates\` and click \`Create Content Template\`
4238
- 3. Fill in the relevant information, enter \`FlashDuty\` as the template name
4247
+ 3. Fill in the relevant information, enter \`Flashduty\` as the template name
4239
4248
  4. Other channel content can be empty. In the \`Custom Webhook\` notification content, enter the following template:
4240
4249
 
4241
4250
  \`\`\`
@@ -4268,11 +4277,11 @@ Choose this method when you need to route alerts to different channels based on
4268
4277
 
4269
4278
  1. Return to the \`Notification Management\` page
4270
4279
  2. Select \`Notification Groups\` and click \`Create Notification Group\`
4271
- 3. Fill in the relevant information, enter \`FlashDuty\` as the group name
4280
+ 3. Fill in the relevant information, enter \`Flashduty\` as the group name
4272
4281
  4. Configure notification rules and other settings as needed (skipped here)
4273
4282
  5. In notification channel configuration, keep \`Custom Webhook\` checked
4274
- 6. Select the **FlashDuty** channel created in **Step 1** for \`Webhook\`
4275
- 7. Select the **FlashDuty** template created in **Step 2** for \`Content Template\`
4283
+ 6. Select the **Flashduty** channel created in **Step 1** for \`Webhook\`
4284
+ 7. Select the **Flashduty** template created in **Step 2** for \`Content Template\`
4276
4285
  8. Click \`Save\` after completing other configurations
4277
4286
 
4278
4287
  <img src="https://download.flashcat.cloud/flashduty/doc/en/volcengine/tls-4.png" alt="drawing" width="500"/>
@@ -4283,7 +4292,7 @@ Choose this method when you need to route alerts to different channels based on
4283
4292
  2. Create a new or edit an existing alert policy
4284
4293
  3. Configure alert rules as needed (skipped here)
4285
4294
  4. Click \`Associate Notification Group\` in the \`Notification Group\` section
4286
- 5. In the pop-up selection box, choose the **FlashDuty** notification group created in **Step 3**, then click \`Associate\`
4295
+ 5. In the pop-up selection box, choose the **Flashduty** notification group created in **Step 3**, then click \`Associate\`
4287
4296
  6. Click \`Create/Save\` after configuring other settings
4288
4297
 
4289
4298
  <img src="https://download.flashcat.cloud/flashduty/doc/en/volcengine/tls-5.png" alt="drawing" width="500"/>
@@ -4419,7 +4428,7 @@ Choose this method when you need to route alerts to different channels based on
4419
4428
 
4420
4429
  10. Select the devices you want to apply this configuration to, move them to the selected devices window using the right arrow, then click next
4421
4430
  11. Configure Time Window/Delayed Trigger/Recurring Trigger as needed, then click next
4422
- 12. Add the name \`FlashDuty\` for this configuration profile, then click \`Save\` to complete the setup
4431
+ 12. Add the name \`Flashduty\` for this configuration profile, then click \`Save\` to complete the setup
4423
4432
 
4424
4433
  </dev>
4425
4434
 
@@ -4491,7 +4500,7 @@ Choose this option when you need to route alerts to different channels based on
4491
4500
  1. Log in to your \`Meraki\` console and select the device you want to configure alerts for
4492
4501
  2. On the \`Alerts\` page, configure \`Cellular gateway\` and other sections as needed
4493
4502
  3. Under \`Webhooks\`, configure \`HTTPS receivers\`
4494
- 4. Enter \`FlashDuty\` for \`Name\`, and enter the **integration push URL** for \`URL\`
4503
+ 4. Enter \`Flashduty\` for \`Name\`, and enter the **integration push URL** for \`URL\`
4495
4504
  5. Leave \`Shared secret\` empty, and keep \`Payload template\` as the default \`Meraki(included)\`
4496
4505
  6. Click \`Save\` to save the settings
4497
4506
 
@@ -4659,7 +4668,7 @@ Choose this option when you need to route alerts to different channels based on
4659
4668
 
4660
4669
  1. Log in to your \`Guance\` console, select \`Alert Strategies\` under \`Monitoring\`
4661
4670
  2. Create new or modify existing alert policies on the \`Alert Strategies\` page
4662
- 3. In the notification configuration section of the alert strategies editing page, select \`severity\` and choose \`FlashDuty\` created in Step 1 as the \`Notification Tragets\`
4671
+ 3. In the notification configuration section of the alert strategies editing page, select \`severity\` and choose \`Flashduty\` created in Step 1 as the \`Notification Tragets\`
4663
4672
  4. Configure other options as needed and click \`Save\` to complete
4664
4673
 
4665
4674
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/en/fd/guance-2.png" />
@@ -4865,12 +4874,19 @@ For details, see the Feishu/Lark development documentation [Configure applicatio
4865
4874
 
4866
4875
  ![2025-09-17-19-49-19](https://docs-cdn.flashcat.cloud/images/png/393e7629de652d1793b69af7d4f3831c.png)
4867
4876
 
4868
- 3. Go to Event Callbacks → **Callback Configuration** page, configure the \`Subscription Method\` (using the **Message Card Request URL** from the integration details). Then, subscribe to the following two callback events:
4877
+ 3. Go to Event Callbacks → **Event Configuration** page, configure the \`Request URL\` (using the **Message Card Request URL** from the integration details). Then, add the following two events:
4869
4878
 
4870
- - \`im.message.receive_v1\`
4871
4879
  - \`im.chat.disbanded_v1\`
4880
+ - \`im.message.receive_v1\`
4872
4881
 
4873
- ![2025-09-17-19-53-14](https://docs-cdn.flashcat.cloud/images/png/c42542dc49930c2e20f5921749bf3565.png)
4882
+ ![2025-09-18-11-06-05](https://docs-cdn.flashcat.cloud/images/png/71910d8af8d60b5f30baf009081646df.png)
4883
+
4884
+ 4. Go to Event Callbacks → **Callback Configuration** page, configure the \`Request URL\` (using the **Message Card Request URL** from the integration details). Then, subscribe to the following two callbacks:
4885
+
4886
+ - \`card.action.trigger\`
4887
+ - \`card.action.trigger_v1\`
4888
+
4889
+ ![2025-09-19-18-41-42](https://docs-cdn.flashcat.cloud/images/png/5ebe9faff7f78a6764da92a342eab7c0.png)
4874
4890
 
4875
4891
  ### 2. Add redirect URL to Feishu/Lark application
4876
4892
 
@@ -4886,7 +4902,7 @@ Go to the **Permission Management** page and apply for the following permissions
4886
4902
 
4887
4903
  - \`im:chat\`: Get and update group information
4888
4904
  - \`im:message\`: Get and send single chat and group messages
4889
- - \`contact:user.id:readonly\`: Get user ID by phone number or email (for configuring war rooms)<span id="war-room-scope"></span>
4905
+ - \`contact:user.id:readonly\`: Get user ID by phone number or email <span id="war-room-scope"></span>
4890
4906
 
4891
4907
  ![2025-09-17-19-59-38](https://docs-cdn.flashcat.cloud/images/png/61cb9fbc295e94b4d9acd7e44ac75e13.png)
4892
4908
 
@@ -5238,13 +5254,13 @@ This document supports both [integrating third-party applications](#third-party)
5238
5254
 
5239
5255
  6. On the application details page, obtain the \`Secret\` and fill it in the Flashduty integration configuration page.
5240
5256
 
5241
- 7. On the application details page, go to **Web Authorization and JS-SDK** page, click **Set Trusted Domain**, and configure **Callback domain for application OAuth 2.0 web authorization** as required.
5257
+ 7. On the application details page, go to **Web Authorization and JS-SDK** page, click **Set Trusted Domain**.
5242
5258
 
5243
5259
  > The trusted domain needs to point to Flashduty's backend address \`{api_host}\` (can be achieved through CNAME or proxy forwarding).
5244
5260
  >
5245
5261
  > For trusted domain requirements, see the official WeCom documentation [《Internal Development Domain Configuration Guide》](https://open.work.weixin.qq.com/wwopen/common/readDocument/40754).
5246
5262
 
5247
- ![2025-09-18-13-08-43](https://docs-cdn.flashcat.cloud/images/png/8509e75449c933c3f750c93ce621e641.png)
5263
+ ![2025-10-15-10-30-03](https://docs-cdn.flashcat.cloud/images/png/993ba70e9a13ee0256120b491dda007a.png)
5248
5264
 
5249
5265
  Return to the Flashduty integration configuration page, fill in this domain, and complete the verification.
5250
5266
 
@@ -5258,6 +5274,21 @@ This document supports both [integrating third-party applications](#third-party)
5258
5274
 
5259
5275
  ![2025-09-18-13-10-56](https://docs-cdn.flashcat.cloud/images/png/9a1bee272010ceaa38d2f39025215379.png)
5260
5276
 
5277
+
5278
+ 10. Configure **Frontend Trusted Domain**
5279
+
5280
+ > The trusted domain needs to point to Flashduty's frontend address \`console.flashcat.cloud\` (can be implemented through CNAME or proxy forwarding).
5281
+ >
5282
+ > For requirements regarding trusted domains, please refer to the WeCom official documentation ['Enterprise Internal Development Domain Configuration Guide'](https://open.work.weixin.qq.com/wwopen/common/readDocument/40754).
5283
+
5284
+ After the frontend trusted domain verification passes, configure the generated **homepage address** to the WeCom application's **workbench application homepage**.
5285
+
5286
+ ![2025-10-14-19-52-19](https://docs-cdn.flashcat.cloud/images/png/cfd963b52a332082fc46ae12021ae73d.png)
5287
+
5288
+ 11. Configure **Trusted IP Address**: \`47.93.12.134\`
5289
+
5290
+ ![2025-10-14-20-28-20](https://docs-cdn.flashcat.cloud/images/png/d9c2184ba459bda0c3302e7634ccf48c.png)
5291
+
5261
5292
  ## 3. Configure war room
5262
5293
 
5263
5294
  ---
@@ -5297,7 +5328,9 @@ After completing the previous steps, in the **Enhanced Features** module of the
5297
5328
  7. **Incident notification failed with prompt \`WeCom license not activated\`?**
5298
5329
  - Please contact Flashduty customer service or your dedicated technical support to purchase and activate the license for you.
5299
5330
  8. **Why is the war room feature not working as expected?**
5300
- - Please refer to the **FAQ** section of the Flashduty [War Room Introduction](https://docs.flashcat.cloud/en/flashduty/war-room?nav=01JCQ7A4N4WRWNXW8EWEHXCMF5).`,Slack:`---
5331
+ - Please refer to the **FAQ** section of the Flashduty [War Room Introduction](https://docs.flashcat.cloud/en/flashduty/war-room?nav=01JCQ7A4N4WRWNXW8EWEHXCMF5).
5332
+ 9. **Why does it prompt "redirect_uri needs to use the application's trusted domain" when opening the app in the WeCom workspace?**
5333
+ - Please confirm whether the domain in the \`redirect_uri\` parameter of the **App Homepage** URL has completed the domain ownership verification required by WeCom. For details, see the WeCom official documentation ['Enterprise Internal Development Domain Configuration Guide'](https://open.work.weixin.qq.com/wwopen/common/readDocument/40754).`,Slack:`---
5301
5334
  title: "Slack Integration"
5302
5335
  description: "By integrating the Slack third-party application, you can receive and respond to alerts within Slack."
5303
5336
  date: "2025-05-19T10:00:00+08:00"
@@ -5369,10 +5402,10 @@ This step needs to be completed by a Microsoft Teams administrator.
5369
5402
  :::
5370
5403
 
5371
5404
  ### 1. Download application
5372
- Download [FlashDutyBot-v1.0.3.zip](https://flashduty-docs.oss-cn-beijing.aliyuncs.com/docs/FlashdutyBot-v1.0.3.zip) to your local device.
5405
+ Download [FlashdutyBot-v1.0.3.zip](https://flashduty-docs.oss-cn-beijing.aliyuncs.com/docs/FlashdutyBot-v1.0.3.zip) to your local device.
5373
5406
 
5374
5407
  ### 2. Install application
5375
- In Microsoft Teams, navigate to +Apps → Manage your apps → Upload an app → **Upload an app to your org's app catalog**, then upload the application package \`FlashDutyBot.zip\`.
5408
+ In Microsoft Teams, navigate to +Apps → Manage your apps → Upload an app → **Upload an app to your org's app catalog**, then upload the application package \`FlashdutyBot.zip\`.
5376
5409
 
5377
5410
  ![2025-09-18-13-48-04](https://docs-cdn.flashcat.cloud/images/png/bfa4afaf489c3582e858cad99eb76ae5.png)
5378
5411
 
@@ -5388,7 +5421,7 @@ If the application status is "Blocked", please wait a moment and refresh the pag
5388
5421
  #### Check if successfully added
5389
5422
  After waiting a few minutes, organization members can find this application in +Apps → **Built for your org**.
5390
5423
 
5391
- ![2025-09-18-13-49-58](https://docs-cdn.flashcat.cloud/images/png/199728ab0b1f9f24db80da0b3ecc8cd2.png)
5424
+ ![2025-09-18-17-05-37](https://docs-cdn.flashcat.cloud/images/png/f7827638d1877005ca674cbbd2aaa4a3.png)
5392
5425
 
5393
5426
  ### 3. Update application
5394
5427
  ::: caution
@@ -5410,14 +5443,14 @@ If your installed application version is lower than 1.0.3, please follow this pr
5410
5443
  1. Find the Flashduty application in the app marketplace.
5411
5444
  > If there is no application, please contact your Microsoft Teams organization administrator.
5412
5445
 
5413
- ![2025-09-18-13-53-57](https://docs-cdn.flashcat.cloud/images/png/8942fdf4327c96abcf31f4a9b7bf12d2.png)
5446
+ ![2025-09-18-17-06-34](https://docs-cdn.flashcat.cloud/images/png/0905e663241ce448a1381ef8c08aa777.png)
5414
5447
 
5415
5448
  2. Add the application to the target Team.
5416
5449
  ::: caution
5417
5450
  This step must select the General Channel of the target Team, otherwise incidents cannot be sent to the Team.
5418
5451
  :::
5419
5452
 
5420
- ![2025-09-18-13-54-41](https://docs-cdn.flashcat.cloud/images/png/8618dfd0f89507a6424e40d898d66fbd.png)
5453
+ ![2025-09-18-17-11-29](https://docs-cdn.flashcat.cloud/images/png/01fa86b63d01d2735aa6c4a53efb3c69.png)
5421
5454
 
5422
5455
  ### 2. Send link command
5423
5456
  In the Team, @Flashduty and send the command \`linkTeam {ID}\`, then click **Link Now**.
@@ -5430,11 +5463,11 @@ In the Team, @Flashduty and send the command \`linkTeam {ID}\`, then click **Lin
5430
5463
  1. Find the Flashduty application in the app marketplace.
5431
5464
  > If there is no application, please contact your Microsoft Teams organization administrator.
5432
5465
 
5433
- ![2025-09-18-13-53-57](https://docs-cdn.flashcat.cloud/images/png/8942fdf4327c96abcf31f4a9b7bf12d2.png)
5466
+ ![2025-09-18-17-06-34](https://docs-cdn.flashcat.cloud/images/png/0905e663241ce448a1381ef8c08aa777.png)
5434
5467
 
5435
5468
  2. Add the application to the target Chat.
5436
5469
 
5437
- ![2025-09-18-13-56-17](https://docs-cdn.flashcat.cloud/images/png/d0beee141db63714ccecb095affee79b.png)
5470
+ ![2025-09-18-17-14-23](https://docs-cdn.flashcat.cloud/images/png/6e56d7de341737fe495e5ff18eb1af34.png)
5438
5471
 
5439
5472
  ### 2. Send link command
5440
5473
  In the Chat, @Flashduty and send the command \`linkChat {ID} {ChatName}\`, then click **Link Now**.
@@ -5447,7 +5480,7 @@ In the Chat, @Flashduty and send the command \`linkChat {ID} {ChatName}\`, then
5447
5480
  1. Find the Flashduty application in the app marketplace.
5448
5481
  > If there is no application, please contact your Microsoft Teams organization administrator.
5449
5482
 
5450
- ![2025-09-18-13-53-57](https://docs-cdn.flashcat.cloud/images/png/8942fdf4327c96abcf31f4a9b7bf12d2.png)
5483
+ ![2025-09-18-17-06-34](https://docs-cdn.flashcat.cloud/images/png/0905e663241ce448a1381ef8c08aa777.png)
5451
5484
 
5452
5485
  2. Click **Open Application**.
5453
5486
 
@@ -5532,13 +5565,11 @@ email | string | Yes | Email address
5532
5565
  | alert_key | string | Yes | Alert correlation basis |
5533
5566
  | alert_severity | string | Yes | Severity level, enum: Critical, Warning, Info |
5534
5567
  | alert_status | string | Yes | Alert status, enum: Critical, Warning, Info, Ok |
5535
- | progress | string | Yes | Processing progress, enum: Triggered, Closed |
5536
5568
  | created_at | int64 | Yes | Creation time |
5537
5569
  | updated_at | int64 | Yes | Update time |
5538
5570
  | start_time | int64 | Yes | First trigger time (time of first event received by platform), Unix timestamp in seconds |
5539
5571
  | last_time | int64 | Yes | Latest event time (time of most recent event received by platform), Unix timestamp in seconds |
5540
5572
  | end_time | int64 | No | Alert recovery time (time when platform last received end-type event), Unix timestamp in seconds, defaults to 0 |
5541
- | close_time | int64 | No | Closure time, different from end_time, this indicates progress closure, not actual alert recovery. Unix timestamp in seconds, defaults to 0 |
5542
5573
  | labels | map[string]string | No | Label key-value pairs, both Key and Value are strings |
5543
5574
  | event_cnt | int64 | No | Number of associated events |
5544
5575
  | incident | [Incident](#Incident) | No | Associated incident |
@@ -5571,13 +5602,12 @@ curl -X POST 'https://example.com/alert/webhook?a=a' \\
5571
5602
  "alert_status":"Warning",
5572
5603
  "channel_id":1163577812973,
5573
5604
  "channel_name":"Order System",
5574
- "close_time":0,
5575
5605
  "created_at":1683766015,
5576
5606
  "data_source_id":1571358104973,
5577
5607
  "data_source_name":"Aliyun SLS",
5578
5608
  "data_source_ref_id":"",
5579
5609
  "data_source_type":"aliyun-sls.alert",
5580
- "description":"Test alert trigger to FlashDuty",
5610
+ "description":"Test alert trigger to Flashduty",
5581
5611
  "end_time":0,
5582
5612
  "event_cnt":1,
5583
5613
  "incident":{
@@ -5589,7 +5619,7 @@ curl -X POST 'https://example.com/alert/webhook?a=a' \\
5589
5619
  "alert_type":"sls_alert",
5590
5620
  "alert_url":"https://sls.console.aliyun.com/lognext/project/sls-api-testing/alert/alert-1683548531-071659",
5591
5621
  "aliuid":"1082109605037616",
5592
- "check":"Test send to FlashDuty",
5622
+ "check":"Test send to Flashduty",
5593
5623
  "fire_results":"{\\"_col0\\":\\"true\\"}",
5594
5624
  "fire_results_count":"1",
5595
5625
  "project":"sls-api-testing",
@@ -5599,9 +5629,8 @@ curl -X POST 'https://example.com/alert/webhook?a=a' \\
5599
5629
  "severity":"6"
5600
5630
  },
5601
5631
  "last_time":1683809153,
5602
- "progress":"Triggered",
5603
5632
  "start_time":1683766013,
5604
- "title":"Test alert trigger to FlashDuty",
5633
+ "title":"Test alert trigger to Flashduty",
5605
5634
  "title_rule":"$resource::$check",
5606
5635
  "updated_at":1683809170
5607
5636
  },
@@ -5620,11 +5649,14 @@ curl -X POST 'https://example.com/alert/webhook?a=a' \\
5620
5649
 
5621
5650
  1. **Is there a response timeout for the service?**
5622
5651
 
5623
- - The service must respond within 1 second, after which the response is considered failed
5652
+ - Services must respond within 2 second, responses after 2 second are considered failed
5624
5653
 
5625
5654
  2. **Will failed pushes continue to be pushed?**
5626
5655
 
5627
- - Currently, FlashDuty pushes only once, though retry mechanisms may be introduced in the future. Retries may also occur due to middleware timeouts, so implement idempotent processing
5656
+ For specific network errors, retries will be attempted up to a maximum of 2 times:
5657
+ - context deadline exceeded (excluding cases involving "awaiting headers")
5658
+ - i/o timeout
5659
+ - eof
5628
5660
 
5629
5661
  3. **How is push order guaranteed?**
5630
5662
 
@@ -5828,11 +5860,14 @@ curl -X POST 'https://example.com/incident/webhook?a=a' \\
5828
5860
 
5829
5861
  1. **Is there a response timeout for the service?**
5830
5862
 
5831
- - Services must respond within 1 second, responses after 1 second are considered failed
5863
+ - Services must respond within 2 second, responses after 2 second are considered failed
5832
5864
 
5833
5865
  2. **Will failed pushes continue to be pushed?**
5834
5866
 
5835
- - Currently, FlashDuty pushes only once, though retry mechanisms may be introduced in the future. Retries may also occur due to middleware timeouts, so implement idempotent processing
5867
+ For specific network errors, retries will be attempted up to a maximum of 2 times:
5868
+ - context deadline exceeded (excluding cases involving "awaiting headers")
5869
+ - i/o timeout
5870
+ - eof
5836
5871
 
5837
5872
  3. **How is push order guaranteed?**
5838
5873
 
@@ -5845,7 +5880,7 @@ curl -X POST 'https://example.com/incident/webhook?a=a' \\
5845
5880
 
5846
5881
  ## I. Creating Actions
5847
5882
 
5848
- 1. Log in to the FlashDuty console and navigate to [Integration Center-Webhook]
5883
+ 1. Log in to the Flashduty console and navigate to [Integration Center-Webhook]
5849
5884
  2. Click to add a Custom Action integration
5850
5885
  3. Configure the action name, which will appear as a button in the incident details
5851
5886
  4. Configure channels (multiple can be configured, but each channel can have up to three custom actions)
@@ -5938,13 +5973,11 @@ acknowledged_at | int64| No | Acknowledgment time
5938
5973
  | alert_key | string | Yes | Alert correlation basis |
5939
5974
  | alert_severity | string | Yes | Severity level, enum: Critical, Warning, Info |
5940
5975
  | alert_status | string | Yes | Alert status, enum: Critical, Warning, Info, Ok |
5941
- | progress | string | Yes | Processing progress, enum: Triggered, Closed |
5942
5976
  | created_at | int64 | Yes | Creation time |
5943
5977
  | updated_at | int64 | Yes | Update time |
5944
5978
  | start_time | int64 | Yes | First trigger time (time of first event received by platform), Unix timestamp in seconds |
5945
5979
  | last_time | int64 | Yes | Latest event time (time of latest event received by platform), Unix timestamp in seconds |
5946
5980
  | end_time | int64 | No | Alert recovery time (time of last end-type event received by platform), Unix timestamp in seconds, default 0 |
5947
- | close_time | int64 | No | Close time, different from end_time, this is processing progress closure, doesn't mean alert actually recovered. Unix timestamp in seconds, default 0 |
5948
5981
  | labels | map[string]string | No | Label KV pairs, both Key and Value are strings |
5949
5982
 
5950
5983
  </div>
@@ -5975,7 +6008,6 @@ curl -X POST 'https://example.com/incident/action?a=a' \\
5975
6008
  "alert_key": "asdflasdfl2xzasd112621",
5976
6009
  "alert_severity": "Critical",
5977
6010
  "alert_status": "Critical",
5978
- "close_time": 0,
5979
6011
  "created_at": 1699869567,
5980
6012
  "data_source_id": 2398086111504,
5981
6013
  "description": "cpu.idle < 20%",
@@ -5991,10 +6023,6 @@ curl -X POST 'https://example.com/incident/action?a=a' \\
5991
6023
  "v": "v"
5992
6024
  },
5993
6025
  "last_time": 1699869562,
5994
- "progress": "Triggered",
5995
- "responder_email": "",
5996
- "responder_id": 0,
5997
- "responder_name": "",
5998
6026
  "start_time": 1699869562,
5999
6027
  "title": "nj / es.nj.01 - 自定义字段测试",
6000
6028
  "title_rule": "$cluster::$resource::$check",
@@ -6080,7 +6108,7 @@ When host memory or CPU is maxed out, trigger host restart scripts for quick rec
6080
6108
 
6081
6109
  ### Information Enrichment
6082
6110
 
6083
- When an incident occurs, callback to your service to retrieve Tracing, Logging, topology, and other information based on alert details. Actively call FlashDuty Open API to update incident information, such as adding labels or setting custom fields to assist troubleshooting.
6111
+ When an incident occurs, callback to your service to retrieve Tracing, Logging, topology, and other information based on alert details. Actively call Flashduty Open API to update incident information, such as adding labels or setting custom fields to assist troubleshooting.
6084
6112
 
6085
6113
  ### Rollback Changes
6086
6114
 
@@ -6222,10 +6250,8 @@ Title | string | Yes | Alert title
6222
6250
  Description | string | Yes | Alert description, can be empty
6223
6251
  AlertSeverity | string | Yes | Severity level, enum values: Critical, Warning, Info
6224
6252
  AlertStatus | string | Yes | Alert status, enum values: Critical, Warning, Info, Ok
6225
- Progress | string | Yes | Processing progress, enum values: Triggered, Processing, Closed
6226
6253
  StartTime | int64 | Yes | Trigger time, Unix timestamp in seconds
6227
6254
  EndTime | int64 | No | Recovery time, Unix timestamp in seconds, default 0
6228
- CloseTime | int64 | No | Close time, EndTime is alert recovery time, CloseTime is processing progress close time. Alert automatically closes upon recovery, manual closure doesn't affect alert recovery. Unix timestamp in seconds, default 0
6229
6255
  \`Labels\` | map[string]string | No | Label key-value pairs, both Key and Value are strings
6230
6256
 
6231
6257
  ## Common Questions
@@ -7175,80 +7201,319 @@ If no custom content is set, the system default template will be used for notifi
7175
7201
 
7176
7202
  <head data-id="__react-email-head">
7177
7203
  <style>
7178
- .bg-Critical { background-color: #C80000; }
7179
- .bg-Warning { background-color: #FA7D00; }
7180
- .bg-Info { background-color: #FABE00; }
7181
- .bg-Ok { background-color: rgb(132 204 22); }
7182
- .text-Critical { color: #C80000; }
7183
- .text-Warning { color: #FA7D00; }
7184
- .text-Info { color: #FABE00; }
7185
- .text-Ok { color: rgb(132 204 22); }
7186
- .text-title {font-weight:500;width:6rem;flex-shrink:0}
7187
- .text-content {color:rgb(55,65,81)}
7204
+ /* Light mode colors */
7205
+ :root {
7206
+ --bg-color: rgb(255, 255, 255);
7207
+ --text-color: rgb(55, 65, 81);
7208
+ --label-key-color: #000;
7209
+ --section-bg: rgb(255, 255, 255);
7210
+ --border-color: rgb(229, 231, 235);
7211
+ }
7212
+
7213
+ /* Dark mode colors */
7214
+ @media (prefers-color-scheme: dark) {
7215
+ :root {
7216
+ --bg-color: rgb(31, 41, 55);
7217
+ --text-color: rgb(209, 213, 219);
7218
+ --label-key-color: rgb(229, 231, 235);
7219
+ --section-bg: rgb(17, 24, 39);
7220
+ --border-color: rgb(75, 85, 99);
7221
+ }
7222
+ }
7223
+
7224
+ /* Severity background colors */
7225
+ .severity-Critical {
7226
+ background-color: #C80000;
7227
+ color: #ffffff;
7228
+ padding: 4px 12px;
7229
+ border-radius: 12px;
7230
+ display: inline-block;
7231
+ font-weight: 600;
7232
+ font-size: 13px;
7233
+ }
7234
+ .severity-Warning {
7235
+ background-color: #fef3c7;
7236
+ color: #92400e;
7237
+ padding: 4px 12px;
7238
+ border-radius: 12px;
7239
+ display: inline-block;
7240
+ font-weight: 600;
7241
+ font-size: 13px;
7242
+ }
7243
+ .severity-Info {
7244
+ background-color: rgb(108,83,177);
7245
+ color: #ffffff;
7246
+ padding: 0.25rem 0.75rem;
7247
+ border-radius: 0.25rem;
7248
+ display: inline-block;
7249
+ font-weight: 500;
7250
+ }
7251
+ .severity-Ok {
7252
+ background-color: rgb(132 204 22);
7253
+ color:rgb(100, 239, 73);
7254
+ padding: 0.25rem 0.75rem;
7255
+ border-radius: 0.25rem;
7256
+ display: inline-block;
7257
+ font-weight: 500;
7258
+ }
7259
+
7260
+ /* Progress status colors */
7261
+ .progress-Triggered {
7262
+ background-color: #dbeafe;
7263
+ color: #1e40af;
7264
+ padding: 4px 12px;
7265
+ border-radius: 12px;
7266
+ display: inline-block;
7267
+ font-weight: 600;
7268
+ font-size: 13px;
7269
+ }
7270
+ .progress-Acknowledged {
7271
+ background-color: #ede9fe;
7272
+ color: #6b21a8;
7273
+ padding: 4px 12px;
7274
+ border-radius: 12px;
7275
+ display: inline-block;
7276
+ font-weight: 600;
7277
+ font-size: 13px;
7278
+ }
7279
+ .progress-Resolved {
7280
+ background-color: #d1fae5;
7281
+ color: #065f46;
7282
+ padding: 4px 12px;
7283
+ border-radius: 12px;
7284
+ display: inline-block;
7285
+ font-weight: 600;
7286
+ font-size: 13px;
7287
+ }
7288
+ .progress-Closed {
7289
+ background-color: #f3f4f6;
7290
+ color: #374151;
7291
+ padding: 4px 12px;
7292
+ border-radius: 12px;
7293
+ display: inline-block;
7294
+ font-weight: 600;
7295
+ font-size: 13px;
7296
+ }
7297
+
7298
+ /* Field row styles */
7299
+ .field-row {
7300
+ padding: 1rem 0;
7301
+ border-bottom: 1px solid var(--border-color);
7302
+ }
7303
+ .field-row:first-child {
7304
+ padding-top: 0;
7305
+ }
7306
+ .field-row:last-child {
7307
+ border-bottom: none;
7308
+ }
7309
+ .field-label {
7310
+ color: #6b7280;
7311
+ font-size: 0.875rem;
7312
+ margin-bottom: 0.25rem;
7313
+ }
7314
+ .field-value {
7315
+ color: var(--text-color);
7316
+ word-break: break-word;
7317
+ overflow-wrap: break-word;
7318
+ }
7319
+
7320
+ body {
7321
+ background-color: var(--bg-color);
7322
+ color: var(--text-color);
7323
+ }
7324
+
7325
+ .labels-section {
7326
+ background-color: #f3f4f6;
7327
+ padding: 1rem;
7328
+ border-radius: 0.375rem;
7329
+ margin-top: 0.5rem;
7330
+ }
7331
+ @media (prefers-color-scheme: dark) {
7332
+ .labels-section {
7333
+ background-color: rgb(55, 65, 81);
7334
+ }
7335
+ }
7188
7336
  </style>
7189
7337
  </head>
7190
7338
 
7191
- <body data-id="__react-email-body" style="background-color:rgb(255,255,255);border-radius:0.25rem;margin-top:2.5rem;margin-bottom:2.5rem;margin-left:auto;margin-right:auto;padding:1rem;min-width:400px;max-width:660px;font-family:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji">
7192
- <div style="width:100%;height:0.375rem;margin-bottom:2rem" class="bg-{{.IncidentSeverity}}"></div>
7193
- <div style="display:flex;align-items:center;margin-bottom:1.5rem">
7194
- <div style="display:flex;align-items:flex-end;gap:1rem"><img witdh="120" data-id="react-email-img" src="https://console.flashcat.cloud/image/saas-logo.png" height="40" style="display:block;outline:none;border:none;text-decoration:none" /><span style="font-size:1.25rem;line-height:1.75rem;font-weight:600">You have a pending incident</span></div>
7195
- </div>
7196
- <div style="background-color:rgb(243,244,246);padding:2rem;margin-top:1rem;border-radius:0.5rem">
7197
- <div style="display:flex;flex-direction:column;gap:0.75rem">
7198
- <div style="display:flex">
7199
- <div class="text-title">Title</div>
7200
- <div class="text-content">{{.Title}}</div>
7201
- </div>
7202
- <div style="display:flex">
7203
- <div class="text-title">Severity</div>
7204
- <div class="text-{{.IncidentSeverity}}">{{.IncidentSeverity}}</div>
7205
- </div>
7206
- <div style="display:flex">
7207
- <div class="text-title">Channel</div>
7208
- <div class="text-content">{{if .ChannelName}}{{.ChannelName}}{{else}}None{{end}}</div>
7209
- </div>
7210
- <div style="display:flex">
7211
- <div class="text-title">Triggered at</div>
7212
- <div class="text-content">{{date "2006-01-02 15:04:05" .StartTime}}</div>
7213
- </div>
7214
- {{if .CreatorID}}
7215
- <div style="display:flex">
7216
- <div class="text-title">Creator</div>
7217
- <div class="text-content">{{.Creator.PersonName}}</div>
7218
- </div>
7219
- {{end}}
7220
- {{if gt (len .Responders) 0}}
7221
- <div style="display:flex">
7222
- <div class="text-title">Responders</div>
7223
- <div class="text-content">{{range .Responders}}@{{.PersonName}} {{end}}</div>
7224
- </div>
7225
- {{end}}
7226
- <div style="display:flex">
7227
- <div class="text-title">Progress</div>
7228
- <div class="text-content">{{.Progress}}</div>
7229
- </div>
7230
- <div style="display:flex">
7231
- <div class="text-title">Description</div>
7232
- <div style="color:rgb(55,65,81);margin-top:0.125rem">
7233
- <div data-id="react-email-markdown">{{toHtml .Description}}</div>
7234
- </div>
7235
- </div>
7236
- {{if .Labels.resource}}
7237
- <div style="display:flex;margin-bottom:0.5rem;">
7238
- <div style="color:#000;font-weight:500;width:6rem;margin-right:1rem;">Alert targets</div>
7239
- <div style="color:rgb(55,65,81);margin-top:0.125rem">
7240
- <div data-id="react-email-markdown">{{toHtml (joinAlertLabels . "resource" ", ")}}</div>
7241
- </div>
7242
- </div>
7243
- {{end}}
7244
- </div>
7245
- <div style="display:flex;gap:1rem;margin-top:2rem"><a href="{{.DetailUrl}}?ack=1" data-id="react-email-button" target="_blank" style="line-height:100%;text-decoration:none;display:inline-block;max-width:100%;padding:0px 0px"><span></span><span style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:0"><div style="padding-left:2rem;padding-right:2rem;padding-top:0.5rem;padding-bottom:0.5rem;background-color:rgb(108,83,177);border-radius:0.25rem;font-size:1rem;line-height:1.5rem;color:rgb(255,255,255);font-weight:600;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms">Acknowledge</div></span><span></span></a><a href="{{.DetailUrl}}" data-id="react-email-button" target="_blank" style="color:#61dafb;line-height:100%;text-decoration:none;display:inline-block;max-width:100%;padding:0px 0px"><span></span><span style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:0"><div style="padding-left:2rem;padding-right:2rem;padding-top:0.5rem;padding-bottom:0.5rem;background-color:rgb(255,255,255);border-width: 1px;border-style:solid;border-color:rgb(229,231,235);border-radius:0.25rem;font-size:1rem;line-height:1.5rem;color:rgb(0,0,0);font-weight:600">View Details</div></span><span></span></a></div>
7246
- </div>
7247
- <div style="display:flex;justify-content:flex-end;align-items:flex-end;margin-top:2rem">
7248
- <div style="font-size:0.875rem;line-height:1.25rem;font-weight:500">ALL RIGHTS RESERVED © Beijing Flashcat Cloud Technology Co.,Ltd.</div>
7249
- </div>
7339
+ <body data-id="__react-email-body" style="margin:0;padding:0;background-color:#f3f4f6;font-family:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji">
7340
+ <!-- Outer wrapper table for centering -->
7341
+ <table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:#f3f4f6">
7342
+ <tr>
7343
+ <td align="center" style="padding:40px 20px">
7344
+ <!-- Main container table with fixed width -->
7345
+ <table width="600" cellpadding="0" cellspacing="0" border="0" style="background-color:#ffffff;max-width:600px">
7346
+ <!-- Purple header bar with logo -->
7347
+ <tr>
7348
+ <td style="padding:32px 0 32px 32px;text-align:left">
7349
+ <img data-id="react-email-img" src="https://flashduty-public.oss-cn-beijing.aliyuncs.com/icons/flashduty-20251216.png" height="70" style="display:block;outline:none;border:none;text-decoration:none;height:70px;width:auto" alt="Flashduty" />
7350
+ </td>
7351
+ </tr>
7352
+
7353
+ <!-- Divider after logo -->
7354
+ <tr>
7355
+ <td style="padding:0 32px">
7356
+ <div style="border-top:1px solid #e5e7eb"></div>
7357
+ </td>
7358
+ </tr>
7359
+
7360
+ <!-- Main content -->
7361
+ <tr>
7362
+ <td style="padding:16px 32px 32px 32px">
7363
+ <!-- Title and Description -->
7364
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
7365
+ <tr>
7366
+ <td>
7367
+ <h1 style="margin:0;font-size:24px;font-weight:600;color:#111827;line-height:1.5">{{.Title}}</h1>
7368
+ {{if .Description}}
7369
+ <p style="margin:8px 0 0 0;font-size:16px;color:#6b7280;line-height:1.5">{{toHtml .Description}}</p>
7370
+ {{end}}
7371
+ </td>
7372
+ </tr>
7373
+ </table>
7374
+
7375
+ <!-- Divider after title -->
7376
+ <div style="border-top:1px solid #e5e7eb;margin:32px 0"></div>
7377
+
7378
+ <!-- Fields section -->
7379
+ <table width="100%" cellpadding="0" cellspacing="0" border="0" style="margin-bottom:30px">
7380
+ <tr>
7381
+ <td style="padding:16px 0;border-bottom:1px solid #e5e7eb;background-color:#ffffff">
7382
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
7383
+ <tr>
7384
+ <td width="120" style="font-weight:600;color:#374151;font-size:14px;vertical-align:top;padding-left:16px">Severity</td>
7385
+ <td style="color:#6b7280;font-size:14px;word-break:break-word;padding-right:16px"><span class="severity-{{.IncidentSeverity}}">{{.IncidentSeverity}}</span></td>
7386
+ </tr>
7387
+ </table>
7388
+ </td>
7389
+ </tr>
7390
+
7391
+ <tr>
7392
+ <td style="padding:16px 0;border-bottom:1px solid #e5e7eb;background-color:#ffffff">
7393
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
7394
+ <tr>
7395
+ <td width="120" style="font-weight:600;color:#374151;font-size:14px;vertical-align:top;padding-left:16px">Channel</td>
7396
+ <td style="color:#6b7280;font-size:14px;word-break:break-word;padding-right:16px">{{if .ChannelName}}{{.ChannelName}}{{else}}None{{end}}</td>
7397
+ </tr>
7398
+ </table>
7399
+ </td>
7400
+ </tr>
7401
+
7402
+ <tr>
7403
+ <td style="padding:16px 0;border-bottom:1px solid #e5e7eb;background-color:#ffffff">
7404
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
7405
+ <tr>
7406
+ <td width="120" style="font-weight:600;color:#374151;font-size:14px;vertical-align:top;padding-left:16px">Triggered at</td>
7407
+ <td style="color:#6b7280;font-size:14px;word-break:break-word;padding-right:16px">{{date "2006-01-02 15:04:05" .StartTime}}</td>
7408
+ </tr>
7409
+ </table>
7410
+ </td>
7411
+ </tr>
7412
+
7413
+ {{if .CreatorID}}
7414
+ <tr>
7415
+ <td style="padding:16px 0;border-bottom:1px solid #e5e7eb;background-color:#ffffff">
7416
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
7417
+ <tr>
7418
+ <td width="120" style="font-weight:600;color:#374151;font-size:14px;vertical-align:top;padding-left:16px">Creator</td>
7419
+ <td style="color:#6b7280;font-size:14px;word-break:break-word;padding-right:16px">{{.Creator.PersonName}}</td>
7420
+ </tr>
7421
+ </table>
7422
+ </td>
7423
+ </tr>
7424
+ {{end}}
7425
+
7426
+ {{if gt (len .Responders) 0}}
7427
+ <tr>
7428
+ <td style="padding:16px 0;border-bottom:1px solid #e5e7eb;background-color:#ffffff">
7429
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
7430
+ <tr>
7431
+ <td width="120" style="font-weight:600;color:#374151;font-size:14px;vertical-align:top;padding-left:16px">Responders</td>
7432
+ <td style="color:#6b7280;font-size:14px;word-break:break-word;padding-right:16px">{{range .Responders}}@{{.PersonName}} {{end}}</td>
7433
+ </tr>
7434
+ </table>
7435
+ </td>
7436
+ </tr>
7437
+ {{end}}
7438
+
7439
+ <tr>
7440
+ <td style="padding:16px 0;border-bottom:1px solid #e5e7eb;background-color:#ffffff">
7441
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
7442
+ <tr>
7443
+ <td width="120" style="font-weight:600;color:#374151;font-size:14px;vertical-align:top;padding-left:16px">Progress</td>
7444
+ <td style="color:#6b7280;font-size:14px;word-break:break-word;padding-right:16px"><span class="progress-{{.Progress}}">{{.Progress}}</span></td>
7445
+ </tr>
7446
+ </table>
7447
+ </td>
7448
+ </tr>
7449
+
7450
+ {{if .Labels.resource}}
7451
+ <tr>
7452
+ <td style="padding:16px 0;border-bottom:1px solid #e5e7eb;background-color:#ffffff">
7453
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
7454
+ <tr>
7455
+ <td width="120" style="font-weight:600;color:#374151;font-size:14px;vertical-align:top;padding-left:16px">Resource</td>
7456
+ <td style="color:#6b7280;font-size:14px;word-break:break-word;padding-right:16px">{{(joinAlertLabels . "resource" ", ")}}</td>
7457
+ </tr>
7458
+ </table>
7459
+ </td>
7460
+ </tr>
7461
+ {{end}}
7462
+
7463
+ {{if gt (len .Labels) 0}}
7464
+ <tr>
7465
+ <td style="padding:16px 0">
7466
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
7467
+ <tr>
7468
+ <td width="120" style="font-weight:600;color:#374151;font-size:14px;vertical-align:top;padding-left:16px">Labels</td>
7469
+ <td style="color:#6b7280;font-size:14px;word-break:break-word;padding-right:16px;background-color:#f9fafb;padding:16px">
7470
+ <pre style="margin:0;font-family:'Courier New',monospace;font-size:13px;color:#374151;white-space:pre-wrap;word-break:break-word">{{mustToPrettyJson .Labels}}</pre>
7471
+ </td>
7472
+ </tr>
7473
+ </table>
7474
+ </td>
7475
+ </tr>
7476
+ {{end}}
7477
+ </table>
7478
+
7479
+ <!-- Action buttons -->
7480
+ <table width="100%" cellpadding="0" cellspacing="0" border="0" style="margin-top:32px">
7481
+ <tr>
7482
+ <td width="48%" align="center" style="padding:0">
7483
+ <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
7484
+ <tr>
7485
+ <td align="center" style="background-color:rgb(108,83,177);border-radius:6px;padding:14px 32px">
7486
+ <a href="{{.DetailUrl}}?ack=1" data-id="react-email-button" target="_blank" style="color:#ffffff;font-size:16px;font-weight:600;text-decoration:none;display:block">Acknowledge Now</a>
7487
+ </td>
7488
+ </tr>
7489
+ </table>
7490
+ </td>
7491
+ <td width="4%" style="padding:0"></td>
7492
+ <td width="48%" align="center" style="padding:0">
7493
+ <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
7494
+ <tr>
7495
+ <td align="center" style="background-color:#ffffff;border:2px solid rgb(108,83,177);border-radius:6px;padding:14px 32px">
7496
+ <a href="{{.DetailUrl}}" data-id="react-email-button" target="_blank" style="color:rgb(108,83,177);font-size:16px;font-weight:600;text-decoration:none;display:block">View Details</a>
7497
+ </td>
7498
+ </tr>
7499
+ </table>
7500
+ </td>
7501
+ </tr>
7502
+ </table>
7503
+ </td>
7504
+ </tr>
7505
+
7506
+ <!-- Footer -->
7507
+ <tr>
7508
+ <td style="background-color:#f9fafb;padding:20px;text-align:center">
7509
+ <p style="margin:0;font-size:12px;color:#9ca3af">ALL RIGHTS RESERVED © FLASHCAT.CLOUD</p>
7510
+ </td>
7511
+ </tr>
7512
+ </table>
7513
+ </td>
7514
+ </tr>
7515
+ </table>
7250
7516
  </body>
7251
-
7252
7517
  </html>
7253
7518
  \`\`\`
7254
7519
 
@@ -7309,15 +7574,15 @@ When you need to route alerts to different channels based on alert payload infor
7309
7574
 
7310
7575
  ## I. Huawei Cloud APM Alert Push Configuration
7311
7576
 
7312
- ### Create FlashDuty Alert Channel
7577
+ ### Create Flashduty Alert Channel
7313
7578
 
7314
7579
  1. Log in to your Huawei Cloud Console, search for \`SMN\` (Simple Message Notification) service and enter its console
7315
7580
  2. Select \`Topic Management=>Topics\` from the left navigation bar
7316
- 3. Click \`Create Topic\`, enter \`FlashDuty\` as the topic name in the edit page and confirm
7581
+ 3. Click \`Create Topic\`, enter \`Flashduty\` as the topic name in the edit page and confirm
7317
7582
 
7318
7583
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/lts-1.png" alt="drawing" width="500"/>
7319
7584
 
7320
- 4. Return to the topic list and click \`Add Subscription\` in the newly created FlashDuty topic
7585
+ 4. Return to the topic list and click \`Add Subscription\` in the newly created Flashduty topic
7321
7586
 
7322
7587
  <img src="https://download.flashcat.cloud/flashduty/doc/en/hw/lts-2.png" alt="drawing" width="500"/>
7323
7588
 
@@ -7333,7 +7598,7 @@ When you need to route alerts to different channels based on alert payload infor
7333
7598
 
7334
7599
  #### Step 1: Add Notification Configuration
7335
7600
  1. Log in to your \`Huawei Cloud APM\` console, under \`Application Monitoring=>Metrics\`, click \`Notification\`
7336
- 2. Select the corresponding region, click \`Add\`, and select the created \`FlashDuty\` topic
7601
+ 2. Select the corresponding region, click \`Add\`, and select the created \`Flashduty\` topic
7337
7602
  3. Click \`Confirm\` to complete the configuration
7338
7603
 
7339
7604
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/en/hw/hw-apm-1.png" />
@@ -7343,7 +7608,7 @@ When you need to route alerts to different channels based on alert payload infor
7343
7608
  2. Select \`Alarm Policy\`, click \`Add Custom Alarm Policy\` or edit an existing alarm policy
7344
7609
  3. In the \`Alarm Policy\` edit page, configure alert metrics and conditions according to your business needs
7345
7610
  4. In \`Notification Content\`, when referencing variables, it's recommended to use K:V format for easier alert parsing, such as host:\${hostInfo}
7346
- 5. In \`Notification Object\`, select the created \`FlashDuty\` notification channel
7611
+ 5. In \`Notification Object\`, select the created \`Flashduty\` notification channel
7347
7612
  6. Click \`Confirm\` to complete the configuration
7348
7613
 
7349
7614
  <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/en/hw/hw-apm-2.png" />
@@ -7664,7 +7929,7 @@ Choose this method when you need to route alerts to different channels based on
7664
7929
  ---
7665
7930
 
7666
7931
  ### Configure ElastAlert 2 Alerts
7667
- Follow the [ElastAlert FlashDuty](https://elastalert2.readthedocs.io/en/latest/alerts.html#flashduty) push configuration document
7932
+ Follow the [ElastAlert Flashduty](https://elastalert2.readthedocs.io/en/latest/alerts.html#flashduty) push configuration document
7668
7933
 
7669
7934
  1. Create or edit the alert rule file, for example \`rules/elastalert2_alert.yaml\`.
7670
7935
  2. Fill in the \`flashduty\` alert type in the \`alert\` field.
@@ -7716,7 +7981,7 @@ filter:
7716
7981
  query_string:
7717
7982
  query: "created_at:*"
7718
7983
 
7719
- # ------- FlashDuty ----------------
7984
+ # ------- Flashduty ----------------
7720
7985
  alert: flashduty
7721
7986
  flashduty_integration_key: "xxxx"
7722
7987
  flashduty_title: "elastalert2 alert"
@@ -7731,7 +7996,7 @@ flashduty_group: "group1"
7731
7996
  flashduty_cluster: "bj"
7732
7997
  flashduty_app: "app1"
7733
7998
  flashduty_env: "dev"
7734
- # ------- FlashDuty ----------------
7999
+ # ------- Flashduty ----------------
7735
8000
  \`\`\`
7736
8001
 
7737
8002
  5. Restart ElastAlert and wait for the alert to trigger.`,DingtalkAlert:`---
@@ -8049,6 +8314,7 @@ Through ServiceNow sync webhook, Flashduty incidents are associated and synchron
8049
8314
  ## In ServiceNow
8050
8315
 
8051
8316
  ### Create User
8317
+ Create a user to connect to the ServiceNow instance for Incident sync and updates. Skip this step if you already have an available user.
8052
8318
 
8053
8319
  1. Log in to the ServiceNow instance console, select \`ALL\`, enter \`USERS\` and select \`Organization\`-\`Users\`.
8054
8320
  2. Click \`New\` to create a new user.
@@ -8060,14 +8326,20 @@ Through ServiceNow sync webhook, Flashduty incidents are associated and synchron
8060
8326
 
8061
8327
  ### Configure User
8062
8328
 
8063
- The user used to access ServiceNow needs to have administrator roles.
8329
+ > **User Role Description**
8330
+ > **itil:** The main usage scope of this role in Flashduty is limited to field retrieval in ServiceNow Incident Table and does not involve any other operations.
8331
+ >
8332
+ > **personalize_dictionary:** This role in Flashduty is primarily used only for field retrieval from ServiceNow Incident Tables, and does not involve any other operations.
8333
+ >
8334
+ > For more information about the permission scope of these two roles, please refer to the ServiceNow [official documentation](https://www.servicenow.com/docs/bundle/washingtondc-platform-administration/page/administer/roles/reference/r_BaseSystemRoles.html#d130465e3182)
8064
8335
 
8065
8336
  1. On the user list page, find the newly created \`flashduty\` user and go to the configuration page.
8066
8337
  2. In the edit page, click \`Set Password\` to set a password.
8067
8338
  3. Click \`Roles\` to add **personalize_dictionary and itil** roles (If custom field mapping configuration is not required, the personalize_dictionary permission does not need to be retained).
8068
8339
  4. Click \`Update\` to update the configuration.
8069
8340
 
8070
- <img alt="drawing" width="600" src="https://download.flashcat.cloud/flashduty/doc/snow/snow-2.png" />
8341
+ ![2025-09-24-16-29-05](https://docs-cdn.flashcat.cloud/images/png/a4416dff926e89b505224e03a4f774c6.png)
8342
+ ![2025-09-24-16-29-58](https://docs-cdn.flashcat.cloud/images/png/19371c16f4c516c095752f2a8e0d45bf.png)
8071
8343
 
8072
8344
  ## In Flashduty
8073
8345
 
@@ -8079,14 +8351,27 @@ Enter the username/password and instance name configured above into the integrat
8079
8351
  - **Management Team:** When a management team is selected, only team members and tenant administrators can edit this integration.
8080
8352
  - **Channel:** Select the channel where this integration takes effect.
8081
8353
  - **Sync Direction:**
8354
+
8082
8355
  - To_ServiceNow: Sync Flashduty incidents to ServiceNow.
8083
8356
  - From_ServiceNow: Sync ServiceNow Incidents to Flashduty.
8084
8357
  - Two-way: Bidirectional sync between Flashduty and ServiceNow.
8085
- - **Trigger Mode**:
8358
+
8359
+ - **Trigger Mode:**
8360
+
8086
8361
  - Auto Trigger: Requires configuration of corresponding conditions, Flashduty will automatically sync incidents that meet the conditions to ServiceNow.
8087
8362
  - Manual Trigger: Requires manual triggering of ServiceNow sync in the More Actions section of the incident details page (the integration configuration name is the trigger name).
8088
- - **Severity Mapping:** ServiceNow's Priority is determined by the combined values of Impact and Urgency, so you can refer to ServiceNow's \`Priority Lookup Rules\` for configuration. Additionally, note that only when ServiceNow Incident's Urgency changes will it trigger updates to Flashduty incident severity.
8089
- - **Custom Field Mapping:** You can choose to sync certain labels or all labels of incidents as well as custom field content to ServiceNow fields (only text-type fields are supported).
8363
+
8364
+ - **Severity Mapping:**
8365
+ - ServiceNow's Priority is determined by the combined values of Impact and Urgency, so you can refer to ServiceNow's \`Priority Lookup Rules\` for configuration.
8366
+ - Only when the Urgency of a ServiceNow Incident changes will it trigger an update to the Flashduty incident severity.
8367
+ - Since Flashduty cannot obtain ServiceNow's Impact and Urgency lists while following the principle of least privilege, only default values are provided. If you need to customize the mapping relationship, please contact technical support.
8368
+
8369
+ - **Custom Field Mapping:** You can map tags or custom fields from incidents to corresponding text fields in ServiceNow tickets, enabling automatic information filling. This feature supports synchronizing common contextual information (such as service name, instance address, metric name, etc.) to ServiceNow for easier subsequent troubleshooting and tracking.
8370
+
8371
+ - Only supports target fields of single-line text or multi-line text types.
8372
+ - Supports extracting values from incident tags (such as service, instance) or custom attributes.
8373
+ - If the source field is empty, the target field will also remain empty and will not overwrite existing content.
8374
+ - Mapping configurations are managed centrally in integration settings, eliminating the need for manual entry each time.
8090
8375
 
8091
8376
  ## In ServiceNow
8092
8377
 
@@ -8294,23 +8579,23 @@ Note: The body configures default receiving fields. If you have custom fields th
8294
8579
 
8295
8580
  | ServiceNow | Flashduty | Notes |
8296
8581
  | ------------------- | ------------- | ----- |
8297
- | Short_description | Title | |
8298
- | Description | Description | |
8299
- | Additional comments | Comments | |
8300
- | State | Progress | |
8301
- | Urgency | Severity | |
8302
- | Others | Custom Fields | |
8582
+ | Short_description | Title | Title |
8583
+ | Description | Description | Description |
8584
+ | Additional comments | Comments | Comments |
8585
+ | State | Progress | Progress |
8586
+ | Urgency | Severity | Severity |
8587
+ | Others | Custom Fields | Custom Fields |
8303
8588
 
8304
8589
  ### Status Mapping
8305
8590
 
8306
8591
  | ServiceNow | Flashduty | Notes |
8307
8592
  | ----------- | ---------- | ---------------------- |
8308
- | New | Trigger | |
8309
- | In Progress | Processing | |
8593
+ | New | Trigger | Trigger |
8594
+ | In Progress | Processing | Processing |
8310
8595
  | On Hold | Snoozed | Default snooze 2 hours |
8311
- | Resolved | CLosed | |
8312
- | Closed | CLosed | |
8313
- | Canceled | CLosed | |
8596
+ | Resolved | CLosed | CLosed |
8597
+ | Closed | CLosed | CLosed |
8598
+ | Canceled | CLosed | CLosed |
8314
8599
 
8315
8600
  ### Priority Mapping
8316
8601
 
@@ -8318,10 +8603,22 @@ Only when ServiceNow's Urgency value changes will it affect Flashduty's Severity
8318
8603
 
8319
8604
  | ServiceNow | Flashduty | Notes |
8320
8605
  | ---------- | --------- | ----- |
8321
- | Low | Info | |
8322
- | Medium | Warning | |
8323
- | High | Critical | |
8324
- `,Monit:`---
8606
+ | Low | Info | Info |
8607
+ | Medium | Warning | Warning |
8608
+ | High | Critical | Critical |
8609
+
8610
+
8611
+ ## QA
8612
+
8613
+ <details>
8614
+ <summary>Can the UserID be customized when creating a new ServiceNow user?</summary>
8615
+ Yes, it can be customized. The documentation uses "flashduty" as the UserID to better identify that this user is used for Incident synchronization.
8616
+ </details>
8617
+
8618
+ <details>
8619
+ <summary>Getting 401 error when configuring integration</summary>
8620
+ A 401 error is generally caused by an incorrect password. Please check if the password is correct, or reset a new password (when setting the password, do not check the "Password needs reset" option).
8621
+ </details>`,Monit:`---
8325
8622
  title: "Monit Alert Integration"
8326
8623
  description: "Flashduty Monit alert integration, Monit service reports alerts through this integration"
8327
8624
  date: "2025-05-19T10:00:00+08:00"
@@ -8432,4 +8729,604 @@ Currently, all alerts pushed to Flashduty through the Cloudflare integration are
8432
8729
 
8433
8730
  </div>
8434
8731
 
8435
- `};n.FlashDocsEn=u})(window);
8732
+ `,WecomAlert:`---
8733
+ title: "Wecom Alert Integration"
8734
+ description: "Generate a unique Wecom robot address in Flashduty, and synchronize the occurrence and recovery of alerts through Wecom"
8735
+ date: "2025-05-19T10:00:00+08:00"
8736
+ url: "https://docs.flashcat.cloud/en/flashduty/Wecom-alert-integration-guide"
8737
+ ---
8738
+
8739
+ Generate a unique Wecom robot address in Flashduty, and synchronize the occurrence and recovery of alerts through Wecom.
8740
+
8741
+ <div class="hide">
8742
+
8743
+ ## Operation Steps
8744
+ ---
8745
+
8746
+ ### Create Wecom Alert Integration
8747
+
8748
+ You can obtain a Wecom alert integration address through either of these two methods:
8749
+
8750
+ #### Using Dedicated Integration
8751
+
8752
+ Choose this method when you don't need to route alert events to different channels. It's simpler and recommended.
8753
+
8754
+ <details>
8755
+ <summary>Expand</summary>
8756
+
8757
+ 1. Go to the Flashduty console, select **Channel**, and enter a specific channel's details page
8758
+ 2. Select the **Integration** tab, click **Add Integration** to enter the integration page
8759
+ 3. Choose **Wecom Alert** integration and click **Save** to generate a card
8760
+ 4. Click the generated card to view the **Wecom Alert Integration URL**, copy it for later use, and you're done
8761
+
8762
+ </details>
8763
+
8764
+ #### Using Shared Integration
8765
+
8766
+ Choose this method when you need to route alerts to different channels based on the alert event's payload information.
8767
+
8768
+ <details>
8769
+ <summary>Expand</summary>
8770
+
8771
+ 1. Go to the Flashduty console, select **Integration Center => Alert Events** to enter the integration selection page
8772
+ 2. Select **Wecom Alert** integration:
8773
+ - **Integration Name**: Define a name for the current integration
8774
+ - **Message Type**: Select Wecom alert message type, currently only Text and Markdown are supported
8775
+ - **Push Mode**: Choose when to trigger or recover alerts for Wecom notifications
8776
+ 3. Copy the **Wecom Alert Integration URL** for later use
8777
+ 4. Configure the default route and select the corresponding channel (after integration creation, you can go to \`Routes\` to configure more routing rules)
8778
+ 5. Done
8779
+
8780
+ </details>
8781
+ </div>
8782
+
8783
+ ### Customize Wecom Alert Integration
8784
+
8785
+ #### Wecom Alert Integration URL
8786
+
8787
+ The system will generate a unique Wecom alert integration URL for you. This URL is compatible with Wecom robot message protocol. When platforms only support Wecom robot channels, you can use this URL to receive corresponding messages.
8788
+
8789
+ #### Push Mode
8790
+
8791
+ By default, the system always creates new alerts for each message, but you can switch to these modes:
8792
+
8793
+ **Trigger or Close Alert Based on Rules**: In this mode, when receiving a new message, the system matches messages according to your rules and triggers new alerts or closes existing alerts based on the matching results.
8794
+
8795
+ - You need to fill in at least one **trigger** rule
8796
+ - You must set up regex extraction rules for Alert Key. The system uses this field to find historical alerts for updates or closure. **If regex extraction fails, the system will use the message title to generate an Alert Key** to ensure alerts won't be lost due to configuration errors
8797
+ - You can choose whether to discard messages when none of the rules match
8798
+
8799
+ Configuration example:
8800
+
8801
+ - Receive all messages, close the alert when the message content contains **RESOLVED**, otherwise trigger a new alert
8802
+ - Extract Alert Key from messages using the rule **/(.*)/**.
8803
+
8804
+
8805
+ ### Notes
8806
+ - Wecom alert integration URL only supports Text and Markdown message types; other message types cannot be received
8807
+ - Flashduty will generate a default alert title: "Wecom robot Alert , If you need to change the title, you can customize it using the [alert pipeline](https://docs.flashcat.cloud/en/flashduty/alert-pipelines)"
8808
+
8809
+ ## Severity Mapping
8810
+ ---
8811
+
8812
+ Currently, all alerts pushed to Flashduty through the Wecom integration are set to Warning severity. However, you can customize the severity using the [alert pipeline](https://docs.flashcat.cloud/en/flashduty/alert-pipelines).
8813
+
8814
+ ---
8815
+ title: "Wecom Alert Integration"
8816
+ description: "Generate a unique Wecom robot address in Flashduty, and synchronize the occurrence and recovery of alerts through Wecom"
8817
+ date: "2025-05-19T10:00:00+08:00"
8818
+ url: "https://docs.flashcat.cloud/en/flashduty/Wecom-alert-integration-guide"
8819
+ ---
8820
+
8821
+ Generate a unique Wecom robot address in Flashduty, and synchronize the occurrence and recovery of alerts through Wecom.
8822
+
8823
+ <div class="hide">
8824
+
8825
+ ## Operation Steps
8826
+ ---
8827
+
8828
+ ### Create Wecom Alert Integration
8829
+
8830
+ You can obtain a Wecom alert integration address through either of these two methods:
8831
+
8832
+ #### Using Dedicated Integration
8833
+
8834
+ Choose this method when you don't need to route alert events to different channels. It's simpler and recommended.
8835
+
8836
+ <details>
8837
+ <summary>Expand</summary>
8838
+
8839
+ 1. Go to the Flashduty console, select **Channel**, and enter a specific channel's details page
8840
+ 2. Select the **Integration** tab, click **Add Integration** to enter the integration page
8841
+ 3. Choose **Wecom Alert** integration and click **Save** to generate a card
8842
+ 4. Click the generated card to view the **Wecom Alert Integration URL**, copy it for later use, and you're done
8843
+
8844
+ </details>
8845
+
8846
+ #### Using Shared Integration
8847
+
8848
+ Choose this method when you need to route alerts to different channels based on the alert event's payload information.
8849
+
8850
+ <details>
8851
+ <summary>Expand</summary>
8852
+
8853
+ 1. Go to the Flashduty console, select **Integration Center => Alert Events** to enter the integration selection page
8854
+ 2. Select **Wecom Alert** integration:
8855
+ - **Integration Name**: Define a name for the current integration
8856
+ - **Message Type**: Select Wecom alert message type, currently only Text and Markdown are supported
8857
+ - **Push Mode**: Choose when to trigger or recover alerts for Wecom notifications
8858
+ 3. Copy the **Wecom Alert Integration URL** for later use
8859
+ 4. Configure the default route and select the corresponding channel (after integration creation, you can go to \`Routes\` to configure more routing rules)
8860
+ 5. Done
8861
+
8862
+ </details>
8863
+ </div>
8864
+
8865
+ ### Customize Wecom Alert Integration
8866
+
8867
+ #### Wecom Alert Integration URL
8868
+
8869
+ The system will generate a unique Wecom alert integration URL for you. This URL is compatible with Wecom robot message protocol. When platforms only support Wecom robot channels, you can use this URL to receive corresponding messages.
8870
+
8871
+ #### Push Mode
8872
+
8873
+ By default, the system always creates new alerts for each message, but you can switch to these modes:
8874
+
8875
+ **Trigger or Close Alert Based on Rules**: In this mode, when receiving a new message, the system matches messages according to your rules and triggers new alerts or closes existing alerts based on the matching results.
8876
+
8877
+ - You need to fill in at least one **trigger** rule
8878
+ - You must set up regex extraction rules for Alert Key. The system uses this field to find historical alerts for updates or closure. **If regex extraction fails, the system will use the random to generate an Alert Key** to ensure alerts won't be lost due to configuration errors
8879
+ - You can choose whether to discard messages when none of the rules match
8880
+
8881
+ Configuration example:
8882
+
8883
+ - Receive all messages, close the alert when the message content contains **RESOLVED**, otherwise trigger a new alert
8884
+ - Extract Alert Key from messages using the rule **/(.*)/**.
8885
+
8886
+
8887
+ ### Notes
8888
+ - Wecom alert integration URL only supports Text and Markdown message types; other message types cannot be received
8889
+ - Flashduty will generate a default alert title: "Wecom robot Alert , If you need to change the title, you can customize it using the [alert pipeline](https://docs.flashcat.cloud/en/flashduty/alert-pipelines)"
8890
+
8891
+ ## Severity Mapping
8892
+ ---
8893
+
8894
+ Currently, all alerts pushed to Flashduty through the Wecom integration are set to Warning severity. However, you can customize the severity using the [alert pipeline](https://docs.flashcat.cloud/en/flashduty/alert-pipelines).`,ServiceDeskPlusSync:`---
8895
+ title: "ServiceDesk Plus Sync"
8896
+ description: "Sync incidents with ServiceDesk Plus requests through ServiceDesk Plus sync webhook."
8897
+ date: "2025-05-19T10:00:00+08:00"
8898
+ url: "https://docs.flashcat.cloud/en/flashduty/servicedesk-plus-sync"
8899
+ ---
8900
+
8901
+ Through ServiceDesk Plus sync webhook, Flashduty incidents are associated and synchronized with ServiceDesk Plus requests to achieve integration between Flashduty and ServiceDesk Plus.
8902
+
8903
+ This integration is based on the official v3 API protocol provided by ServiceDesk Plus and is compatible with its interface specifications. If you are using an on-premises deployment version, please confirm whether its API supports the v3 version. Additionally, there are differences in authorization configuration between the cloud and on-premises of ServiceDesk Plus. Please refer to the relevant documentation for specific configurations.
8904
+
8905
+ - [Cloud](#cloud-version)
8906
+ - [On-premises](#on-premises)
8907
+
8908
+ When configuring this integration, if you choose the sync direction as From_ServiceDesk_Plus, you can skip the authorization-related configuration and directly refer to [Configure Sync](#configure-sync).
8909
+
8910
+ ## Cloud <span id="cloud-version"></span>
8911
+
8912
+ ### In ServiceDesk Plus
8913
+ #### Step 1 Create Authorization Application
8914
+ Please select the corresponding Developer Console address according to your ServiceDesk Plus service region: [Data Centres](https://www.manageengine.com/products/service-desk/sdpod-v3-api/getting-started/data-centers.html)
8915
+
8916
+ 1. Log in to the Developer Console, select \`Self Client\` type Client and create it.
8917
+ 2. Click \`Generate Code\`, fill in the \`Scope\`: **SDPOnDemand.requests.ALL,SDPOnDemand.setup.READ,SDPOnDemand.custommodule.READ**. Refer to [official documentation](https://www.manageengine.com/products/service-desk/sdpod-v3-api/getting-started/oauth-2.0.html#scopes) for permission scope.
8918
+
8919
+ 3. Select the maximum **10 minutes** for \`Time Duration\`, fill in the \`Scope Description\` as customizable, for example: For Flashduty sync use, and create.
8920
+ 4. Copy the generated **Code**, **Client ID** and **Client Secret** for backup.
8921
+
8922
+ ![2025-09-24-14-59-28](https://docs-cdn.flashcat.cloud/images/png/793fa15bd6e919e81fd3baaaab591275.png)
8923
+ ![2025-09-24-15-00-56](https://docs-cdn.flashcat.cloud/images/png/3b1b9d7a9c4bcc93ddf4cd73e47713f5.png)
8924
+
8925
+ ###### Note: The Code is only valid for 10 minutes and can only be used once, so after obtaining the Code, please complete the [Integration Authorization](#integration-authorization) as soon as possible within the validity period.
8926
+
8927
+ ### In Flashduty
8928
+ #### Step 2 Integration Authorization <span id="integration-authorization"></span>
8929
+ Please select the corresponding API Endpoint and Accounts Server URL according to your ServiceDesk Plus service region: [Data Centres](https://www.manageengine.com/products/service-desk/sdpod-v3-api/getting-started/data-centers.html)
8930
+
8931
+ 1. Select **Cloud** for \`Platform Type\`, fill in \`API Endpoint\` and \`Accounts Server URL\`.
8932
+ 2. Fill in the \`Code\`, \`Client ID\` and \`Client Secret\` generated in the **Create Authorization Application** step into the corresponding edit boxes and click Next to complete [Integration Configuration](#integration-configuration) (if an error occurs, please re-obtain the Code or contact technical support to troubleshoot the problem).
8933
+
8934
+ ## On-premises <span id="on-premises"></span>
8935
+ ### In ServiceDesk Plus
8936
+ #### Step 1 Generate API Key
8937
+ 1. Log in to the ServiceDesk Plus console, click \`Generate API Key\` in the personal center.
8938
+ 2. Select **Never Expires** for \`Token Expiration Time\`, copy the generated **Token** for backup, and complete [Integration Authorization](#on-premises-integration-authorization).
8939
+
8940
+ ###### Note: The user who generates the API key needs to have relevant permissions, such as create/update requests, obtain template/priority/custom field lists and other permissions. If the permissions are insufficient, it will cause the integration configuration to fail. It is recommended to use an administrator role to generate.
8941
+
8942
+ ### In Flashduty
8943
+ #### Step 2 Integration Authorization <span id="on-premises-integration-authorization"></span>
8944
+ 1. Select **On-premises** for \`Platform Type\`, fill in \`API Endpoint\`.
8945
+ 2. Fill in the generated **Token** into the corresponding edit box and click Next to complete [Integration Configuration](#integration-configuration).
8946
+
8947
+
8948
+ ## General Configuration
8949
+
8950
+ ### In Flashduty
8951
+ #### Step 1 Integration Configuration <span id="integration-configuration"></span>
8952
+
8953
+ 1. **Integration Name:** Define a name for the current integration.
8954
+ 2. **Management Team:** When a management team is selected, only team members and tenant administrators can edit this integration.
8955
+ 3. **Sync Direction:**
8956
+
8957
+ - To_ServiceDesk_Plus: Sync Flashduty incidents to ServiceDesk Plus.
8958
+ - From_ServiceDesk_Plus: Sync ServiceDesk Plus requests to Flashduty.
8959
+ - Two-way: Bidirectional sync between Flashduty and ServiceDesk Plus.
8960
+
8961
+ 4. **Trigger Mode**:
8962
+ - Auto Trigger: Requires configuration of corresponding conditions, Flashduty will automatically sync incidents that meet the conditions to ServiceDesk Plus.
8963
+ - Manual Trigger: Requires manual triggering of ServiceDesk Plus sync in the More Actions section of the incident details page (the integration configuration name is the trigger name).
8964
+
8965
+ 5. **Channel:** Select the channel where this integration takes effect.
8966
+ 6. **Request Template:** Select the template to use when creating requests. If empty, the default template will be used to create the request.
8967
+ 7. **Severity Mapping:** You can choose to map the values of severity, incident labels, or custom fields to the Priority field in ServiceDesk Plus. If empty, this field will not be passed when creating requests.
8968
+ 8. **Custom Field Mapping:** You can map labels or custom fields in incidents to corresponding text fields in ServiceDesk Plus tickets to achieve automatic information filling. This feature supports syncing common context information (such as service name, instance address, metric name, etc.) to ServiceDesk Plus for subsequent troubleshooting and tracking.
8969
+ - Only supports target fields of single-line text or multi-line text type.
8970
+ - Supports extracting values from incident labels (such as service, instance) or custom attributes.
8971
+ - If the source field is empty, the target field will also remain empty and will not overwrite existing content.
8972
+
8973
+ 9. **Assignee Mapping:** When Flashduty incidents are synced to ServiceDesk Plus and need to be automatically assigned to Technician or Group, you can get the value of Flashduty incident labels as the assignee (if the corresponding assignee does not exist, it will cause sync failure, please choose carefully).
8974
+ 10. **Requester:** The requester to be specified when creating a request. This needs to be configured if the field is mandatory when creating requests.
8975
+ 11. Click \`Save\` to complete the configuration.
8976
+
8977
+ ### In ServiceDesk Plus
8978
+ #### Step 2 Configure Sync <span id="configure-sync"></span>
8979
+ To achieve synchronization of ServiceDesk Plus requests to Flashduty, please refer to this configuration item. **Note:** Different versions may have slightly different paths, but the configuration method is the same.
8980
+ ##### Create Webhook
8981
+ 1. Log in to the ServiceDesk Plus console and find the \`Setup\` configuration page.
8982
+ 2. Select \`Automation\`, then enter the \`Custom Actions\` page and select \`Webhooks\`.
8983
+ 3. Click \`New Webhook\`, fill in **to_Flashduty** for \`Webhook Name\` in the edit page.
8984
+ 4. Fill in the integration's <span class='integration_url'>push URL</span> for \`URL\`.
8985
+ 5. Select **Requests** for \`Applies to\`, select **POST** for \`Method\`, fill in **Content-Type application/json** in \`Headers\`.
8986
+ 6. Select **JSON** for \`Message Body\` Type and fill in the following content:
8987
+
8988
+ \`\`\`
8989
+ # Cloud
8990
+ {
8991
+ "subject":"\${subject}",
8992
+ "request_id":"\${id}",
8993
+ "description":"\${udf_fields.txt_destination}",
8994
+ "priority":"\${priority.name}",
8995
+ "status":"\${status.name}",
8996
+ "txt_test_field":"\${udf_fields.txt_test_field}"
8997
+
8998
+ }
8999
+ \`\`\`
9000
+
9001
+ \`\`\`
9002
+ # On-premises
9003
+ {
9004
+ "suject":"\${{request.subject}}",
9005
+ "request_id":"\${{request.id}}",
9006
+ "description":"\${{request.description}}",
9007
+ "status":"\${{request.status.name}}",
9008
+ "priority":"\${{request.priority.name}}",
9009
+ "udf_sline_301":"\${{request.udf_fields.udf_sline_301}}"
9010
+ }
9011
+
9012
+ \`\`\`
9013
+ 7. Click \`Save\` to complete the configuration.
9014
+
9015
+ ![2025-09-23-13-32-32](https://docs-cdn.flashcat.cloud/images/png/94ca1d094ed38ebcaf299364eddfd0ac.png)
9016
+
9017
+ ##### Step 3 Create Trigger
9018
+ 1. Log in to the ServiceDesk Plus console and find the \`Setup\` configuration page.
9019
+ 2. Select \`Automation\`, then enter the \`Triggers\` page and select \`Request\`.
9020
+ 3. Click \`New Trigger\`, fill in **to_Flashduty** for \`Name\` in the edit page.
9021
+ 4. Select **Request** for \`Trigger applies to\`, check **Create and Edited** for \`Execute when a request is\`.
9022
+ 5. Select **Any time** for \`Execute during\` and check **Enable Trigger**.
9023
+ 6. Select \`Without condition\` for \`Conditions\` or configure according to actual needs.
9024
+ 7. Select **Webhook** in \`Actions\` and check **to_Flashduty** channel.
9025
+ 8. Click \`Save\` to complete the configuration.
9026
+
9027
+ ![2025-09-23-13-42-20](https://docs-cdn.flashcat.cloud/images/png/9573d79763af656e0e08c5bdc3649a14.png)
9028
+
9029
+
9030
+ ## Sync Information
9031
+
9032
+ ### Form Fields
9033
+
9034
+ | ServiceDesk Plus | Flashduty | Notes |
9035
+ | ------------------- | ------------- | ----- |
9036
+ | Subject | Title | |
9037
+ | Description | Description | |
9038
+ | Status | Progress | |
9039
+ | Priority | Severity | |
9040
+ | Others | Custom Fields | |
9041
+
9042
+ ### Status Mapping
9043
+
9044
+ | ServiceDesk Plus | Flashduty | Notes |
9045
+ | ----------- | ---------- | ---------------------- |
9046
+ | Open | Trigger | |
9047
+ | In Progress | Processing | |
9048
+ | Assigned | Processing | |
9049
+ | Pending Verification | Processing | |
9050
+ | Staging | Processing | |
9051
+ | On Hold | Snoozed | Default snooze 2 hours |
9052
+ | Resolved | CLosed | |
9053
+ | Closed | CLosed | |
9054
+ | Canceled | CLosed | |
9055
+ | Rejected | CLosed | |
9056
+
9057
+
9058
+ ## FAQ
9059
+
9060
+ <details>
9061
+ <summary> Can the Scope be changed</summary>
9062
+ No, the Scope currently used is already the smallest unit. Flashduty needs to perform get/create/update operations when syncing requests with ServiceDesk Plus, and needs to obtain priority/custom field lists when configuring integration, so corresponding permission support is required.
9063
+ </details>
9064
+ `,Harbor:`---
9065
+ title: "Harbor Alert Events"
9066
+ description: "Sync Harbor alert events to Flashduty via webhook for automated alert noise reduction"
9067
+ date: "2024-07-05T10:00:00+08:00"
9068
+ url: "https://docs.flashcat.cloud/en/flashduty/volcengine-tls-integration-guide"
9069
+ ---
9070
+
9071
+ Sync Harbor alert events to Flashduty via webhook for automated alert noise reduction.
9072
+
9073
+ <div class="hide">
9074
+
9075
+ ## In Flashduty
9076
+ ---
9077
+ You can obtain an integration push URL through either of these two methods:
9078
+
9079
+ ### Using Private Integration
9080
+
9081
+ Choose this method when you don't need to route alert events to different channels - it's simpler.
9082
+
9083
+ <details>
9084
+ <summary>Expand</summary>
9085
+
9086
+ 1. Go to the Flashduty console, select **Channel**, and enter a channel's details page
9087
+ 2. Select the **Integrations** tab, click **Add Integration** to enter the integration page
9088
+ 3. Choose **Harbor** integration and click **Save** to generate a card
9089
+ 4. Click the generated card to view the **Push URL**, copy it for later use, and you're done
9090
+
9091
+ </details>
9092
+
9093
+ ### Using Shared Integration
9094
+
9095
+ Choose this method when you need to route alerts to different channels based on the alert event payload.
9096
+
9097
+ <details>
9098
+ <summary>Expand</summary>
9099
+
9100
+ 1. Go to the Flashduty console, select **Integration Center=>Alert Events** to enter the integration selection page
9101
+ 2. Select **Harbor** integration:
9102
+ - **Integration Name**: Define a name for this integration
9103
+ 3. Configure the default route and select the corresponding channel (after the integration is created, you can go to \`Route\` to configure more routing rules)
9104
+ 4. Click **Save** and copy the newly generated **push URL** for later use
9105
+ 5. Done
9106
+
9107
+ </details>
9108
+ </div>
9109
+
9110
+ ## In Harbor
9111
+ ---
9112
+
9113
+ ### Configure Webhooks
9114
+
9115
+ 1. Log in to the Harbor interface with an account that has at least project administrator privileges.
9116
+ 2. Go to \`Projects\`, select a project, and select \`Webhooks\`.
9117
+ 3. Select notify type \`HTTP\`, so the webhook will be send to a HTTP endpoint.
9118
+ 4. Select payload format as \`Default or CloudEvents\` when choose the HTTP notify type.
9119
+ 5. Select events that you want to subscribe.
9120
+ 6. Enter the alert integration's <span class='integration_url'>PUSH URL</span> in the Endpoint URL field.
9121
+ 7. Click Add to create the webhook.
9122
+
9123
+ ## Severity Mapping
9124
+ ---
9125
+
9126
+ Currently, all alerts pushed to Flashduty through the Harbor integration are set to Warning severity. However, you can customize the severity using the [alert pipeline](https://docs.flashcat.cloud/en/flashduty/alert-pipelines).
9127
+
9128
+ `,LabelMappingAPI:`Configure Label Mapping API to automatically call your external API when alert events arrive, enabling dynamic enrichment and correlation of alert information. With this feature, you can automatically attach information from external data sources such as CMDB, HR systems, and more to your alerts.
9129
+
9130
+ ## I. Overview
9131
+
9132
+ The Label Mapping API allows you to build custom external services to enrich alert labels. The workflow is as follows:
9133
+
9134
+ 1. Flashduty receives an alert event
9135
+ 2. The system sends event information and the list of expected labels to your API based on configuration
9136
+ 3. Your API queries external data sources (such as CMDB, databases, etc.)
9137
+ 4. The API returns the computed enrichment labels
9138
+ 5. Flashduty attaches the returned labels to the alert
9139
+
9140
+ <span id="ApiSpec"></span>
9141
+
9142
+ ## II. API Specification
9143
+
9144
+ ### Request Method
9145
+
9146
+ <div class="md-block">
9147
+
9148
+ POST, Content-Type:"application/json"
9149
+
9150
+ </div>
9151
+
9152
+ ### Request Payload:
9153
+
9154
+ <div class="md-block">
9155
+
9156
+ | Field | Type | Required | Description |
9157
+ | :--------: | :-------------------: | :--: | :--------- |
9158
+ | result_label_keys | []string | Yes | List of expected label keys to return, configured by users in Flashduty |
9159
+ | event | [Event](#Event) | Yes | Complete information of the current alert event |
9160
+
9161
+ <span id="Event"></span>
9162
+ **Event**:
9163
+
9164
+ | Field | Type | Required | Description |
9165
+ | :--------: | :-------------------: | :--: | :--------- |
9166
+ | account_id | int64 | Yes | Account ID |
9167
+ | channel_id | int64 | Yes | Channel ID |
9168
+ | data_source_id | int64 | Yes | Data source ID |
9169
+ | data_source_type | string | Yes | Data source type, e.g., prometheus, zabbix, etc. |
9170
+ | title | string | Yes | Alert title |
9171
+ | title_rule | string | No | Title rule |
9172
+ | description | string | No | Alert description |
9173
+ | alert_key | string | Yes | Alert unique identifier |
9174
+ | alert_id | string | Yes | Alert ID |
9175
+ | event_severity | string | Yes | Event severity, enum: Critical, Warning, Info |
9176
+ | event_status | string | Yes | Event status, enum: Critical, Warning, Info, Ok |
9177
+ | event_time | int64 | Yes | Event time, Unix timestamp in seconds |
9178
+ | labels | map[string]string | No | Alert original label key-value pairs |
9179
+ | images | []string | No | List of alert-related images |
9180
+
9181
+ </div>
9182
+
9183
+ ### Request Example
9184
+
9185
+ <div class="md-block">
9186
+
9187
+ \`\`\`json
9188
+ {
9189
+ "result_label_keys": ["owner_team", "service_tier", "host_ip"],
9190
+ "event": {
9191
+ "account_id": 1,
9192
+ "channel_id": 20,
9193
+ "data_source_id": 15,
9194
+ "data_source_type": "prometheus",
9195
+ "description": "CPU usage for instance '10.0.1.101:9100' is over 95%",
9196
+ "title": "High CPU Usage on instance 10.0.1.101:9100",
9197
+ "title_rule": "",
9198
+ "alert_key": "d41d8cd98f00b204e9800998ecf8427e",
9199
+ "alert_id": "62d6c0f6b8f1b2b3c4d5e6f7",
9200
+ "event_severity": "Critical",
9201
+ "event_status": "Critical",
9202
+ "event_time": 1678886400,
9203
+ "labels": {
9204
+ "region": "us-east-1",
9205
+ "service": "service-A",
9206
+ "env": "production",
9207
+ "instance": "10.0.1.101:9100"
9208
+ },
9209
+ "images": []
9210
+ }
9211
+ }
9212
+ \`\`\`
9213
+
9214
+ </div>
9215
+
9216
+ ### Response Specification
9217
+
9218
+ <div class="md-block">
9219
+
9220
+ **Successful Response:**
9221
+
9222
+ | Field | Type | Required | Description |
9223
+ | :--------: | :-------------------: | :--: | :--------- |
9224
+ | result_labels | map[string]string | Yes | Returned enrichment label key-value object |
9225
+
9226
+ - HTTP Status Code: \`200 OK\`
9227
+ - Response body must be a JSON object containing the \`result_labels\` field
9228
+ - Keys in \`result_labels\` must be label names specified in the request's \`result_label_keys\`
9229
+ - If a label cannot be retrieved, it **should not** be included in the response
9230
+
9231
+ **Successful Response Example:**
9232
+
9233
+ \`\`\`json
9234
+ {
9235
+ "result_labels": {
9236
+ "owner_team": "team-database",
9237
+ "service_tier": "tier-1",
9238
+ "host_ip": "10.0.1.101"
9239
+ }
9240
+ }
9241
+ \`\`\`
9242
+
9243
+ **Failure Response:**
9244
+
9245
+ | Status Code | Meaning |
9246
+ | :--------: | :--------- |
9247
+ | 404 Not Found | No data available for enrichment based on the event information |
9248
+ | 400 Bad Request | Request body format error or event object missing required fields |
9249
+ | 5xx | Unexpected internal API error (e.g., database connection failure) |
9250
+
9251
+ > **Note:** Returning \`200 OK\` status code with an empty \`result_labels: {}\` object will also be treated as "no results", but using the \`404\` status code is the more standard approach.
9252
+
9253
+ </div>
9254
+
9255
+ <span id="ServiceConfig"></span>
9256
+
9257
+ ## III. Configure Mapping Service
9258
+
9259
+ When configuring label mapping in Flashduty, you need to first create a mapping service, then reference that service in your label enrichment rules.
9260
+
9261
+ ### Mapping Service Field Description
9262
+
9263
+ <div class="md-block">
9264
+
9265
+ | Field | Type | Required | Description |
9266
+ | :--------: | :-------------------: | :--: | :--------- |
9267
+ | api_name | string | Yes | Human-readable service name for selection and reference in the UI, e.g., "CMDB Asset Query API" |
9268
+ | description | string | No | Detailed description of the service |
9269
+ | url | string | Yes | API request URL, supports template variables |
9270
+ | headers | map[string]string | No | HTTP request headers for passing custom authentication, subject to [security blacklist](#HeaderBlacklist) restrictions |
9271
+ | timeout | int | No | Request timeout (in seconds),scope: 1~3 |
9272
+ | retry_count | int | No | Number of retries after request failure, ,scope: 0~1 |
9273
+ | insecure_skip_verify | bool | No | Skip certificate verification for HTTPS requests |
9274
+ | status | string | No | Service status, e.g., enabled, disabled |
9275
+
9276
+ </div>
9277
+
9278
+ ### Label Enrichment Rule Configuration
9279
+
9280
+ When configuring label enrichment rules, you only need to focus on the following settings:
9281
+
9282
+ 1. **result_label_keys**: Specify the list of labels you expect to retrieve from the API. Flashduty will automatically combine this list with the current \`event\` object into a request body and send it to your API
9283
+ 2. **Mapping Service**: Select or configure the API service URL, Headers, and other information
9284
+
9285
+ <span id="HeaderBlacklist"></span>
9286
+
9287
+ ## IV. Header Security Constraints
9288
+
9289
+ To prevent security bypasses, request smuggling, IP spoofing, and cache poisoning, the following Headers are **prohibited** when customizing API request headers. The system gateway will automatically filter or reject requests containing these Headers.
9290
+
9291
+ <div class="md-block">
9292
+
9293
+ | Category | Blacklisted Headers | Risk Description |
9294
+ | :--- | :--- | :--- |
9295
+ | **Authentication & Authorization** | \`authorization\`, \`proxy-authorization\`, \`cookie\`, \`x-api-key\`, \`x-access-token\` | Prevents credential leakage or unauthorized hijacking of existing authentication contexts |
9296
+ | **IP & Geolocation Spoofing** | \`x-forwarded-for\`, \`x-real-ip\`, \`true-client-ip\`, \`x-client-ip\` | Prevents clients from spoofing source IP to bypass rate limits or allowlists/blocklists |
9297
+ | **Host & Routing Manipulation** | \`host\`, \`x-forwarded-host\`, \`x-forwarded-proto\`, \`x-internal-id\`, \`x-user-id\` | Prevents Host injection attacks, redirect loops, or spoofing internal system IDs |
9298
+ | **Protocol & Request Smuggling** | \`transfer-encoding\`, \`upgrade\`, \`connection\` | Prevents request smuggling attacks exploiting HTTP protocol differences |
9299
+
9300
+ </div>
9301
+
9302
+ ### Header Best Practices
9303
+
9304
+ 1. **Allowlist Mode**: It is recommended to only allow custom Headers prefixed with \`X-Custom-\` or \`X-Enrich-\`
9305
+ 2. **Length Limits**: The Key or Value length of a single Header should not exceed 1024 bytes
9306
+ 3. **Format Validation**: Header Values must not contain line breaks (\`\\r\`, \`\\n\`) to prevent Header injection attacks
9307
+
9308
+ ## V. Best Practices
9309
+
9310
+ 1. **Performance First:** This API is on the critical path of alert processing and must ensure low latency. Queries to external data sources should be as fast as possible, and implementing caching is recommended.
9311
+
9312
+ 2. **Clear Error Handling:** Make good use of HTTP status codes (especially \`404\`) to convey clear execution results.
9313
+
9314
+ 3. **Idempotency:** The API design should be as idempotent as possible. Multiple calls for the same \`event\` should return the same result.
9315
+
9316
+ 4. **Security:** The API must be protected through authentication and authorization mechanisms. Using custom Headers (e.g., \`X-Custom-Auth\`) for passing authentication information is recommended.
9317
+
9318
+ ## VI. FAQ
9319
+
9320
+ 1. **Is there a response timeout for the service?**
9321
+
9322
+ - The service must respond within the configured timeout period; exceeding this is considered a failure
9323
+
9324
+ 2. **What happens if the API returns a failure?**
9325
+
9326
+ - The alert will be processed normally, but no enrichment labels will be attached
9327
+ - Based on the configured retry count, the system may retry the request
9328
+
9329
+ 3. **Can result_label_keys be changed dynamically?**
9330
+
9331
+ - Yes, you can modify the list of expected labels in Flashduty at any time without modifying the API code
9332
+ `};n.FlashDocsEn=h})(window);