-
Notifications
You must be signed in to change notification settings - Fork 2
/
modules.alertRulesSmartDetection.bicep
443 lines (415 loc) · 16 KB
/
modules.alertRulesSmartDetection.bicep
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
@description('The prefix will be used for every parameter that represents a resource name')
param resourceNamePrefix string
@description('The suffix will be appended to every parameter that represents a resource name')
param resourceNameSuffix string
param resourceLocation string = resourceGroup().location
param appInsightsResId string
param createDefaultActionGroup bool = false
@description('Should have a value when "createDefaultActionGroup" is not set')
param actionGroupResId string = ''
param enableAlertRules bool = true
var appInsightsResIdParts = split(appInsightsResId, '/') // Indexes: 2 = SubscriptionId, 4 = ResourceGroupName, 8 = ResourceName
var actionGrpDefaultName = '${resourceNamePrefix}-smartdetect-ag-${resourceNameSuffix}' // Default name = 'Application Insights Smart Detection'
var actionGrpDefaultShortName = 'SmartDetect'
var smartDetFailureAnomaliesAlertRuleName = '${resourceNamePrefix}-sd-failan-ar-${resourceNameSuffix}' // Default name = 'Failure Anomalies - ${appInsightsName}'
var smartDetDepLatDegAlertRuleName = '${resourceNamePrefix}-sd-deplatdeg-ar-${resourceNameSuffix}' // Default name = 'Dependency Latency Degradation - ${appInsightsName}'
var smartDetExpAnomAlertRuleName = '${resourceNamePrefix}-sd-excan-ar-${resourceNameSuffix}' // Default name = 'Exception Anomalies - ${appInsightsName}'
var smartDetPotMemLeakAlertRuleName = '${resourceNamePrefix}-sd-potmemlk-ar-${resourceNameSuffix}' // Default name = 'Potential Memory Leak - ${appInsightsName}'
var smartDetRespLatDegAlertRuleName = '${resourceNamePrefix}-sd-reslatdeg-ar-${resourceNameSuffix}' // Default name = 'Response Latency Degradation - ${appInsightsName}'
var smartDetTraceSevDegAlertRuleName = '${resourceNamePrefix}-sd-tcesevdeg-ar-${resourceNameSuffix}' // Default name = 'Trace Severity Degradation - ${appInsightsName}'
resource appInsightsRes 'Microsoft.Insights/components@2020-02-02' existing = {
name: appInsightsResIdParts[8]
}
resource actionGrpDefaultRes 'Microsoft.Insights/actionGroups@2022-06-01' = if (createDefaultActionGroup) {
name: actionGrpDefaultName
location: 'Global'
properties: {
groupShortName: actionGrpDefaultShortName // Caution: maximal 12 characters
enabled: true
emailReceivers: []
smsReceivers: []
webhookReceivers: []
azureAppPushReceivers: []
logicAppReceivers: []
azureFunctionReceivers: []
armRoleReceivers: [
{
name: 'Monitoring Contributor'
roleId: '749f88d5-cbae-40b8-bcfc-e573ddc772fa'
useCommonAlertSchema: true
}
{
name: 'Monitoring Reader'
roleId: '43d0d8ad-25c7-4714-9337-8ba259a9fe05'
useCommonAlertSchema: true
}
]
}
}
resource degDepDurDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'degradationindependencyduration'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'degradationindependencyduration'
DisplayName: 'Degradation in dependency duration'
Description: 'Smart Detection rules notify you of performance anomaly issues.'
HelpUrl: 'https://docs.microsoft.com/en-us/azure/application-insights/app-insights-proactive-performance-diagnostics'
IsHidden: false
IsEnabledByDefault: true
IsInPreview: false
SupportsEmailNotifications: true
}
Enabled: true
SendEmailsToSubscriptionOwners: true
CustomEmails: []
}
}
resource degSvrResDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'degradationinserverresponsetime'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'degradationinserverresponsetime'
DisplayName: 'Degradation in server response time'
Description: 'Smart Detection rules notify you of performance anomaly issues.'
HelpUrl: 'https://docs.microsoft.com/en-us/azure/application-insights/app-insights-proactive-performance-diagnostics'
IsHidden: false
IsEnabledByDefault: true
IsInPreview: false
SupportsEmailNotifications: true
}
Enabled: true
SendEmailsToSubscriptionOwners: true
CustomEmails: []
}
}
resource bilDatSpikeDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'extension_billingdatavolumedailyspikeextension'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'extension_billingdatavolumedailyspikeextension'
DisplayName: 'Abnormal rise in daily data volume (preview)'
Description: 'This detection rule automatically analyzes the billing data generated by your application, and can warn you about an unusual increase in your application\'s billing costs.'
HelpUrl: 'https://github.com/Microsoft/ApplicationInsights-Home/tree/master/SmartDetection/billing-data-volume-daily-spike.md'
IsHidden: false
IsEnabledByDefault: true
IsInPreview: true
SupportsEmailNotifications: false
}
Enabled: true
SendEmailsToSubscriptionOwners: true
CustomEmails: []
}
}
resource exChangeDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'extension_exceptionchangeextension'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'extension_exceptionchangeextension'
DisplayName: 'Abnormal rise in exception volume (preview)'
Description: 'This detection rule automatically analyzes the exceptions thrown in your application, and can warn you about unusual patterns in your exception telemetry.'
HelpUrl: 'https://github.com/Microsoft/ApplicationInsights-Home/blob/master/SmartDetection/abnormal-rise-in-exception-volume.md'
IsHidden: false
IsEnabledByDefault: true
IsInPreview: true
SupportsEmailNotifications: false
}
Enabled: true
SendEmailsToSubscriptionOwners: true
CustomEmails: []
}
}
resource memLeakDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'extension_memoryleakextension'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'extension_memoryleakextension'
DisplayName: 'Potential memory leak detected (preview)'
Description: 'This detection rule automatically analyzes the memory consumption of each process in your application, and can warn you about potential memory leaks or increased memory consumption.'
HelpUrl: 'https://github.com/Microsoft/ApplicationInsights-Home/tree/master/SmartDetection/memory-leak.md'
IsHidden: false
IsEnabledByDefault: true
IsInPreview: true
SupportsEmailNotifications: false
}
Enabled: true
SendEmailsToSubscriptionOwners: true
CustomEmails: []
}
}
resource secExtPackDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'extension_securityextensionspackage'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'extension_securityextensionspackage'
DisplayName: 'Potential security issue detected (preview)'
Description: 'This detection rule automatically analyzes the telemetry generated by your application and detects potential security issues.'
HelpUrl: 'https://github.com/Microsoft/ApplicationInsights-Home/blob/master/SmartDetection/application-security-detection-pack.md'
IsHidden: false
IsEnabledByDefault: true
IsInPreview: true
SupportsEmailNotifications: false
}
Enabled: true
SendEmailsToSubscriptionOwners: true
CustomEmails: []
}
}
resource traceSevDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'extension_traceseveritydetector'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'extension_traceseveritydetector'
DisplayName: 'Degradation in trace severity ratio (preview)'
Description: 'This detection rule automatically analyzes the trace logs emitted from your application, and can warn you about unusual patterns in the severity of your trace telemetry.'
HelpUrl: 'https://github.com/Microsoft/ApplicationInsights-Home/blob/master/SmartDetection/degradation-in-trace-severity-ratio.md'
IsHidden: false
IsEnabledByDefault: true
IsInPreview: true
SupportsEmailNotifications: false
}
Enabled: true
SendEmailsToSubscriptionOwners: true
CustomEmails: []
}
}
resource longDepDurDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'longdependencyduration'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'longdependencyduration'
DisplayName: 'Long dependency duration'
Description: 'Smart Detection rules notify you of performance anomaly issues.'
HelpUrl: 'https://docs.microsoft.com/en-us/azure/application-insights/app-insights-proactive-performance-diagnostics'
IsHidden: false
IsEnabledByDefault: true
IsInPreview: false
SupportsEmailNotifications: true
}
Enabled: true
SendEmailsToSubscriptionOwners: true
CustomEmails: []
}
}
resource slowPageLoadDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'slowpageloadtime'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'slowpageloadtime'
DisplayName: 'Slow page load time'
Description: 'Smart Detection rules notify you of performance anomaly issues.'
HelpUrl: 'https://docs.microsoft.com/en-us/azure/application-insights/app-insights-proactive-performance-diagnostics'
IsHidden: false
IsEnabledByDefault: true
IsInPreview: false
SupportsEmailNotifications: true
}
Enabled: true
SendEmailsToSubscriptionOwners: true
CustomEmails: []
}
}
resource slowSvrRespDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'slowserverresponsetime'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'slowserverresponsetime'
DisplayName: 'Slow server response time'
Description: 'Smart Detection rules notify you of performance anomaly issues.'
HelpUrl: 'https://docs.microsoft.com/en-us/azure/application-insights/app-insights-proactive-performance-diagnostics'
IsHidden: false
IsEnabledByDefault: true
IsInPreview: false
SupportsEmailNotifications: true
}
Enabled: true
SendEmailsToSubscriptionOwners: true
CustomEmails: []
}
}
resource migrationCompletedFlagDetectionConfigRes 'Microsoft.Insights/components/ProactiveDetectionConfigs@2018-05-01-preview' = {
parent: appInsightsRes
name: 'migrationToAlertRulesCompleted'
location: resourceLocation
properties: {
RuleDefinitions: {
Name: 'migrationToAlertRulesCompleted'
DisplayName: 'Migration To Alert Rules Completed'
Description: 'A configuration that controls the migration state of Smart Detection to Smart Alerts.'
HelpUrl: 'https://docs.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-smart-detections-migration'
IsHidden: true
IsEnabledByDefault: false
IsInPreview: true
SupportsEmailNotifications: false
}
Enabled: true
SendEmailsToSubscriptionOwners: false
CustomEmails: []
}
// Note: As this property sets a flag to not propose the migration in the Azure Portal anymore, we deploy it only after all the alert rules have been deployed successfully
dependsOn: [
smartDetFailureAnomaliesAlertRuleRes
smartDetDepLatDegAlertRuleRes
smartDetExpAnomAlertRuleRes
smartDetPotMemLeakAlertRuleRes
smartDetRespLatDegAlertRuleRes
smartDetTraceSevDegAlertRuleRes
]
}
resource smartDetFailureAnomaliesAlertRuleRes 'Microsoft.AlertsManagement/smartDetectorAlertRules@2021-04-01' = {
name: smartDetFailureAnomaliesAlertRuleName
location: 'Global'
properties: {
description: ''
state: enableAlertRules ? 'Enabled' : 'Disabled'
severity: 'Sev3'
frequency: 'PT1M'
detector: {
id: 'FailureAnomaliesDetector'
}
scope: [
appInsightsResId
]
actionGroups: {
groupIds: createDefaultActionGroup ? [
actionGrpDefaultRes.id
] : (!empty(actionGroupResId) ? [
actionGroupResId
] : [])
}
}
}
resource smartDetDepLatDegAlertRuleRes 'Microsoft.AlertsManagement/smartDetectorAlertRules@2021-04-01' = {
name: smartDetDepLatDegAlertRuleName
location: 'global'
properties: {
description: 'Dependency Latency Degradation notifies you of an unusual increase in response by a dependency your app is calling (e.g. REST API or database).'
state: enableAlertRules ? 'Enabled' : 'Disabled'
severity: 'Sev3'
frequency: 'PT24H'
detector: {
id: 'DependencyPerformanceDegradationDetector'
}
scope: [
appInsightsResId
]
actionGroups: {
groupIds: createDefaultActionGroup ? [
actionGrpDefaultRes.id
] : (!empty(actionGroupResId) ? [
actionGroupResId
] : [])
}
}
}
resource smartDetExpAnomAlertRuleRes 'Microsoft.AlertsManagement/smartDetectorAlertRules@2021-04-01' = {
name: smartDetExpAnomAlertRuleName
location: 'global'
properties: {
description: 'Exception Anomalies notifies you of an unusual rise in the rate of exceptions thrown by your app.'
state: enableAlertRules ? 'Enabled' : 'Disabled'
severity: 'Sev3'
frequency: 'PT24H'
detector: {
id: 'ExceptionVolumeChangedDetector'
}
scope: [
appInsightsResId
]
actionGroups: {
groupIds: createDefaultActionGroup ? [
actionGrpDefaultRes.id
] : (!empty(actionGroupResId) ? [
actionGroupResId
] : [])
}
}
}
resource smartDetPotMemLeakAlertRuleRes 'Microsoft.AlertsManagement/smartDetectorAlertRules@2021-04-01' = {
name: smartDetPotMemLeakAlertRuleName
location: 'global'
properties: {
description: 'Potential Memory Leak notifies you of increased memory consumption pattern by your app which may indicate a potential memory leak.'
state: enableAlertRules ? 'Enabled' : 'Disabled'
severity: 'Sev3'
frequency: 'PT24H'
detector: {
id: 'MemoryLeakDetector'
}
scope: [
appInsightsResId
]
actionGroups: {
groupIds: createDefaultActionGroup ? [
actionGrpDefaultRes.id
] : (!empty(actionGroupResId) ? [
actionGroupResId
] : [])
}
}
}
resource smartDetRespLatDegAlertRuleRes 'Microsoft.AlertsManagement/smartDetectorAlertRules@2021-04-01' = {
name: smartDetRespLatDegAlertRuleName
location: 'global'
properties: {
description: 'Response Latency Degradation notifies you of an unusual increase in latency in your app response to requests.'
state: enableAlertRules ? 'Enabled' : 'Disabled'
severity: 'Sev3'
frequency: 'PT24H'
detector: {
id: 'RequestPerformanceDegradationDetector'
}
scope: [
appInsightsResId
]
actionGroups: {
groupIds: createDefaultActionGroup ? [
actionGrpDefaultRes.id
] : (!empty(actionGroupResId) ? [
actionGroupResId
] : [])
}
}
}
resource smartDetTraceSevDegAlertRuleRes 'Microsoft.AlertsManagement/smartDetectorAlertRules@2021-04-01' = {
name: smartDetTraceSevDegAlertRuleName
location: 'global'
properties: {
description: 'Trace Severity Degradation notifies you of an unusual increase in the severity of the traces generated by your app.'
state: enableAlertRules ? 'Enabled' : 'Disabled'
severity: 'Sev3'
frequency: 'PT24H'
detector: {
id: 'TraceSeverityDetector'
}
scope: [
appInsightsResId
]
actionGroups: {
groupIds: createDefaultActionGroup ? [
actionGrpDefaultRes.id
] : (!empty(actionGroupResId) ? [
actionGroupResId
] : [])
}
}
}