flashduty-knowledge-base 1.1.0 → 1.1.1

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/en.cjs CHANGED
@@ -1,115 +1,131 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=`---
2
- title: "Standard Alert Integration Guide"
3
- description: "Push alerts from your own system to Flashduty using standard protocols to achieve automated alert noise reduction."
4
- date: "2024-05-11T10:00:00+08:00"
2
+ title: "Standard Alert Event Integration Guide"
3
+ description: "Push alert events from your own system to Flashduty through standard protocols to achieve automated alert noise reduction."
4
+ date: "2025-01-20T10:00:00+08:00"
5
5
  url: "https://docs.flashcat.cloud/en/flashduty/custom-alert-integration-guide"
6
6
  ---
7
7
 
8
- Push alerts from your own system to Flashduty using standard protocols to achieve automated alert noise reduction.
8
+ Push alert events from your own system to Flashduty through standard protocols to achieve automated alert noise reduction.
9
9
 
10
10
  :::tips
11
- Flashduty has already adapted webhook protocols for most common alert systems. For these systems, you should first use their corresponding integrations for simplicity. This integration provides a standard HTTP interface that requires development adaptation. The advantage is that you can push any alerts you want to handle through on-call.
11
+ Flashduty has already adapted webhook protocols for most common alert systems. For these systems, you should first use the corresponding integration for simplicity. This integration provides a standard HTTP interface that requires your development for adaptation. The advantage is that you can push any alert events you want to handle through on-call.
12
12
  :::
13
13
 
14
- <div class="hide">
15
-
16
14
  ## Steps
17
15
  ---
18
16
 
19
17
  ### In Flashduty
20
18
 
21
- You can obtain a push URL through either of these two methods:
19
+ You can obtain an integration push URL through either of the following two methods:
22
20
 
23
- #### Using Private Integration
21
+ #### Using Dedicated Integration
24
22
 
25
- Choose this method when you don't need to route alerts to different channels. This is the simpler option.
23
+ When you don't need to route alert events to different collaboration spaces, this method is preferred as it's simpler.
26
24
 
27
25
  <details>
28
26
  <summary>Expand</summary>
29
27
 
30
- 1. Go to the Flashduty console, select **Channel**, and enter a channel's details page
31
- 2. Select the **Integration** tab, click **Add Integration**, and enter the integration page
32
- 3. Choose **Standard Alert** integration and click **Save** to generate a card
33
- 4. Click the generated card to view the **push URL**, copy it for later use, and you're done
28
+ 1. Enter the Flashduty console, select **Collaboration Space**, and enter the details page of a space
29
+ 2. Select the **Integrations** tab, click **Add Integration**, and enter the add integration page
30
+ 3. Select **Standard Alert Event** integration, click **Save** to generate a card
31
+ 4. Click the generated card to view the **Push URL**, copy it for later use, and you're done
34
32
 
35
33
  </details>
36
34
 
37
35
  #### Using Shared Integration
38
36
 
39
- Choose this method when you need to route alerts to different channels based on the alert payload information.
37
+ When you need to route alert events to different collaboration spaces based on the alert event's Payload information, this method is preferred.
40
38
 
41
39
  <details>
42
40
  <summary>Expand</summary>
43
41
 
44
- 1. Go to the Flashduty console, select **Integration Center=>Alerts** to enter the integration selection page
45
- 2. Select **Standard Alert** integration:
46
- - **Integration Name**: Define a name for this integration
47
- 3. Click **Save** and copy the newly generated **push URL** for later use
48
- 4. Click **Create Route** to configure routing rules for the integration. You can match different alerts to different channels based on conditions, or set a default channel as a fallback and adjust as needed later
42
+ 1. Enter the Flashduty console, select **Integration Center => Alert Events** to enter the integration selection page
43
+ 2. Select **Standard Alert Event** integration:
44
+ - **Integration Name**: Define a name for the current integration
45
+ 3. Click **Save** and copy the newly generated **Push URL** on the current page for later use
46
+ 4. Click **Create Route** to configure routing rules for the integration. You can match different alerts to different collaboration spaces based on conditions, or set a default collaboration space as a fallback, and adjust as needed later
49
47
  5. Complete
50
48
 
51
49
  </details>
52
- </div>
53
50
 
54
51
  ## I. Request Description
52
+ ---
55
53
 
56
54
  ### Request Method
57
55
 
56
+ <div class="md-block">
57
+
58
58
  POST, Content-Type:"application/json"
59
59
 
60
+ </div>
61
+
60
62
  ### Request Parameters:
61
63
 
62
- QueryString must include the integration_key parameter for access control.
64
+ <div class="md-block">
63
65
 
64
- JsonBody parameters are as follows:
66
+ #### Headers:
67
+ Field|Required|Type|Description
68
+ :-:|:-:|:-:|:---
69
+ | Content-Type | Yes | string | Fixed value: \`application/json\`
65
70
 
66
- | Field | Required | Type | Description |
67
- | :----------: | :------: | :----: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
68
- | event_status | Yes | string | Alert event status, enumerated values: Critical, Warning, Info, Ok |
69
- | alert_key | Yes | string | Event grouping basis, different alert events are grouped into one alert based on this field and time window |
70
- | title_rule | No | string | Alert title generation rule, in the form of \`$a::b::$c\`, substrings are separated by \`::\`; each substring can be a fixed string or a variable prefixed with \`$\`. Variable content will be extracted from the labels parameter, error if not found. By default, the system will generate rules by extracting service, cluster, resource, and check tags from the labels field |
71
- | description | No | string | Alert description, no more than 2048 characters |
72
- | labels | No | map | Alert label collection, key is the label name, value is the label value. Labels are event descriptions, crucial for subsequent correlation and noise reduction. 1. Label keys and values are case-sensitive strings. 2. Label keys should not exceed 128 characters. 3. Maximum 50 labels allowed. \`Label content reference\` [Best Practices](#Best-Practices) |
71
+ #### Query Strings:
72
+ Field|Required|Type|Description
73
+ :-:|:-:|:-:|:---
74
+ | integration_key | Yes | string | Integration key for access control. Obtained after adding integration.
75
+
76
+ #### Payload:
73
77
 
78
+ Field|Required|Type|Description
79
+ :-:|:-:|:-:|:---
80
+ | title_rule | Yes | string | Alert title, no more than \`512\` characters, will be truncated if exceeded.<br><br>Supports dynamic title generation based on alert content, see [Customizing Incidents](https://docs.flashcat.cloud/en/flashduty/customize-incident-attrs) for generation rules.
81
+ | event_status | Yes | string | Alert status.<br><br>Enumerated values (case-sensitive): *Critical*, *Warning*, *Info*, *Ok*.<br><br>When specified as Ok, it means automatic recovery of the alert.
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
+ | description | No | string | Alert description, no more than \`2048\` characters, will be truncated if exceeded.
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
+
74
86
  </div>
75
87
 
76
88
  ### Response
77
89
 
78
- <div class="md-block">
79
-
80
- Body:
81
-
82
- Parameter|Required|Type|Description
83
- ----------|---|---|---
84
- request_id|Yes|string|Request trace id for issue tracking
90
+ Field Name|Required|Type|Description
91
+ :-:|:-:|:-:|:---
92
+ request_id|Yes|string|Request ID for trace tracking
85
93
  error|No|[Error](#Error)|Error description, returned only when an error occurs
94
+ data|No|[Data](#Data)|Report information
95
+
96
+ <span id="Data"></span>
97
+ Data:
98
+
99
+ | Field Name | Required | Type | Description |
100
+ :-:|:-:|:-:|:---
101
+ | alert_key | No | string | Alert identifier, can be used to report recovery events. If you specified an alert_key when reporting the event, this value remains unchanged. Otherwise, it's automatically generated by the system. |
86
102
 
87
103
  <span id="Error"></span>
88
104
  Error:
89
105
 
90
- | Parameter | Optional | Type | Description |
91
- | --------- | -------- | ------ | --------------- |
92
- | code | Yes | string | Error code |
93
- | message | Yes | string | Error message |
106
+ | Field Name | Required | Type | Description |
107
+ :-:|:-:|:-:|:---
108
+ | code | Yes | string | Error code, see [Code](#Code) for enumerated values |
109
+ | message | No | string | Error description |
94
110
 
95
111
  <span id="Code"></span>
96
112
  Code:
97
113
 
98
- | Error Code | HTTP Status | Description |
99
- | -------------------- | ----------- | -------------------------------------------------- |
100
- | InvalidParameter | 400 | Parameter error |
101
- | InvalidContentType | 400 | Content-Type not supported |
102
- | MethodNotAllowed | 400 | HTTP method not supported |
103
- | Unauthorized | 401 | Login authentication failed |
104
- | AccessDenied | 403 | Permission authentication failed |
105
- | RequestTooFrequently | 429 | Request too frequent |
106
- | RouteNotFound | 404 | Request Method+Path not matched |
107
- | ResourceNotFound | 400 | Account resource not purchased, proceed to billing |
108
- | InternalError | 500 | Internal or unknown error |
114
+ | Error Code | HTTP Status | Description |
115
+ | :-:|:-:| ------------------ |
116
+ | InvalidParameter | 400 | Parameter error |
117
+ | InvalidContentType | 400 | Content-Type not supported |
118
+ | MethodNotAllowed | 400 | HTTP Method not supported |
119
+ | Unauthorized | 401 | Login authentication failed |
120
+ | AccessDenied | 403 | Permission authentication failed |
121
+ | RequestTooFrequently | 429 | Request too frequent |
122
+ | RouteNotFound | 404 | Request Method+Path not matched |
123
+ | ResourceNotFound | 400 | Account hasn't purchased resources, please go to the cost center to place an order |
124
+ | NoLicense | 400 | Account has insufficient subscription licenses, please upgrade or purchase subscription in the cost center |
125
+ | InternalError | 500 | Internal or unknown error |
109
126
 
110
- </div>
111
-
112
- ### Request Example
127
+ ### II. Request Example
128
+ ---
113
129
 
114
130
  Request:
115
131
 
@@ -118,9 +134,7 @@ curl -X POST '{api_host}/event/push/alert/standard?integration_key={integration_
118
134
  -H 'Content-Type: application/json' \\
119
135
  -d '{
120
136
  "event_status": "Warning",
121
- "alert_key": "asdfjl1234asdf2s",
122
- "description": "cpu idle low than 20%",
123
- "title_rule": "$cluster::$resource::$check",
137
+ "title_rule": "cpu idle low than 20%",
124
138
  "labels": {
125
139
  "service": "engine",
126
140
  "cluster":"nj",
@@ -131,15 +145,18 @@ curl -X POST '{api_host}/event/push/alert/standard?integration_key={integration_
131
145
  }' -v
132
146
  \`\`\`
133
147
 
134
- Successful response:
148
+ Successful Response:
135
149
 
136
150
  \`\`\`
137
151
  {
138
- "request_id": "0ace00116215ab4ca0ec5244b8fc54b0"
152
+ "request_id": "0ace00116215ab4ca0ec5244b8fc54b0",
153
+ "data": {
154
+ "alert_key": "9qJ798NJoXS4UMVB5SHsNj"
155
+ }
139
156
  }
140
157
  \`\`\`
141
158
 
142
- Failed response:
159
+ Failed Response:
143
160
 
144
161
  \`\`\`
145
162
  {
@@ -151,20 +168,49 @@ Failed response:
151
168
  }
152
169
  \`\`\`
153
170
 
154
- <span id="Best-Practices"></span>
155
-
156
- ## II. Best Practices
171
+ ## III. Best Practices <span id="best-practices"></span>
172
+ ---
157
173
 
158
- 1. Send events to Flashcat Cloud when alert status changes or labels are updated
174
+ 1. Send events to Flashduty when alert status changes
159
175
  2. When an alert recovers, send an event with status Ok to close the alert. Otherwise, the alert will remain open. If your alert system doesn't have recovery events, we recommend manually sending recovery events
160
- 3. Labels are event descriptions. You should enrich label content as much as possible (specified when sending or generated through enrichment rules), such as:
161
- - Alert source information: host, cluster, check, or metric
162
- - Alert ownership information: team, owner
163
- - Alert category information: class (api, db, net)
164
- - Alert details link for jumping to the alert system
165
- 4. alert_key is used to group different alert events into one alert. For example, when a host's cpu.idle drops below threshold, escalates, and recovers, you should send 3 events with the same alert_key, which will be grouped into one alert
166
- 5. title_rule is used to generate alert display titles. It's recommended to include the source system alert name (commonly defined as rule_name or check) and add cluster, host, and other information as auxiliary reminders
167
- `,t=`---
176
+ 3. Labels are event descriptions, and label content should be as rich as possible (specified when sending, or generated through enrichment rules), such as:
177
+ - Alert source, like host, cluster, check, or metric
178
+ - Alert ownership information, like team, owner
179
+ - Alert category information, like class (api, db, net)
180
+
181
+ ## IV. FAQ
182
+ ---
183
+
184
+ <details>
185
+ <summary>Why haven't I received alerts in Flashduty?</summary>
186
+
187
+ #### In Flashduty
188
+
189
+ 1. Check if the integration shows **Latest Event Time**? If not, it means Flashduty hasn't received the push, prioritize checking your system.
190
+ 2. If you're using **Shared Integration**, first confirm if you've configured **Routing Rules**. Without routing rules, the system will directly reject new pushes as there's no collaboration space to handle your alerts. In this case, simply configure routing rules to your desired space.
191
+
192
+ #### In Your System
193
+
194
+ 1. Confirm that your request URL exactly matches the URL in the integration details.
195
+ 2. Confirm that your service can access the external domain api.flashcat.cloud. If not, you need to enable external network access for the server or specifically for Flashduty's domain.
196
+ 3. Print Flashduty service's response to check for clear information.
197
+
198
+ If you still can't find the root cause after these steps, please contact us with the **request_id** from the request response.
199
+
200
+ </details>
201
+
202
+ <details>
203
+ <summary>Why was the push request successful but no new alerts or incidents were generated?</summary>
204
+
205
+ Flashduty uses a 2-layer noise reduction mechanism:
206
+
207
+ 1. First, it checks for duplicate alert events. If your pushed event is identical to a previously pushed event, the new event will be discarded.
208
+ 2. If the new event's status and description match the status, title, and description of the last event of its corresponding alert, the new event will be discarded while updating the alert's attributes.
209
+ 3. The new event might be discarded due to matching exclusion, discard, suppression, or silence rules.
210
+ 4. When a new event triggers a new alert, the system enters the second layer of noise reduction check, determining if the new alert can be merged into an active incident. If possible, it will only merge into the existing incident without generating a new one.
211
+
212
+ For more information, please refer to [Alert Noise Reduction](https://docs.flashcat.cloud/en/flashduty/what-is-noise-reduction).
213
+ </details> `,t=`---
168
214
  title: "Email Integration"
169
215
  description: "Generate a unique email address in Flashduty to synchronize alert triggers and recoveries through email"
170
216
  date: "2024-05-11T10:00:00+08:00"
@@ -423,7 +469,7 @@ Nightingale/Flashcat to Flashduty alert severity mapping:
423
469
 
424
470
  </details>
425
471
 
426
- `,o=`---
472
+ `,i=`---
427
473
  title: "Prometheus Integration Guide"
428
474
  description: "Push Prometheus alert events to Flashduty through AlertManager using webhooks. When an alert is triggered, it sends a trigger event to Flashduty, and when the alert recovers, it sends a recovery event."
429
475
  date: "2024-05-11T10:00:00+08:00"
@@ -605,7 +651,7 @@ Prometheus to Flashduty severity mapping:
605
651
 
606
652
 
607
653
 
608
- `,i=`---
654
+ `,o=`---
609
655
  title: "Grafana Integration"
610
656
  description: "Sync Grafana alert events to Flashduty via webhook to achieve automated alert noise reduction."
611
657
  date: "2024-05-11T10:00:00+08:00"
@@ -4005,7 +4051,7 @@ Choose this method when you need to route alerts to different channels based on
4005
4051
  |Notice|Info|Info|
4006
4052
 
4007
4053
  </div>
4008
- `,P=`---
4054
+ `,N=`---
4009
4055
  title: "Volcengine Log Service (TLS) Alert Events"
4010
4056
  description: "Sync Volcengine Log Service (TLS) alert events to Flashduty via webhook for automated alert noise reduction"
4011
4057
  date: "2024-07-05T10:00:00+08:00"
@@ -4142,7 +4188,7 @@ Choose this method when you need to route alerts to different channels based on
4142
4188
  </div>
4143
4189
 
4144
4190
  </div>
4145
- `,N=`---
4191
+ `,P=`---
4146
4192
  title: "OpManager Alert Events"
4147
4193
  description: "Sync OpManager alert events to Flashduty via webhook for automated alert noise reduction"
4148
4194
  date: "2024-07-05T10:00:00+08:00"
@@ -6467,4 +6513,4 @@ If custom content is not set, the system default template will be used for notif
6467
6513
  As shown below:
6468
6514
  <img src="https://download.flashcat.cloud/flashduty/doc/en/fd/template-mail-1.png" width="800">
6469
6515
 
6470
- `;exports.AWSCW=e;exports.AWSEventBridge=A;exports.AlertWebhook=z;exports.AliyunARMS=l;exports.AliyunCm=c;exports.AliyunCmEvent=d;exports.AliyunSLS=e;exports.AppDynamics=T;exports.AzureMonitor=h;exports.BaiDuBCM=u;exports.CustomAction=Z;exports.CustomAlert=n;exports.CustomChange=q;exports.Dingtalk=$;exports.Dynatrace=L;exports.Email=t;exports.GoogleCM=x;exports.Grafana=i;exports.Graylog=k;exports.Guance=G;exports.HuaWeiCES=g;exports.HuaweiyunLTS=F;exports.IncidentWebhook=K;exports.InfluxDB=p;exports.Jiankongbao=_;exports.Jira=O;exports.Lark=j;exports.Meraki=M;exports.MicrosoftTeams=V;exports.N9e=a;exports.OceanBase=C;exports.OpManager=N;exports.OpenFalcon=m;exports.PagerDuty=f;exports.Prometheus=o;exports.Sentry=S;exports.Skywalking=I;exports.Slack=B;exports.SolarWinds=U;exports.Splunk=R;exports.StateCloud=W;exports.Templates=J;exports.TencentBK=y;exports.TencentCLS=v;exports.TencentCm=b;exports.TencentEb=w;exports.UptimeKuma=r;exports.VolcEngineEvent=D;exports.VolcEngineMetric=E;exports.VolcEngineTLS=P;exports.Wecom=H;exports.Zabbix=s;exports.Zilliz=Y;
6516
+ `;exports.AWSCW=e;exports.AWSEventBridge=A;exports.AlertWebhook=z;exports.AliyunARMS=l;exports.AliyunCm=c;exports.AliyunCmEvent=d;exports.AliyunSLS=e;exports.AppDynamics=T;exports.AzureMonitor=h;exports.BaiDuBCM=u;exports.CustomAction=Z;exports.CustomAlert=n;exports.CustomChange=q;exports.Dingtalk=$;exports.Dynatrace=L;exports.Email=t;exports.GoogleCM=x;exports.Grafana=o;exports.Graylog=k;exports.Guance=G;exports.HuaWeiCES=g;exports.HuaweiyunLTS=F;exports.IncidentWebhook=K;exports.InfluxDB=p;exports.Jiankongbao=_;exports.Jira=O;exports.Lark=j;exports.Meraki=M;exports.MicrosoftTeams=V;exports.N9e=a;exports.OceanBase=C;exports.OpManager=P;exports.OpenFalcon=m;exports.PagerDuty=f;exports.Prometheus=i;exports.Sentry=S;exports.Skywalking=I;exports.Slack=B;exports.SolarWinds=U;exports.Splunk=R;exports.StateCloud=W;exports.Templates=J;exports.TencentBK=y;exports.TencentCLS=v;exports.TencentCm=b;exports.TencentEb=w;exports.UptimeKuma=r;exports.VolcEngineEvent=D;exports.VolcEngineMetric=E;exports.VolcEngineTLS=N;exports.Wecom=H;exports.Zabbix=s;exports.Zilliz=Y;
package/dist/en.js CHANGED
@@ -1,115 +1,131 @@
1
1
  const e = `---
2
- title: "Standard Alert Integration Guide"
3
- description: "Push alerts from your own system to Flashduty using standard protocols to achieve automated alert noise reduction."
4
- date: "2024-05-11T10:00:00+08:00"
2
+ title: "Standard Alert Event Integration Guide"
3
+ description: "Push alert events from your own system to Flashduty through standard protocols to achieve automated alert noise reduction."
4
+ date: "2025-01-20T10:00:00+08:00"
5
5
  url: "https://docs.flashcat.cloud/en/flashduty/custom-alert-integration-guide"
6
6
  ---
7
7
 
8
- Push alerts from your own system to Flashduty using standard protocols to achieve automated alert noise reduction.
8
+ Push alert events from your own system to Flashduty through standard protocols to achieve automated alert noise reduction.
9
9
 
10
10
  :::tips
11
- Flashduty has already adapted webhook protocols for most common alert systems. For these systems, you should first use their corresponding integrations for simplicity. This integration provides a standard HTTP interface that requires development adaptation. The advantage is that you can push any alerts you want to handle through on-call.
11
+ Flashduty has already adapted webhook protocols for most common alert systems. For these systems, you should first use the corresponding integration for simplicity. This integration provides a standard HTTP interface that requires your development for adaptation. The advantage is that you can push any alert events you want to handle through on-call.
12
12
  :::
13
13
 
14
- <div class="hide">
15
-
16
14
  ## Steps
17
15
  ---
18
16
 
19
17
  ### In Flashduty
20
18
 
21
- You can obtain a push URL through either of these two methods:
19
+ You can obtain an integration push URL through either of the following two methods:
22
20
 
23
- #### Using Private Integration
21
+ #### Using Dedicated Integration
24
22
 
25
- Choose this method when you don't need to route alerts to different channels. This is the simpler option.
23
+ When you don't need to route alert events to different collaboration spaces, this method is preferred as it's simpler.
26
24
 
27
25
  <details>
28
26
  <summary>Expand</summary>
29
27
 
30
- 1. Go to the Flashduty console, select **Channel**, and enter a channel's details page
31
- 2. Select the **Integration** tab, click **Add Integration**, and enter the integration page
32
- 3. Choose **Standard Alert** integration and click **Save** to generate a card
33
- 4. Click the generated card to view the **push URL**, copy it for later use, and you're done
28
+ 1. Enter the Flashduty console, select **Collaboration Space**, and enter the details page of a space
29
+ 2. Select the **Integrations** tab, click **Add Integration**, and enter the add integration page
30
+ 3. Select **Standard Alert Event** integration, click **Save** to generate a card
31
+ 4. Click the generated card to view the **Push URL**, copy it for later use, and you're done
34
32
 
35
33
  </details>
36
34
 
37
35
  #### Using Shared Integration
38
36
 
39
- Choose this method when you need to route alerts to different channels based on the alert payload information.
37
+ When you need to route alert events to different collaboration spaces based on the alert event's Payload information, this method is preferred.
40
38
 
41
39
  <details>
42
40
  <summary>Expand</summary>
43
41
 
44
- 1. Go to the Flashduty console, select **Integration Center=>Alerts** to enter the integration selection page
45
- 2. Select **Standard Alert** integration:
46
- - **Integration Name**: Define a name for this integration
47
- 3. Click **Save** and copy the newly generated **push URL** for later use
48
- 4. Click **Create Route** to configure routing rules for the integration. You can match different alerts to different channels based on conditions, or set a default channel as a fallback and adjust as needed later
42
+ 1. Enter the Flashduty console, select **Integration Center => Alert Events** to enter the integration selection page
43
+ 2. Select **Standard Alert Event** integration:
44
+ - **Integration Name**: Define a name for the current integration
45
+ 3. Click **Save** and copy the newly generated **Push URL** on the current page for later use
46
+ 4. Click **Create Route** to configure routing rules for the integration. You can match different alerts to different collaboration spaces based on conditions, or set a default collaboration space as a fallback, and adjust as needed later
49
47
  5. Complete
50
48
 
51
49
  </details>
52
- </div>
53
50
 
54
51
  ## I. Request Description
52
+ ---
55
53
 
56
54
  ### Request Method
57
55
 
56
+ <div class="md-block">
57
+
58
58
  POST, Content-Type:"application/json"
59
59
 
60
+ </div>
61
+
60
62
  ### Request Parameters:
61
63
 
62
- QueryString must include the integration_key parameter for access control.
64
+ <div class="md-block">
63
65
 
64
- JsonBody parameters are as follows:
66
+ #### Headers:
67
+ Field|Required|Type|Description
68
+ :-:|:-:|:-:|:---
69
+ | Content-Type | Yes | string | Fixed value: \`application/json\`
65
70
 
66
- | Field | Required | Type | Description |
67
- | :----------: | :------: | :----: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
68
- | event_status | Yes | string | Alert event status, enumerated values: Critical, Warning, Info, Ok |
69
- | alert_key | Yes | string | Event grouping basis, different alert events are grouped into one alert based on this field and time window |
70
- | title_rule | No | string | Alert title generation rule, in the form of \`$a::b::$c\`, substrings are separated by \`::\`; each substring can be a fixed string or a variable prefixed with \`$\`. Variable content will be extracted from the labels parameter, error if not found. By default, the system will generate rules by extracting service, cluster, resource, and check tags from the labels field |
71
- | description | No | string | Alert description, no more than 2048 characters |
72
- | labels | No | map | Alert label collection, key is the label name, value is the label value. Labels are event descriptions, crucial for subsequent correlation and noise reduction. 1. Label keys and values are case-sensitive strings. 2. Label keys should not exceed 128 characters. 3. Maximum 50 labels allowed. \`Label content reference\` [Best Practices](#Best-Practices) |
71
+ #### Query Strings:
72
+ Field|Required|Type|Description
73
+ :-:|:-:|:-:|:---
74
+ | integration_key | Yes | string | Integration key for access control. Obtained after adding integration.
75
+
76
+ #### Payload:
73
77
 
78
+ Field|Required|Type|Description
79
+ :-:|:-:|:-:|:---
80
+ | title_rule | Yes | string | Alert title, no more than \`512\` characters, will be truncated if exceeded.<br><br>Supports dynamic title generation based on alert content, see [Customizing Incidents](https://docs.flashcat.cloud/en/flashduty/customize-incident-attrs) for generation rules.
81
+ | event_status | Yes | string | Alert status.<br><br>Enumerated values (case-sensitive): *Critical*, *Warning*, *Info*, *Ok*.<br><br>When specified as Ok, it means automatic recovery of the alert.
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
+ | description | No | string | Alert description, no more than \`2048\` characters, will be truncated if exceeded.
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
+
74
86
  </div>
75
87
 
76
88
  ### Response
77
89
 
78
- <div class="md-block">
79
-
80
- Body:
81
-
82
- Parameter|Required|Type|Description
83
- ----------|---|---|---
84
- request_id|Yes|string|Request trace id for issue tracking
90
+ Field Name|Required|Type|Description
91
+ :-:|:-:|:-:|:---
92
+ request_id|Yes|string|Request ID for trace tracking
85
93
  error|No|[Error](#Error)|Error description, returned only when an error occurs
94
+ data|No|[Data](#Data)|Report information
95
+
96
+ <span id="Data"></span>
97
+ Data:
98
+
99
+ | Field Name | Required | Type | Description |
100
+ :-:|:-:|:-:|:---
101
+ | alert_key | No | string | Alert identifier, can be used to report recovery events. If you specified an alert_key when reporting the event, this value remains unchanged. Otherwise, it's automatically generated by the system. |
86
102
 
87
103
  <span id="Error"></span>
88
104
  Error:
89
105
 
90
- | Parameter | Optional | Type | Description |
91
- | --------- | -------- | ------ | --------------- |
92
- | code | Yes | string | Error code |
93
- | message | Yes | string | Error message |
106
+ | Field Name | Required | Type | Description |
107
+ :-:|:-:|:-:|:---
108
+ | code | Yes | string | Error code, see [Code](#Code) for enumerated values |
109
+ | message | No | string | Error description |
94
110
 
95
111
  <span id="Code"></span>
96
112
  Code:
97
113
 
98
- | Error Code | HTTP Status | Description |
99
- | -------------------- | ----------- | -------------------------------------------------- |
100
- | InvalidParameter | 400 | Parameter error |
101
- | InvalidContentType | 400 | Content-Type not supported |
102
- | MethodNotAllowed | 400 | HTTP method not supported |
103
- | Unauthorized | 401 | Login authentication failed |
104
- | AccessDenied | 403 | Permission authentication failed |
105
- | RequestTooFrequently | 429 | Request too frequent |
106
- | RouteNotFound | 404 | Request Method+Path not matched |
107
- | ResourceNotFound | 400 | Account resource not purchased, proceed to billing |
108
- | InternalError | 500 | Internal or unknown error |
114
+ | Error Code | HTTP Status | Description |
115
+ | :-:|:-:| ------------------ |
116
+ | InvalidParameter | 400 | Parameter error |
117
+ | InvalidContentType | 400 | Content-Type not supported |
118
+ | MethodNotAllowed | 400 | HTTP Method not supported |
119
+ | Unauthorized | 401 | Login authentication failed |
120
+ | AccessDenied | 403 | Permission authentication failed |
121
+ | RequestTooFrequently | 429 | Request too frequent |
122
+ | RouteNotFound | 404 | Request Method+Path not matched |
123
+ | ResourceNotFound | 400 | Account hasn't purchased resources, please go to the cost center to place an order |
124
+ | NoLicense | 400 | Account has insufficient subscription licenses, please upgrade or purchase subscription in the cost center |
125
+ | InternalError | 500 | Internal or unknown error |
109
126
 
110
- </div>
111
-
112
- ### Request Example
127
+ ### II. Request Example
128
+ ---
113
129
 
114
130
  Request:
115
131
 
@@ -118,9 +134,7 @@ curl -X POST '{api_host}/event/push/alert/standard?integration_key={integration_
118
134
  -H 'Content-Type: application/json' \\
119
135
  -d '{
120
136
  "event_status": "Warning",
121
- "alert_key": "asdfjl1234asdf2s",
122
- "description": "cpu idle low than 20%",
123
- "title_rule": "$cluster::$resource::$check",
137
+ "title_rule": "cpu idle low than 20%",
124
138
  "labels": {
125
139
  "service": "engine",
126
140
  "cluster":"nj",
@@ -131,15 +145,18 @@ curl -X POST '{api_host}/event/push/alert/standard?integration_key={integration_
131
145
  }' -v
132
146
  \`\`\`
133
147
 
134
- Successful response:
148
+ Successful Response:
135
149
 
136
150
  \`\`\`
137
151
  {
138
- "request_id": "0ace00116215ab4ca0ec5244b8fc54b0"
152
+ "request_id": "0ace00116215ab4ca0ec5244b8fc54b0",
153
+ "data": {
154
+ "alert_key": "9qJ798NJoXS4UMVB5SHsNj"
155
+ }
139
156
  }
140
157
  \`\`\`
141
158
 
142
- Failed response:
159
+ Failed Response:
143
160
 
144
161
  \`\`\`
145
162
  {
@@ -151,20 +168,49 @@ Failed response:
151
168
  }
152
169
  \`\`\`
153
170
 
154
- <span id="Best-Practices"></span>
155
-
156
- ## II. Best Practices
171
+ ## III. Best Practices <span id="best-practices"></span>
172
+ ---
157
173
 
158
- 1. Send events to Flashcat Cloud when alert status changes or labels are updated
174
+ 1. Send events to Flashduty when alert status changes
159
175
  2. When an alert recovers, send an event with status Ok to close the alert. Otherwise, the alert will remain open. If your alert system doesn't have recovery events, we recommend manually sending recovery events
160
- 3. Labels are event descriptions. You should enrich label content as much as possible (specified when sending or generated through enrichment rules), such as:
161
- - Alert source information: host, cluster, check, or metric
162
- - Alert ownership information: team, owner
163
- - Alert category information: class (api, db, net)
164
- - Alert details link for jumping to the alert system
165
- 4. alert_key is used to group different alert events into one alert. For example, when a host's cpu.idle drops below threshold, escalates, and recovers, you should send 3 events with the same alert_key, which will be grouped into one alert
166
- 5. title_rule is used to generate alert display titles. It's recommended to include the source system alert name (commonly defined as rule_name or check) and add cluster, host, and other information as auxiliary reminders
167
- `, n = `---
176
+ 3. Labels are event descriptions, and label content should be as rich as possible (specified when sending, or generated through enrichment rules), such as:
177
+ - Alert source, like host, cluster, check, or metric
178
+ - Alert ownership information, like team, owner
179
+ - Alert category information, like class (api, db, net)
180
+
181
+ ## IV. FAQ
182
+ ---
183
+
184
+ <details>
185
+ <summary>Why haven't I received alerts in Flashduty?</summary>
186
+
187
+ #### In Flashduty
188
+
189
+ 1. Check if the integration shows **Latest Event Time**? If not, it means Flashduty hasn't received the push, prioritize checking your system.
190
+ 2. If you're using **Shared Integration**, first confirm if you've configured **Routing Rules**. Without routing rules, the system will directly reject new pushes as there's no collaboration space to handle your alerts. In this case, simply configure routing rules to your desired space.
191
+
192
+ #### In Your System
193
+
194
+ 1. Confirm that your request URL exactly matches the URL in the integration details.
195
+ 2. Confirm that your service can access the external domain api.flashcat.cloud. If not, you need to enable external network access for the server or specifically for Flashduty's domain.
196
+ 3. Print Flashduty service's response to check for clear information.
197
+
198
+ If you still can't find the root cause after these steps, please contact us with the **request_id** from the request response.
199
+
200
+ </details>
201
+
202
+ <details>
203
+ <summary>Why was the push request successful but no new alerts or incidents were generated?</summary>
204
+
205
+ Flashduty uses a 2-layer noise reduction mechanism:
206
+
207
+ 1. First, it checks for duplicate alert events. If your pushed event is identical to a previously pushed event, the new event will be discarded.
208
+ 2. If the new event's status and description match the status, title, and description of the last event of its corresponding alert, the new event will be discarded while updating the alert's attributes.
209
+ 3. The new event might be discarded due to matching exclusion, discard, suppression, or silence rules.
210
+ 4. When a new event triggers a new alert, the system enters the second layer of noise reduction check, determining if the new alert can be merged into an active incident. If possible, it will only merge into the existing incident without generating a new one.
211
+
212
+ For more information, please refer to [Alert Noise Reduction](https://docs.flashcat.cloud/en/flashduty/what-is-noise-reduction).
213
+ </details> `, n = `---
168
214
  title: "Email Integration"
169
215
  description: "Generate a unique email address in Flashduty to synchronize alert triggers and recoveries through email"
170
216
  date: "2024-05-11T10:00:00+08:00"
@@ -605,7 +651,7 @@ Prometheus to Flashduty severity mapping:
605
651
 
606
652
 
607
653
 
608
- `, o = `---
654
+ `, i = `---
609
655
  title: "Grafana Integration"
610
656
  description: "Sync Grafana alert events to Flashduty via webhook to achieve automated alert noise reduction."
611
657
  date: "2024-05-11T10:00:00+08:00"
@@ -718,7 +764,7 @@ The system extracts the \`severity\`, \`priority\`, and \`level\` labels from al
718
764
  | ok | Ok | Resolved |
719
765
 
720
766
  </div>
721
- `, i = `---
767
+ `, o = `---
722
768
  title: "Zabbix Integration"
723
769
  description: "Synchronize Zabbix alert events to Flashduty via webhook (supports Zabbix 3.x ~ 6.x versions, with different configuration requirements) to achieve automated alert noise reduction"
724
770
  date: "2024-05-11T10:00:00+08:00"
@@ -4005,7 +4051,7 @@ Choose this method when you need to route alerts to different channels based on
4005
4051
  |Notice|Info|Info|
4006
4052
 
4007
4053
  </div>
4008
- `, P = `---
4054
+ `, N = `---
4009
4055
  title: "Volcengine Log Service (TLS) Alert Events"
4010
4056
  description: "Sync Volcengine Log Service (TLS) alert events to Flashduty via webhook for automated alert noise reduction"
4011
4057
  date: "2024-07-05T10:00:00+08:00"
@@ -4142,7 +4188,7 @@ Choose this method when you need to route alerts to different channels based on
4142
4188
  </div>
4143
4189
 
4144
4190
  </div>
4145
- `, N = `---
4191
+ `, P = `---
4146
4192
  title: "OpManager Alert Events"
4147
4193
  description: "Sync OpManager alert events to Flashduty via webhook for automated alert noise reduction"
4148
4194
  date: "2024-07-05T10:00:00+08:00"
@@ -6486,7 +6532,7 @@ export {
6486
6532
  L as Dynatrace,
6487
6533
  n as Email,
6488
6534
  x as GoogleCM,
6489
- o as Grafana,
6535
+ i as Grafana,
6490
6536
  k as Graylog,
6491
6537
  G as Guance,
6492
6538
  g as HuaWeiCES,
@@ -6500,7 +6546,7 @@ export {
6500
6546
  V as MicrosoftTeams,
6501
6547
  t as N9e,
6502
6548
  C as OceanBase,
6503
- N as OpManager,
6549
+ P as OpManager,
6504
6550
  m as OpenFalcon,
6505
6551
  f as PagerDuty,
6506
6552
  a as Prometheus,
@@ -6518,8 +6564,8 @@ export {
6518
6564
  s as UptimeKuma,
6519
6565
  D as VolcEngineEvent,
6520
6566
  E as VolcEngineMetric,
6521
- P as VolcEngineTLS,
6567
+ N as VolcEngineTLS,
6522
6568
  H as Wecom,
6523
- i as Zabbix,
6569
+ o as Zabbix,
6524
6570
  Y as Zilliz
6525
6571
  };
package/dist/zh.cjs CHANGED
@@ -67,55 +67,67 @@ POST, Content-Type:"application/json"
67
67
 
68
68
  <div class="md-block">
69
69
 
70
- QueryString 必须需要包含参数 integration_key,用于访问控制。
70
+ #### Headers:
71
+ 字段|必含|类型|释义
72
+ :-:|:-:|:-:|:---
73
+ | Content-Type | 是 | string | 固定值:\`application/json\`。
71
74
 
72
- JsonBody 参数如下:
75
+ #### Query Strings:
76
+ 字段|必含|类型|释义
77
+ :-:|:-:|:-:|:---
78
+ | integration_key | 是 | string | 集成秘钥,用于访问控制。添加集成后获得。
73
79
 
74
- | 字段 | 必含 | 类型 | 释义 |
75
- | :----------: | :--: | :----: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
76
- | event_status | 是 | string | 告警 event 状态,枚举值:Critical:严重,Warning:警告,Info:提醒,Ok:恢复 |
77
- | alert_key | 是 | string | event 合并依据,不同告警 event 根据该字段和时间窗口合并为一个 alert |
78
- | title_rule | 否 | string | 告警 title 生成规则,形如\`$a::b::$c\`,用\`::\`分割子串,每一个子串可以是一个固定字符串或用\`$\`作为前缀的变量,变量内容将从 labels 参数中提取,提取不到将会报错。缺省时,系统将提取 labels 字段中的 service、cluster、resource 和 check 等标签生成规则 |
79
- | description | 否 | string | 告警描述,不超过 2048 个字符 |
80
- | labels | 否 | map | 告警标签集合,key 为标签名称,value 为标签值。标签是事件的描述,用于后续的关联和降噪,非常重要。1. 标签的 key 和 value 均为 string 类型,区分大小写。2. 标签的 key 不要超过 128 个字符。3. 至多传入 50 个标签。\`标签内容参考\`[最佳实践](#最佳实践) |
80
+ #### Payload:
81
81
 
82
+ 字段|必含|类型|释义
83
+ :-:|:-:|:-:|:---
84
+ | title_rule | 是 | string | 告警标题,不超过\`512\`个字符,超出后将自动截断。<br><br>支持根据告警内容动态生成标题,生成规则请参考 [定制故障标题](https://docs.flashcat.cloud/zh/flashduty/customize-incident-attrs)。
85
+ | event_status | 是 | string | 告警状态。<br><br>枚举值(\`首字母大写\`):*Critical*:严重,*Warning*:警告,*Info*:提醒,*Ok*:恢复。<br><br>当指定为Ok时,意味着对告警进行自动恢复。
86
+ | alert_key | 否 | string | 告警标识,用于对已经存在的告警进行更新或自动恢复。<br><br>您可以自定义此值,但不可超过\`255\`个字符。您也可以依赖系统自动生成,该值会在响应中返回。<br><br>如果您上报的是恢复事件,则此值必须存在。
87
+ | description | 否 | string | 告警描述,不超过\`2048\`个字符,超出后将自动截断。
88
+ | labels | 否 | map | 告警标签集合,key 为标签名称,value 为标签值:<br><br>1. 标签的 key 和 value 均为 string 类型,区分大小写。<br>2. 标签的 key 不要超过\`128\`个字符,遵循Prometheus标签命名规范。value 不超过\`2048\`个字符,超出后将自动截断。<br>3. 至多传入\`50\`个标签。\`标签内容参考\`[最佳实践](#最佳实践)。<br><br>示例:"resource": "171.26.23.22", "check": "api latency > 500ms"
89
+
82
90
  </div>
83
91
 
84
92
  ### 请求响应
85
93
 
86
- <div class="md-block">
87
-
88
- Body:
89
-
90
- 参数名称|必选|类型|描述
91
- ----------|---|---|---
92
- request_id|是|string|请求 trace id,用于问题追踪
93
- error|否|[Error](#Error)|错误描述,仅当出现错误时返回
94
+ 字段名称|必选|类型|描述
95
+ :-:|:-:|:-:|:---
96
+ request_id|是|string|请求 ID,用于链路追踪
97
+ error |否|[Error](#Error)|错误描述,仅当出现错误时返回
98
+ data |否|[Data](#Data)| 上报信息
99
+
100
+ <span id="Data"></span>
101
+ Data:
102
+
103
+ | 字段名称 | 必选 | 类型 | 描述 |
104
+ :-:|:-:|:-:|:---
105
+ | alert_key| 否 | string | 告警标识,可依据此值上报恢复事件。如果您上报事件时,已经指定了 alert_key,则此值不变。否则,系统自动生成。 |
94
106
 
95
107
  <span id="Error"></span>
96
108
  Error:
97
109
 
98
- | 参数名称 | 可选 | 类型 | 描述 |
99
- | -------- | ---- | ------ | -------- |
100
- | code | 是 | string | 错误码 |
101
- | message | | string | 错误描述 |
110
+ | 字段名称 | 必选 | 类型 | 描述 |
111
+ :-:|:-:|:-:|:---
112
+ | code | 是 | string | 错误码,枚举值参考 [Code](#Code) |
113
+ | message | | string | 错误描述 |
102
114
 
103
115
  <span id="Code"></span>
104
116
  Code:
105
117
 
106
- | 错误码 | HTTP Status | 描述 |
107
- | -------------------- | ----------- | -------------------------------------- |
108
- | InvalidParameter | 400 | 参数错误 |
109
- | InvalidContentType | 400 | Conten-Type 不支持 |
110
- | MethodNotAllowed | 400 | http method 不支持 |
111
- | Unauthorized | 401 | 登录认证失败 |
112
- | AccessDenied | 403 | 权限认证失败 |
113
- | RequestTooFrequently | 429 | 请求过于频繁 |
114
- | RouteNotFound | 404 | 请求 Method+Path 未匹配 |
115
- | ResourceNotFound | 400 | 账户未购买资源,前往费用中心线操作下单 |
116
- | InternalError | 500 | 内部或未知错误 |
118
+ | 错误码 | HTTP Status | 描述 |
119
+ | :-:|:-:| ------------------ |
120
+ | InvalidParameter | 400 | 参数错误 |
121
+ | InvalidContentType | 400 | Conten-Type 不支持 |
122
+ | MethodNotAllowed | 400 | HTTP Method 不支持 |
123
+ | Unauthorized | 401 | 登录认证未通过 |
124
+ | AccessDenied | 403 | 权限认证未通过 |
125
+ | RequestTooFrequently | 429 | 请求过于频繁 |
126
+ | RouteNotFound | 404 | 请求 Method+Path 未匹配 |
127
+ | ResourceNotFound | 400 | 账户未购买资源,先前往费用中心线操作下单|
128
+ | NoLicense | 400 | 账户无充足订阅 License,先前往费用中心升级或购买订阅
129
+ | InternalError | 500 | 内部或未知错误 |
117
130
 
118
- </div>
119
131
 
120
132
  ### 二、请求示例
121
133
  ---
@@ -127,9 +139,7 @@ curl -X POST '{api_host}/event/push/alert/standard?integration_key={integration_
127
139
  -H 'Content-Type: application/json' \\
128
140
  -d '{
129
141
  "event_status": "Warning",
130
- "alert_key": "asdfjl1234asdf2s",
131
- "description": "cpu idle low than 20%",
132
- "title_rule": "$cluster::$resource::$check",
142
+ "title_rule": "cpu idle low than 20%",
133
143
  "labels": {
134
144
  "service": "engine",
135
145
  "cluster":"nj",
@@ -145,7 +155,10 @@ curl -X POST '{api_host}/event/push/alert/standard?integration_key={integration_
145
155
 
146
156
  \`\`\`
147
157
  {
148
- "request_id": "0ace00116215ab4ca0ec5244b8fc54b0"
158
+ "request_id": "0ace00116215ab4ca0ec5244b8fc54b0",
159
+ "data": {
160
+ "alert_key": "9qJ798NJoXS4UMVB5SHsNj"
161
+ }
149
162
  }
150
163
  \`\`\`
151
164
 
@@ -193,7 +206,18 @@ curl -X POST '{api_host}/event/push/alert/standard?integration_key={integration_
193
206
 
194
207
  </details>
195
208
 
209
+ <details>
210
+ <summary>为什么推送请求成功?但是没有看到新告警或故障产生?</summary>
211
+
212
+ Flashduty 使用2层降噪机制:
213
+
214
+ 1. 首先对告警event进行去重检查,如果您推送的event和之前推送的event内容完全一致,则新的event将被直接丢弃。
215
+ 2. 如果新的event的状态和描述和其对应的告警的上一条event的状态、标题、描述均一致,则新的event将被直接丢弃,同时更新归属告警属性。
216
+ 3. 新的event可能由于匹配到排除、丢弃、抑制或静默规则,而被丢弃。
217
+ 4. 当新的event触发了新告警,则系统会进入第二层降噪检查,判断新告警是否可以被合并到某个活跃的故障中,如果可以,则只会并入已有的故障,而不会产生新故障。
196
218
 
219
+ 更多内容请参考 [告警降噪](https://docs.flashcat.cloud/zh/flashduty/what-is-noise-reduction)。
220
+ </details>
197
221
 
198
222
  `,t=`---
199
223
  title: "邮件Email集成"
@@ -4100,7 +4124,7 @@ url: "https://docs.flashcat.cloud/zh/flashduty/solarwinds-integration-guide"
4100
4124
  |Info|Info|提醒|
4101
4125
 
4102
4126
  </div>
4103
- `,$=`---
4127
+ `,E=`---
4104
4128
  title: "火山引擎云监控告警事件"
4105
4129
  description: "通过 webhook 的方式同步火山引擎云监控告警事件到 Flashduty,实现告警事件自动化降噪处理"
4106
4130
  date: "2024-08-20T10:00:00+08:00"
@@ -4191,7 +4215,7 @@ url: "https://docs.flashcat.cloud/zh/flashduty/volcengine-metric-integration-gui
4191
4215
  |通知|Info|提醒|
4192
4216
 
4193
4217
  </div>
4194
- `,E=`---
4218
+ `,N=`---
4195
4219
  title: "火山引擎云监控事件中心告警事件"
4196
4220
  description: "通过 webhook 的方式同步火山引擎云监控事件中心告警事件到 Flashduty,实现告警事件自动化降噪处理"
4197
4221
  date: "2024-07-05T10:00:00+08:00"
@@ -4280,7 +4304,7 @@ url: "https://docs.flashcat.cloud/zh/flashduty/volcengine-event-integration-guid
4280
4304
  |通知|Info|提醒|
4281
4305
 
4282
4306
  </div>
4283
- `,N=`---
4307
+ `,$=`---
4284
4308
  title: "火山引擎日志服务 TLS 告警事件"
4285
4309
  description: "通过 webhook 的方式同步火山引擎日志服务 TLS 告警事件到 Flashduty,实现告警事件自动化降噪处理"
4286
4310
  date: "2024-07-05T10:00:00+08:00"
@@ -6971,4 +6995,4 @@ CloseTime | int64 | 否 | 关闭时间,EndTime 为告警恢复时间,CloseTi
6971
6995
  <img src="https://download.flashcat.cloud/flashduty/changelog/20230720/email_render.png" alt="drawing" style="display: block; margin: 0 auto;" width="500"/>
6972
6996
 
6973
6997
 
6974
- `;exports.AWSCW=u;exports.AWSEventBridge=S;exports.AlertWebhook=K;exports.AliyunARMS=d;exports.AliyunCm=r;exports.AliyunCmEvent=o;exports.AliyunSLS=c;exports.AppDynamics=P;exports.AzureMonitor=h;exports.BaiDuBCM=m;exports.CustomAction=X;exports.CustomAlert=n;exports.CustomChange=H;exports.Dingtalk=B;exports.Dynatrace=A;exports.Email=t;exports.GoogleCM=I;exports.Grafana=i;exports.Graylog=F;exports.Guance=j;exports.HuaWeiCES=p;exports.HuaweiyunLTS=C;exports.IncidentWebhook=J;exports.InfluxDB=g;exports.Jiankongbao=L;exports.Jira=O;exports.Lark=q;exports.Meraki=R;exports.MicrosoftTeams=Z;exports.N9e=e;exports.OceanBase=k;exports.OpManager=W;exports.OpenFalcon=y;exports.PagerDuty=_;exports.Prometheus=a;exports.Sentry=T;exports.Skywalking=x;exports.Slack=V;exports.SolarWinds=M;exports.Splunk=D;exports.StateCloud=z;exports.Templates=Q;exports.TencentBK=f;exports.TencentCLS=b;exports.TencentCm=v;exports.TencentEb=w;exports.UptimeKuma=l;exports.VolcEngineEvent=E;exports.VolcEngineMetric=$;exports.VolcEngineTLS=N;exports.Wecom=G;exports.Zabbix=s;exports.Zilliz=U;
6998
+ `;exports.AWSCW=u;exports.AWSEventBridge=S;exports.AlertWebhook=K;exports.AliyunARMS=d;exports.AliyunCm=r;exports.AliyunCmEvent=o;exports.AliyunSLS=c;exports.AppDynamics=P;exports.AzureMonitor=h;exports.BaiDuBCM=m;exports.CustomAction=X;exports.CustomAlert=n;exports.CustomChange=H;exports.Dingtalk=B;exports.Dynatrace=A;exports.Email=t;exports.GoogleCM=I;exports.Grafana=i;exports.Graylog=F;exports.Guance=j;exports.HuaWeiCES=p;exports.HuaweiyunLTS=C;exports.IncidentWebhook=J;exports.InfluxDB=g;exports.Jiankongbao=L;exports.Jira=O;exports.Lark=q;exports.Meraki=R;exports.MicrosoftTeams=Z;exports.N9e=e;exports.OceanBase=k;exports.OpManager=W;exports.OpenFalcon=y;exports.PagerDuty=_;exports.Prometheus=a;exports.Sentry=T;exports.Skywalking=x;exports.Slack=V;exports.SolarWinds=M;exports.Splunk=D;exports.StateCloud=z;exports.Templates=Q;exports.TencentBK=f;exports.TencentCLS=b;exports.TencentCm=v;exports.TencentEb=w;exports.UptimeKuma=l;exports.VolcEngineEvent=N;exports.VolcEngineMetric=E;exports.VolcEngineTLS=$;exports.Wecom=G;exports.Zabbix=s;exports.Zilliz=U;
package/dist/zh.js CHANGED
@@ -67,55 +67,67 @@ POST, Content-Type:"application/json"
67
67
 
68
68
  <div class="md-block">
69
69
 
70
- QueryString 必须需要包含参数 integration_key,用于访问控制。
70
+ #### Headers:
71
+ 字段|必含|类型|释义
72
+ :-:|:-:|:-:|:---
73
+ | Content-Type | 是 | string | 固定值:\`application/json\`。
71
74
 
72
- JsonBody 参数如下:
75
+ #### Query Strings:
76
+ 字段|必含|类型|释义
77
+ :-:|:-:|:-:|:---
78
+ | integration_key | 是 | string | 集成秘钥,用于访问控制。添加集成后获得。
73
79
 
74
- | 字段 | 必含 | 类型 | 释义 |
75
- | :----------: | :--: | :----: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
76
- | event_status | 是 | string | 告警 event 状态,枚举值:Critical:严重,Warning:警告,Info:提醒,Ok:恢复 |
77
- | alert_key | 是 | string | event 合并依据,不同告警 event 根据该字段和时间窗口合并为一个 alert |
78
- | title_rule | 否 | string | 告警 title 生成规则,形如\`$a::b::$c\`,用\`::\`分割子串,每一个子串可以是一个固定字符串或用\`$\`作为前缀的变量,变量内容将从 labels 参数中提取,提取不到将会报错。缺省时,系统将提取 labels 字段中的 service、cluster、resource 和 check 等标签生成规则 |
79
- | description | 否 | string | 告警描述,不超过 2048 个字符 |
80
- | labels | 否 | map | 告警标签集合,key 为标签名称,value 为标签值。标签是事件的描述,用于后续的关联和降噪,非常重要。1. 标签的 key 和 value 均为 string 类型,区分大小写。2. 标签的 key 不要超过 128 个字符。3. 至多传入 50 个标签。\`标签内容参考\`[最佳实践](#最佳实践) |
80
+ #### Payload:
81
81
 
82
+ 字段|必含|类型|释义
83
+ :-:|:-:|:-:|:---
84
+ | title_rule | 是 | string | 告警标题,不超过\`512\`个字符,超出后将自动截断。<br><br>支持根据告警内容动态生成标题,生成规则请参考 [定制故障标题](https://docs.flashcat.cloud/zh/flashduty/customize-incident-attrs)。
85
+ | event_status | 是 | string | 告警状态。<br><br>枚举值(\`首字母大写\`):*Critical*:严重,*Warning*:警告,*Info*:提醒,*Ok*:恢复。<br><br>当指定为Ok时,意味着对告警进行自动恢复。
86
+ | alert_key | 否 | string | 告警标识,用于对已经存在的告警进行更新或自动恢复。<br><br>您可以自定义此值,但不可超过\`255\`个字符。您也可以依赖系统自动生成,该值会在响应中返回。<br><br>如果您上报的是恢复事件,则此值必须存在。
87
+ | description | 否 | string | 告警描述,不超过\`2048\`个字符,超出后将自动截断。
88
+ | labels | 否 | map | 告警标签集合,key 为标签名称,value 为标签值:<br><br>1. 标签的 key 和 value 均为 string 类型,区分大小写。<br>2. 标签的 key 不要超过\`128\`个字符,遵循Prometheus标签命名规范。value 不超过\`2048\`个字符,超出后将自动截断。<br>3. 至多传入\`50\`个标签。\`标签内容参考\`[最佳实践](#最佳实践)。<br><br>示例:"resource": "171.26.23.22", "check": "api latency > 500ms"
89
+
82
90
  </div>
83
91
 
84
92
  ### 请求响应
85
93
 
86
- <div class="md-block">
87
-
88
- Body:
89
-
90
- 参数名称|必选|类型|描述
91
- ----------|---|---|---
92
- request_id|是|string|请求 trace id,用于问题追踪
93
- error|否|[Error](#Error)|错误描述,仅当出现错误时返回
94
+ 字段名称|必选|类型|描述
95
+ :-:|:-:|:-:|:---
96
+ request_id|是|string|请求 ID,用于链路追踪
97
+ error |否|[Error](#Error)|错误描述,仅当出现错误时返回
98
+ data |否|[Data](#Data)| 上报信息
99
+
100
+ <span id="Data"></span>
101
+ Data:
102
+
103
+ | 字段名称 | 必选 | 类型 | 描述 |
104
+ :-:|:-:|:-:|:---
105
+ | alert_key| 否 | string | 告警标识,可依据此值上报恢复事件。如果您上报事件时,已经指定了 alert_key,则此值不变。否则,系统自动生成。 |
94
106
 
95
107
  <span id="Error"></span>
96
108
  Error:
97
109
 
98
- | 参数名称 | 可选 | 类型 | 描述 |
99
- | -------- | ---- | ------ | -------- |
100
- | code | 是 | string | 错误码 |
101
- | message | | string | 错误描述 |
110
+ | 字段名称 | 必选 | 类型 | 描述 |
111
+ :-:|:-:|:-:|:---
112
+ | code | 是 | string | 错误码,枚举值参考 [Code](#Code) |
113
+ | message | | string | 错误描述 |
102
114
 
103
115
  <span id="Code"></span>
104
116
  Code:
105
117
 
106
- | 错误码 | HTTP Status | 描述 |
107
- | -------------------- | ----------- | -------------------------------------- |
108
- | InvalidParameter | 400 | 参数错误 |
109
- | InvalidContentType | 400 | Conten-Type 不支持 |
110
- | MethodNotAllowed | 400 | http method 不支持 |
111
- | Unauthorized | 401 | 登录认证失败 |
112
- | AccessDenied | 403 | 权限认证失败 |
113
- | RequestTooFrequently | 429 | 请求过于频繁 |
114
- | RouteNotFound | 404 | 请求 Method+Path 未匹配 |
115
- | ResourceNotFound | 400 | 账户未购买资源,前往费用中心线操作下单 |
116
- | InternalError | 500 | 内部或未知错误 |
118
+ | 错误码 | HTTP Status | 描述 |
119
+ | :-:|:-:| ------------------ |
120
+ | InvalidParameter | 400 | 参数错误 |
121
+ | InvalidContentType | 400 | Conten-Type 不支持 |
122
+ | MethodNotAllowed | 400 | HTTP Method 不支持 |
123
+ | Unauthorized | 401 | 登录认证未通过 |
124
+ | AccessDenied | 403 | 权限认证未通过 |
125
+ | RequestTooFrequently | 429 | 请求过于频繁 |
126
+ | RouteNotFound | 404 | 请求 Method+Path 未匹配 |
127
+ | ResourceNotFound | 400 | 账户未购买资源,先前往费用中心线操作下单|
128
+ | NoLicense | 400 | 账户无充足订阅 License,先前往费用中心升级或购买订阅
129
+ | InternalError | 500 | 内部或未知错误 |
117
130
 
118
- </div>
119
131
 
120
132
  ### 二、请求示例
121
133
  ---
@@ -127,9 +139,7 @@ curl -X POST '{api_host}/event/push/alert/standard?integration_key={integration_
127
139
  -H 'Content-Type: application/json' \\
128
140
  -d '{
129
141
  "event_status": "Warning",
130
- "alert_key": "asdfjl1234asdf2s",
131
- "description": "cpu idle low than 20%",
132
- "title_rule": "$cluster::$resource::$check",
142
+ "title_rule": "cpu idle low than 20%",
133
143
  "labels": {
134
144
  "service": "engine",
135
145
  "cluster":"nj",
@@ -145,7 +155,10 @@ curl -X POST '{api_host}/event/push/alert/standard?integration_key={integration_
145
155
 
146
156
  \`\`\`
147
157
  {
148
- "request_id": "0ace00116215ab4ca0ec5244b8fc54b0"
158
+ "request_id": "0ace00116215ab4ca0ec5244b8fc54b0",
159
+ "data": {
160
+ "alert_key": "9qJ798NJoXS4UMVB5SHsNj"
161
+ }
149
162
  }
150
163
  \`\`\`
151
164
 
@@ -193,7 +206,18 @@ curl -X POST '{api_host}/event/push/alert/standard?integration_key={integration_
193
206
 
194
207
  </details>
195
208
 
209
+ <details>
210
+ <summary>为什么推送请求成功?但是没有看到新告警或故障产生?</summary>
211
+
212
+ Flashduty 使用2层降噪机制:
213
+
214
+ 1. 首先对告警event进行去重检查,如果您推送的event和之前推送的event内容完全一致,则新的event将被直接丢弃。
215
+ 2. 如果新的event的状态和描述和其对应的告警的上一条event的状态、标题、描述均一致,则新的event将被直接丢弃,同时更新归属告警属性。
216
+ 3. 新的event可能由于匹配到排除、丢弃、抑制或静默规则,而被丢弃。
217
+ 4. 当新的event触发了新告警,则系统会进入第二层降噪检查,判断新告警是否可以被合并到某个活跃的故障中,如果可以,则只会并入已有的故障,而不会产生新故障。
196
218
 
219
+ 更多内容请参考 [告警降噪](https://docs.flashcat.cloud/zh/flashduty/what-is-noise-reduction)。
220
+ </details>
197
221
 
198
222
  `, t = `---
199
223
  title: "邮件Email集成"
@@ -4100,7 +4124,7 @@ url: "https://docs.flashcat.cloud/zh/flashduty/solarwinds-integration-guide"
4100
4124
  |Info|Info|提醒|
4101
4125
 
4102
4126
  </div>
4103
- `, $ = `---
4127
+ `, E = `---
4104
4128
  title: "火山引擎云监控告警事件"
4105
4129
  description: "通过 webhook 的方式同步火山引擎云监控告警事件到 Flashduty,实现告警事件自动化降噪处理"
4106
4130
  date: "2024-08-20T10:00:00+08:00"
@@ -4191,7 +4215,7 @@ url: "https://docs.flashcat.cloud/zh/flashduty/volcengine-metric-integration-gui
4191
4215
  |通知|Info|提醒|
4192
4216
 
4193
4217
  </div>
4194
- `, E = `---
4218
+ `, N = `---
4195
4219
  title: "火山引擎云监控事件中心告警事件"
4196
4220
  description: "通过 webhook 的方式同步火山引擎云监控事件中心告警事件到 Flashduty,实现告警事件自动化降噪处理"
4197
4221
  date: "2024-07-05T10:00:00+08:00"
@@ -4280,7 +4304,7 @@ url: "https://docs.flashcat.cloud/zh/flashduty/volcengine-event-integration-guid
4280
4304
  |通知|Info|提醒|
4281
4305
 
4282
4306
  </div>
4283
- `, N = `---
4307
+ `, $ = `---
4284
4308
  title: "火山引擎日志服务 TLS 告警事件"
4285
4309
  description: "通过 webhook 的方式同步火山引擎日志服务 TLS 告警事件到 Flashduty,实现告警事件自动化降噪处理"
4286
4310
  date: "2024-07-05T10:00:00+08:00"
@@ -7020,9 +7044,9 @@ export {
7020
7044
  v as TencentCm,
7021
7045
  w as TencentEb,
7022
7046
  l as UptimeKuma,
7023
- E as VolcEngineEvent,
7024
- $ as VolcEngineMetric,
7025
- N as VolcEngineTLS,
7047
+ N as VolcEngineEvent,
7048
+ E as VolcEngineMetric,
7049
+ $ as VolcEngineTLS,
7026
7050
  G as Wecom,
7027
7051
  s as Zabbix,
7028
7052
  U as Zilliz
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flashduty-knowledge-base",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "flashduty knowledge base",
5
5
  "type": "module",
6
6
  "scripts": {