-
Notifications
You must be signed in to change notification settings - Fork 37
/
ApplicationManifest.xml
462 lines (462 loc) · 41.5 KB
/
ApplicationManifest.xml
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
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
<?xml version="1.0" encoding="utf-8"?>
<!-- You can try the XML diff/merge tool XmlDiffPatchSF (located in this repo) to make upgrading your base configurations to the latest version much easier. -->
<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="FabricObserverType" ApplicationTypeVersion="3.3.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<!-- ObserverManager Configuration -->
<!-- FO's Observer loop will sleep for at least 30s, regardless of this setting. So, setting to 0 to 29 would mean FO will sleep for 30 seconds between observer loop iterations. -->
<Parameter Name="ObserverManagerObserverLoopSleepTimeSeconds" DefaultValue="60" />
<!-- Increase this value if you monitoring a large number of services and can't do so (or don't want to) concurrently (See AppObserverEnableConcurrentMonitoring setting). -->
<Parameter Name="ObserverManagerObserverExecutionTimeoutSeconds" DefaultValue="3600" />
<Parameter Name="ObserverManagerEnableVerboseLogging" DefaultValue="false" />
<!-- If an observer run fails due to timeout (ObserverExecutionTimeout is exceeded) or AppObserver can't monitor a service that runs at higher privilege,
for example, then this setting will put FO into Warning or Error state or just create a an Ok (info) health message.
Supported values are Error, Warning, Ok or None. -->
<Parameter Name="ObserverManagerObserverFailureHealthStateLevel" DefaultValue="Warning" />
<!-- Provide a full path including drive letter or just the name of a directory, which will then map to your system drive (typically, C: on Windows). -->
<Parameter Name="ObserverLogPath" DefaultValue="fabric_observer_logs" />
<!-- We would really appreciate it if you kept this set to true. The information we collect contains no PII and helps us understand how FO is doing in the wild.
NOTE: This setting is unrelated to Observer Telemetry, which you configure further down. -->
<Parameter Name="ObserverManagerEnableOperationalFOTelemetry" DefaultValue="true" />
<!-- If you want to transmit ETW events to Kusto, for example, then enable this setting. Otherwise, set this to false. Please see ETW.md for related documentation. -->
<Parameter Name="ObserverManagerEnableETWProvider" DefaultValue="true" />
<!-- You only need to set this if you want to use a different EventSource provider name than the default, FabricObserverETWProvider.
This is primarily useful for scenarios where you have multiple instances of FO running on a node and you want to ensure that each instance writes
ETW event data to different named sinks. This is more of an advanced scenario. In general, just leave this blank. -->
<Parameter Name="ObserverManagerETWProviderName" DefaultValue="" />
<!-- If you want FO to transmit telemetry data events to ApplicationInsights or LogAnalytics, for example, then enable this setting. Otherwise, set this to false. -->
<!-- Observer Telemetry -->
<Parameter Name="ObserverManagerEnableTelemetryProvider" DefaultValue="true" />
<!-- Telemetry Provider - Supported values are AzureApplicationInsights and AzureLogAnalytics. -->
<Parameter Name="TelemetryProvider" DefaultValue="AzureApplicationInsights" />
<!-- Application Insights -->
<Parameter Name="AppInsightsConnectionString" DefaultValue="" />
<!-- LogAnalytics -->
<Parameter Name="LogAnalyticsWorkspaceId" DefaultValue="" />
<Parameter Name="LogAnalyticsSharedKey" DefaultValue="" />
<Parameter Name="LogAnalyticsLogType" DefaultValue="FabricObserver" />
<!-- End Telemetry -->
<Parameter Name="AppObserverEnabled" DefaultValue="true" />
<Parameter Name="AzureStorageUploadObserverEnabled" DefaultValue="false" />
<Parameter Name="CertificateObserverEnabled" DefaultValue="true" />
<!-- Note: You must run FO as System or Admin user on Windows in order to run ContainerObserver on Windows. -->
<Parameter Name="ContainerObserverEnabled" DefaultValue="false" />
<Parameter Name="DiskObserverEnabled" DefaultValue="true" />
<Parameter Name="FabricSystemObserverEnabled" DefaultValue="false" />
<Parameter Name="NetworkObserverEnabled" DefaultValue="false" />
<Parameter Name="NodeObserverEnabled" DefaultValue="true" />
<Parameter Name="OSObserverEnabled" DefaultValue="true" />
<!-- Observer Telemetry - AppInsights or LogAnalytics -->
<Parameter Name="AppObserverEnableTelemetry" DefaultValue="false" />
<Parameter Name="AzureStorageUploadObserverEnableTelemetry" DefaultValue="false" />
<Parameter Name="CertificateObserverEnableTelemetry" DefaultValue="false" />
<Parameter Name="ContainerObserverEnableTelemetry" DefaultValue="false" />
<Parameter Name="DiskObserverEnableTelemetry" DefaultValue="false" />
<Parameter Name="FabricSystemObserverEnableTelemetry" DefaultValue="false" />
<Parameter Name="NetworkObserverEnableTelemetry" DefaultValue="false" />
<Parameter Name="NodeObserverEnableTelemetry" DefaultValue="false" />
<Parameter Name="OSObserverEnableTelemetry" DefaultValue="false" />
<!-- Observer Raw metric Telemetry (only applies if Telemetry is enabled for the observer) - whether or not FO should emit raw metric data per observer run - per metric, per entity - for an observer that monitors resource usage. This applies to 5 observers.
If you set to false, then only Warning/Error/Ok (recovery from previous Error/Warning state) data events will be sent to ApplicationInsights or LogAnalytics service. -->
<Parameter Name="AppObserverEmitRawMetricTelemetry" DefaultValue="true" />
<Parameter Name="ContainerObserverEmitRawMetricTelemetry" DefaultValue="true" />
<Parameter Name="DiskObserverEmitRawMetricTelemetry" DefaultValue="true" />
<Parameter Name="FabricSystemObserverEmitRawMetricTelemetry" DefaultValue="true" />
<Parameter Name="NodeObserverEmitRawMetricTelemetry" DefaultValue="true" />
<!-- Observer ETW - Custom EventSource Tracing. Each observer can emit ETW. You can decide which ones.
Make sure to enable ObserverManagerEnableETWProvider above if you plan on enabling ETW for some observer below. -->
<Parameter Name="AppObserverEnableEtw" DefaultValue="false" />
<Parameter Name="AzureStorageUploadObserverEnableEtw" DefaultValue="false" />
<Parameter Name="CertificateObserverEnableEtw" DefaultValue="false" />
<Parameter Name="ContainerObserverEnableEtw" DefaultValue="false" />
<Parameter Name="DiskObserverEnableEtw" DefaultValue="false" />
<Parameter Name="FabricSystemObserverEnableEtw" DefaultValue="false" />
<Parameter Name="NetworkObserverEnableEtw" DefaultValue="false" />
<Parameter Name="NodeObserverEnableEtw" DefaultValue="false" />
<Parameter Name="OSObserverEnableEtw" DefaultValue="false" />
<!-- Observer CSV Logging -->
<Parameter Name="AppObserverEnableCSVDataLogging" DefaultValue="false" />
<Parameter Name="ContainerObserverEnableCSVDataLogging" DefaultValue="false" />
<Parameter Name="FabricSystemObserverEnableCSVDataLogging" DefaultValue="false" />
<Parameter Name="NodeObserverEnableCSVDataLogging" DefaultValue="false" />
<!-- Observer Verbose Logging -->
<Parameter Name="AppObserverEnableVerboseLogging" DefaultValue="false" />
<Parameter Name="AzureStorageUploadObserverEnableVerboseLogging" DefaultValue="false" />
<Parameter Name="CertificateObserverEnableVerboseLogging" DefaultValue="false" />
<Parameter Name="ContainerObserverEnableVerboseLogging" DefaultValue="false" />
<Parameter Name="DiskObserverEnableVerboseLogging" DefaultValue="false" />
<Parameter Name="FabricSystemObserverEnableVerboseLogging" DefaultValue="false" />
<Parameter Name="NetworkObserverEnableVerboseLogging" DefaultValue="false" />
<Parameter Name="NodeObserverEnableVerboseLogging" DefaultValue="false" />
<Parameter Name="OSObserverEnableVerboseLogging" DefaultValue="false" />
<!-- Observer CPU Monitor Durations (TimeSpan format, e.g., 00:00:00): How long an observer should monitor CPU usage per target (process or machine).
NOTE: If AppObserver is configured to monitor service processes concurrently, then any value greater than 5 seconds is ignored as 5 seconds CPU monitor duration will be the maximum executed value.
This is to protect against AppObserver causing the FO process to abuse CPU, especially on Windows - where FO employs (indirectly) NtQuerySystemInformation API to collect process CPU usage data.
If AppObserver is not running in concurrent monitoring mode, then 10 seconds will be the max value employed, regardless of this setting.
These contraints do not apply to FabricSystemObserver and NodeObserver. -->
<Parameter Name="AppObserverMonitorDuration" DefaultValue="00:00:04" />
<Parameter Name="FabricSystemObserverMonitorDuration" DefaultValue="00:00:04" />
<Parameter Name="NodeObserverMonitorDuration" DefaultValue="00:00:04" />
<!-- Observer Monitor Sleep Durations (Milliseconds, e.g. 1000 is generally a good idea): How long an observer should wait between consecutive CPU usage collection for the same target (process or machine).
This setting only applies to 3 observers. NOTE: Values less than 500 are no longer supported. -->
<Parameter Name="AppObserverMonitorSleepDurationMilliseconds" DefaultValue="1000" />
<Parameter Name="FabricSystemObserverMonitorSleepDurationMilliseconds" DefaultValue="1000" />
<Parameter Name="NodeObserverMonitorSleepDurationMilliseconds" DefaultValue="1000" />
<!-- Observer Run Intervals (TimeSpan format, e.g., 0.00:00:00): How often an enabled observer should run.
Note: Values less than 1 minute cannot be guaranteed. The actual run interval will always be based on how long an observer takes to run + how long it takes to run again. -->
<Parameter Name="AppObserverRunInterval" DefaultValue="" />
<Parameter Name="AzureStorageUploadObserverRunInterval" DefaultValue="00:05:00" />
<Parameter Name="CertificateObserverRunInterval" DefaultValue="1.00:00:00" />
<Parameter Name="ContainerObserverRunInterval" DefaultValue="" />
<Parameter Name="DiskObserverRunInterval" DefaultValue="" />
<Parameter Name="FabricSystemObserverRunInterval" DefaultValue="" />
<Parameter Name="NetworkObserverRunInterval" DefaultValue="" />
<Parameter Name="NodeObserverRunInterval" DefaultValue="" />
<Parameter Name="OSObserverRunInterval" DefaultValue="" />
<!-- AppObserver -->
<Parameter Name="AppObserverClusterOperationTimeoutSeconds" DefaultValue="120" />
<!-- Note: CircularBufferCollection is not thread safe for writes. If you enable this AND enable concurrent monitoring, a ConcurrentQueue will be used. -->
<Parameter Name="AppObserverUseCircularBuffer" DefaultValue="false" />
<!-- Optional-If UseCircularBuffer = true -->
<Parameter Name="AppObserverResourceUsageDataCapacity" DefaultValue="" />
<!-- Configuration file name. -->
<Parameter Name="AppObserverConfigurationFile" DefaultValue="AppObserver.config.json" />
<!-- Process family tree monitoring: AppObserver monitors the resource usage by child processes of target services.
NOTE: If you already know that your target services do *not* spawn child processes, then you should not enable this feature. -->
<Parameter Name="AppObserverEnableChildProcessMonitoring" DefaultValue="false" />
<!-- The maximum number of child process data items to include in a sorted list of top n consumers for some metric, where n is the value of this setting. -->
<Parameter Name="AppObserverMaxChildProcTelemetryDataCount" DefaultValue="5" />
<!-- Service process dumps (dumpProcessOnError/dumpProcessOnWarning setting).
You need to set AppObserverEnableProcessDumps setting to true here AND set dumpProcessOnError or dumpProcessOnWarning to true in AppObserver.config.json
if you want AppObserver to dump service processes when an Error or Warning threshold has been breached for some observed metric (e.g., memoryErrorLimitPercent/memoryWarningLimitPercent). -->
<Parameter Name="AppObserverEnableProcessDumps" DefaultValue="false" />
<!-- Supported values are: Mini, MiniPlus, Full. -->
<Parameter Name="AppObserverProcessDumpType" DefaultValue="MiniPlus" />
<!-- Max number of dumps to generate per service, per observed metric, within a supplied TimeSpan window. See AppObserverMaxDumpsTimeWindow. -->
<Parameter Name="AppObserverMaxProcessDumps" DefaultValue="3" />
<!-- Time window in which max dumps per process, per observed metric can occur. See AppObserverMaxProcessDumps. -->
<Parameter Name="AppObserverMaxDumpsTimeWindow" DefaultValue="04:00:00" />
<!-- Concurrency/Parallelism Support.
Note: This will only add real value (substantial) on machines with capable hardware (>= 4 logical processors). FO will not attempt to do anything concurrently if
the number of logical processors is less than 4, even if this is set to true.
You can control the level of concurrency by setting the AppObserverMaxConcurrentTasks setting. -->
<Parameter Name="AppObserverEnableConcurrentMonitoring" DefaultValue="true" />
<!-- Set this to -1 or some positive integer that roughly maps to max number of threads to use. -1 means that the .net runtime will use as many managed threadpool threads as possible.
Default value is 25. Please read the related documentation for more information on MaxDegreeOfParallelism. This setting is provided here so you can dial thread usage up and down based on your needs, if you need to.
See https://learn.microsoft.com/dotnet/api/system.threading.tasks.paralleloptions.maxdegreeofparallelism?view=net-6.0 -->
<Parameter Name="AppObserverMaxConcurrentTasks" DefaultValue="25" />
<!-- *Windows-only*: KVS LVID Usage Monitoring. This is an advanced feature and should only be enabled if you have experienced KVS LVID (ESE) exhaustion on Windows. This is rare and generally not applicable to most customers. -->
<Parameter Name="AppObserverEnableKvsLvidMonitoring" DefaultValue="false" />
<!-- *Windows-only*: Process Working Set type for AppObserver to monitor.
Note: You should consider monitoring process commit (warningPrivateBytesMb threshold setting) instead of Private Working Set for tracking potential leaks on Windows.
The Private Bytes measurement code is extremely fast and CPU-efficient on Windows. Monitoring Private Working Set on Windows requires PerformanceCounter, which is an expensive .net object.
*Windows* Recommendation: Disable this, employ warningPrivateBytesMb/errorPrivateBytesMb in AppObserver.config.json file for tracking process memory usage on Windows. -->
<Parameter Name="AppObserverMonitorPrivateWorkingSet" DefaultValue="false" />
<!-- *Windows-only*. AppObserver can monitor services with Service Fabric Resource Governance limits set (CPU and Memory) and put related services into Warning if they reach 90% of the specified limit.
If you do set Memory or CPU Resource Governance limits for your service code packages, then you should enable this feature. -->
<Parameter Name="AppObserverMonitorResourceGovernanceLimits" DefaultValue="false" />
<!-- CertificateObserver-->
<Parameter Name="DaysUntilClusterExpiryWarningThreshold" DefaultValue="42" />
<Parameter Name="DaysUntilAppExpiryWarningThreshold" DefaultValue="42" />
<!-- Required: These are JSON-style lists of strings, empty should be "[]", full should be "['1fda27a2923505e47de37db48ff685b049642c25', '3gda29a2923505e77de37cb48ff685b049642c89', etc...] or ['mycommon'1, 'mycommon2', etc...]" -->
<Parameter Name="AppCertThumbprintsToObserve" DefaultValue="[]" />
<Parameter Name="AppCertCommonNamesToObserve" DefaultValue="[]" />
<!-- ContainerObserver -->
<Parameter Name="ContainerObserverConfigurationFile" DefaultValue="ContainerObserver.config.json" />
<!-- Concurrency/Parallelism Support
Note: If you do not monitor several containers, then enabling this is not super useful. -->
<Parameter Name="ContainerObserverEnableConcurrentMonitoring" DefaultValue="false" />
<Parameter Name="ContainerObserverMaxConcurrentTasks" DefaultValue="20" />
<!-- Disk Observer Warning/Error Thresholds -->
<Parameter Name="DiskObserverDiskSpacePercentUsageWarningThreshold" DefaultValue="90" />
<Parameter Name="DiskObserverDiskSpacePercentUsageErrorThreshold" DefaultValue="" />
<Parameter Name="DiskObserverAverageQueueLengthErrorThreshold" DefaultValue="" />
<Parameter Name="DiskObserverAverageQueueLengthWarningThreshold" DefaultValue="" />
<!-- Folder size monitoring. If you want to monitor folder sizes, then enable this feature and provide full paths (and/or path env vars) as shown below. -->
<Parameter Name="DiskObserverEnableFolderSizeMonitoring" DefaultValue="false" />
<!-- Supply full path/threshold(in MB) pairs for Warning/Error level monitoring here. Format is "fullpath0, size0 | fullpath1, size1 | fullpath2, size2 ..." -->
<Parameter Name="DiskObserverFolderPathsErrorThresholdsMb" DefaultValue="" />
<!-- Note that on Linux, .NET core Environment.Get/SetEnvironmentVariable is only supported at process level, not machine level. So, environment variables for path are not supported by DiskObserver. -->
<Parameter Name="DiskObserverFolderPathsWarningThresholdsMb" DefaultValue="C:\fabric_observer_logs, 250 | D:\SomeFolder, 1024 | %SOMEFULLPATH%, 4096 | %SOMEPATH%\SubFolder, 1024" />
<!-- FabricSystemObserver -->
<Parameter Name="FabricSystemObserverUseCircularBuffer" DefaultValue="false" />
<!-- Required-If UseCircularBuffer = True -->
<Parameter Name="FabricSystemObserverResourceUsageDataCapacity" DefaultValue="" />
<!-- *Windows-only*: KVS LVID Usage Monitoring. This is an advanced feature and should only be enabled if you are experiencing KVS LVID (ESE) exhaustion on Windows. This is rare and generally not applicable to most customers. -->
<Parameter Name="FabricSystemObserverEnableKvsLvidMonitoring" DefaultValue="false" />
<Parameter Name="FabricSystemObserverMonitorPrivateWorkingSet" DefaultValue="false" />
<!-- FabricSystemObserver Warning/Error Thresholds -->
<Parameter Name="FabricSystemObserverCpuErrorLimitPercent" DefaultValue="" />
<Parameter Name="FabricSystemObserverCpuWarningLimitPercent" DefaultValue="90" />
<Parameter Name="FabricSystemObserverMemoryErrorLimitMb" DefaultValue="" />
<Parameter Name="FabricSystemObserverMemoryWarningLimitMb" DefaultValue="4096" />
<Parameter Name="FabricSystemObserverNetworkErrorActivePorts" DefaultValue="" />
<Parameter Name="FabricSystemObserverNetworkWarningActivePorts" DefaultValue="" />
<Parameter Name="FabricSystemObserverNetworkErrorEphemeralPorts" DefaultValue="" />
<Parameter Name="FabricSystemObserverNetworkWarningEphemeralPorts" DefaultValue="7000" />
<Parameter Name="FabricSystemObserverAllocatedHandlesErrorLimit" DefaultValue="" />
<Parameter Name="FabricSystemObserverAllocatedHandlesWarningLimit" DefaultValue="" />
<Parameter Name="FabricSystemObserverThreadCountErrorLimit" DefaultValue="" />
<Parameter Name="FabricSystemObserverThreadCountWarningLimit" DefaultValue="500" />
<!-- OBSOLETE. Windows Event Log monitoring is no longer supported. -->
<Parameter Name="FabricSystemObserverMonitorWindowsEventLog" DefaultValue="false" />
<!-- NodeObserver -->
<Parameter Name="NodeObserverUseCircularBuffer" DefaultValue="false" />
<!-- Required-If UseCircularBuffer = True -->
<Parameter Name="NodeObserverResourceUsageDataCapacity" DefaultValue="" />
<Parameter Name="NodeObserverCpuErrorLimitPercent" DefaultValue="" />
<Parameter Name="NodeObserverCpuWarningLimitPercent" DefaultValue="95" />
<Parameter Name="NodeObserverMemoryErrorLimitMb" DefaultValue="" />
<Parameter Name="NodeObserverMemoryWarningLimitMb" DefaultValue="" />
<Parameter Name="NodeObserverMemoryErrorLimitPercent" DefaultValue="" />
<Parameter Name="NodeObserverMemoryWarningLimitPercent" DefaultValue="90" />
<Parameter Name="NodeObserverNetworkErrorActivePorts" DefaultValue="" />
<Parameter Name="NodeObserverNetworkWarningActivePorts" DefaultValue="" />
<Parameter Name="NodeObserverNetworkErrorFirewallRules" DefaultValue="" />
<Parameter Name="NodeObserverNetworkWarningFirewallRules" DefaultValue="" />
<Parameter Name="NodeObserverNetworkErrorEphemeralPorts" DefaultValue="" />
<Parameter Name="NodeObserverNetworkWarningEphemeralPorts" DefaultValue="20000" />
<Parameter Name="NodeObserverNetworkErrorEphemeralPortsPercentage" DefaultValue="" />
<Parameter Name="NodeObserverNetworkWarningEphemeralPortsPercentage" DefaultValue="90" />
<Parameter Name="NodeObserverEnableNodeSnapshot" DefaultValue="false" />
<!-- The below settings only make sense for Linux. -->
<Parameter Name="NodeObserverLinuxFileHandlesErrorLimitPercent" DefaultValue="" />
<Parameter Name="NodeObserverLinuxFileHandlesWarningLimitPercent" DefaultValue="90" />
<Parameter Name="NodeObserverLinuxFileHandlesErrorLimitTotal" DefaultValue="" />
<Parameter Name="NodeObserverLinuxFileHandlesWarningLimitTotal" DefaultValue="" />
<!-- OSObserver Windows AutoUpdate Settings Check. -->
<Parameter Name="OSObserverEnableWindowsAutoUpdateCheck" DefaultValue="true" />
<!-- NetworkObserver -->
<Parameter Name="NetworkObserverConfigurationFile" DefaultValue="NetworkObserver.config.json" />
<!-- AzureStorageUploadObserver -->
<Parameter Name="AzureStorageUploadObserverBlobContainerName" DefaultValue="fodumps" />
<!-- This can be an encrypted string or not. The decision is yours.
For encrypting, please use the Invoke-ServiceFabricEncryptText PowerShell API to generate the encrypted string to use here.
Any encrypted string must NOT contain line breaks or spaces. This is very important. If you copy/paste the encrypted string incorrectly, then FO will not upload dumps.
See https://docs.microsoft.com/en-us/powershell/module/servicefabric/invoke-servicefabricencrypttext?view=azureservicefabricps
for details. Follow the directions in the sample for creating an encryted secret. Note the use of thumbprint in the cmd. -->
<Parameter Name="AzureStorageUploadObserverStorageConnectionString" DefaultValue="" />
<!-- OR -->
<Parameter Name="AzureStorageUploadObserverStorageAccountName" DefaultValue="" />
<!-- This can be an encrypted string or not. If encrypted, then make sure there are no line breaks and no blank spaces between any characters. This is very important. -->
<Parameter Name="AzureStorageUploadObserverStorageAccountKey" DefaultValue="" />
<!-- Zip file compression level to use: Optimal, Fastest or NoCompression. Default is Optimal if this is not set. We do not recommend NoCompression. -->
<Parameter Name="AzureStorageUploadObserverZipFileCompressionLevel" DefaultValue="Optimal" />
<!-- Resource Governance
<Parameter Name="RGCPUCoresRequest" DefaultValue="0.5" />
<Parameter Name="RGMemoryInMB" DefaultValue="500" /> -->
</Parameters>
<!-- Import the ServiceManifest from the ServicePackage. The ServiceManifestName and ServiceManifestVersion
should match the Name and Version attributes of the ServiceManifest element defined in the
ServiceManifest.xml file. -->
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="FabricObserverPkg" ServiceManifestVersion="3.3.0" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
<Section Name="AppObserverConfiguration">
<Parameter Name="Enabled" Value="[AppObserverEnabled]" />
<Parameter Name="EnableConcurrentMonitoring" Value="[AppObserverEnableConcurrentMonitoring]" />
<Parameter Name="EnableKvsLvidMonitoring" Value="[AppObserverEnableKvsLvidMonitoring]" />
<Parameter Name="MaxConcurrentTasks" Value="[AppObserverMaxConcurrentTasks]" />
<Parameter Name="EmitRawMetricTelemetry" Value="[AppObserverEmitRawMetricTelemetry]" />
<Parameter Name="EnableCSVDataLogging" Value="[AppObserverEnableCSVDataLogging]" />
<Parameter Name="EnableEtw" Value="[AppObserverEnableEtw]" />
<Parameter Name="EnableTelemetry" Value="[AppObserverEnableTelemetry]" />
<Parameter Name="EnableVerboseLogging" Value="[AppObserverEnableVerboseLogging]" />
<Parameter Name="MonitorDuration" Value="[AppObserverMonitorDuration]" />
<Parameter Name="MonitorSleepDurationMilliseconds" Value="[AppObserverMonitorSleepDurationMilliseconds]" />
<Parameter Name="RunInterval" Value="[AppObserverRunInterval]" />
<Parameter Name="ConfigurationFileName" Value="[AppObserverConfigurationFile]" />
<Parameter Name="MonitorPrivateWorkingSet" Value="[AppObserverMonitorPrivateWorkingSet]" />
<Parameter Name="MonitorResourceGovernanceLimits" Value="[AppObserverMonitorResourceGovernanceLimits]" />
<Parameter Name="ClusterOperationTimeoutSeconds" Value="[AppObserverClusterOperationTimeoutSeconds]" />
<Parameter Name="UseCircularBuffer" Value="[AppObserverUseCircularBuffer]" />
<!-- Required-If UseCircularBuffer = True -->
<Parameter Name="ResourceUsageDataCapacity" Value="[AppObserverResourceUsageDataCapacity]" />
<Parameter Name="EnableChildProcessMonitoring" Value="[AppObserverEnableChildProcessMonitoring]" />
<Parameter Name="MaxChildProcTelemetryDataCount" Value="[AppObserverMaxChildProcTelemetryDataCount]" />
<Parameter Name="EnableProcessDumps" Value="[AppObserverEnableProcessDumps]" />
<Parameter Name="DumpType" Value="[AppObserverProcessDumpType]" />
<Parameter Name="MaxDumps" Value="[AppObserverMaxProcessDumps]" />
<Parameter Name="MaxDumpsTimeWindow" Value="[AppObserverMaxDumpsTimeWindow]" />
<!-- Resource Governance
<Parameter Name="RGCPUCoresRequest" Value="[RGCPUCoresRequest]" />
<Parameter Name="RGMemoryInMB" Value="[RGMemoryInMB]" /> -->
</Section>
<Section Name="CertificateObserverConfiguration">
<Parameter Name="Enabled" Value="[CertificateObserverEnabled]" />
<Parameter Name="EnableTelemetry" Value="[CertificateObserverEnableTelemetry]" />
<Parameter Name="EnableEtw" Value="[CertificateObserverEnableEtw]" />
<Parameter Name="EnableVerboseLogging" Value="[CertificateObserverEnableVerboseLogging]" />
<Parameter Name="RunInterval" Value="[CertificateObserverRunInterval]" />
<Parameter Name="DaysUntilClusterExpiryWarningThreshold" Value="[DaysUntilClusterExpiryWarningThreshold]" />
<Parameter Name="DaysUntilAppExpiryWarningThreshold" Value="[DaysUntilAppExpiryWarningThreshold]" />
<!-- Required: These are JSON-style lists of strings, empty should be "[]", full should be "['thumb1', 'thumb2']" -->
<Parameter Name="AppCertThumbprintsToObserve" Value="[AppCertThumbprintsToObserve]" />
<Parameter Name="AppCertCommonNamesToObserve" Value="[AppCertCommonNamesToObserve]" />
</Section>
<Section Name="DiskObserverConfiguration">
<Parameter Name="Enabled" Value="[DiskObserverEnabled]" />
<Parameter Name="EnableTelemetry" Value="[DiskObserverEnableTelemetry]" />
<Parameter Name="EmitRawMetricTelemetry" Value="[DiskObserverEmitRawMetricTelemetry]" />
<Parameter Name="EnableEtw" Value="[DiskObserverEnableEtw]" />
<Parameter Name="EnableFolderSizeMonitoring" Value="[DiskObserverEnableFolderSizeMonitoring]" />
<Parameter Name="EnableVerboseLogging" Value="[DiskObserverEnableVerboseLogging]" />
<Parameter Name="RunInterval" Value="[DiskObserverRunInterval]" />
<Parameter Name="DiskSpacePercentUsageErrorThreshold" Value="[DiskObserverDiskSpacePercentUsageErrorThreshold]" />
<Parameter Name="DiskSpacePercentUsageWarningThreshold" Value="[DiskObserverDiskSpacePercentUsageWarningThreshold]" />
<Parameter Name="AverageQueueLengthErrorThreshold" Value="[DiskObserverAverageQueueLengthErrorThreshold]" />
<Parameter Name="AverageQueueLengthWarningThreshold" Value="[DiskObserverAverageQueueLengthWarningThreshold]" />
<Parameter Name="FolderPathsErrorThresholdsMb" Value="[DiskObserverFolderPathsErrorThresholdsMb]" />
<Parameter Name="FolderPathsWarningThresholdsMb" Value="[DiskObserverFolderPathsWarningThresholdsMb]" />
</Section>
<Section Name="FabricSystemObserverConfiguration">
<Parameter Name="Enabled" Value="[FabricSystemObserverEnabled]" />
<Parameter Name="EnableKvsLvidMonitoring" Value="[FabricSystemObserverEnableKvsLvidMonitoring]" />
<Parameter Name="EnableCSVDataLogging" Value="[FabricSystemObserverEnableCSVDataLogging]" />
<Parameter Name="EnableEtw" Value="[FabricSystemObserverEnableEtw]" />
<Parameter Name="EnableTelemetry" Value="[FabricSystemObserverEnableTelemetry]" />
<Parameter Name="EmitRawMetricTelemetry" Value="[FabricSystemObserverEmitRawMetricTelemetry]" />
<Parameter Name="EnableVerboseLogging" Value="[FabricSystemObserverEnableVerboseLogging]" />
<Parameter Name="MonitorDuration" Value="[FabricSystemObserverMonitorDuration]" />
<Parameter Name="MonitorSleepDurationMilliseconds" Value="[FabricSystemObserverMonitorSleepDurationMilliseconds]" />
<Parameter Name="RunInterval" Value="[FabricSystemObserverRunInterval]" />
<Parameter Name="MonitorPrivateWorkingSet" Value="[FabricSystemObserverMonitorPrivateWorkingSet]" />
<Parameter Name="UseCircularBuffer" Value="[FabricSystemObserverUseCircularBuffer]" />
<!-- Required-If UseCircularBuffer = True -->
<Parameter Name="ResourceUsageDataCapacity" Value="[FabricSystemObserverResourceUsageDataCapacity]" />
<!-- OBSOLETE. Windows Event Log monitoring is no longer supported. -->
<Parameter Name="MonitorWindowsEventLog" Value="[FabricSystemObserverMonitorWindowsEventLog]" />
<Parameter Name="CpuErrorLimitPercent" Value="[FabricSystemObserverCpuErrorLimitPercent]" />
<Parameter Name="CpuWarningLimitPercent" Value="[FabricSystemObserverCpuWarningLimitPercent]" />
<Parameter Name="MemoryErrorLimitMb" Value="[FabricSystemObserverMemoryErrorLimitMb]" />
<Parameter Name="MemoryWarningLimitMb" Value="[FabricSystemObserverMemoryWarningLimitMb]" />
<Parameter Name="NetworkErrorActivePorts" Value="[FabricSystemObserverNetworkErrorActivePorts]" />
<Parameter Name="NetworkWarningActivePorts" Value="[FabricSystemObserverNetworkWarningActivePorts]" />
<Parameter Name="NetworkErrorEphemeralPorts" Value="[FabricSystemObserverNetworkErrorEphemeralPorts]" />
<Parameter Name="NetworkWarningEphemeralPorts" Value="[FabricSystemObserverNetworkWarningEphemeralPorts]" />
<Parameter Name="AllocatedHandlesErrorLimit" Value="[FabricSystemObserverAllocatedHandlesErrorLimit]" />
<Parameter Name="AllocatedHandlesWarningLimit" Value="[FabricSystemObserverAllocatedHandlesWarningLimit]" />
<Parameter Name="ThreadCountErrorLimit" Value="[FabricSystemObserverThreadCountErrorLimit]" />
<Parameter Name="ThreadCountWarningLimit" Value="[FabricSystemObserverThreadCountWarningLimit]" />
</Section>
<Section Name="NetworkObserverConfiguration">
<Parameter Name="Enabled" Value="[NetworkObserverEnabled]" />
<Parameter Name="EnableTelemetry" Value="[NetworkObserverEnableTelemetry]" />
<Parameter Name="EnableEtw" Value="[NetworkObserverEnableEtw]" />
<Parameter Name="EnableVerboseLogging" Value="[NetworkObserverEnableVerboseLogging]" />
<Parameter Name="RunInterval" Value="[NetworkObserverRunInterval]" />
<Parameter Name="ConfigurationFileName" Value="[NetworkObserverConfigurationFile]" />
</Section>
<Section Name="NodeObserverConfiguration">
<Parameter Name="Enabled" Value="[NodeObserverEnabled]" />
<Parameter Name="EnableTelemetry" Value="[NodeObserverEnableTelemetry]" />
<Parameter Name="EmitRawMetricTelemetry" Value="[NodeObserverEmitRawMetricTelemetry]" />
<Parameter Name="EnableCSVDataLogging" Value="[NodeObserverEnableCSVDataLogging]" />
<Parameter Name="EnableEtw" Value="[NodeObserverEnableEtw]" />
<Parameter Name="EnableNodeSnapshot" Value="[NodeObserverEnableNodeSnapshot]" />
<Parameter Name="EnableVerboseLogging" Value="[NodeObserverEnableVerboseLogging]" />
<Parameter Name="MonitorDuration" Value="[NodeObserverMonitorDuration]" />
<Parameter Name="MonitorSleepDurationMilliseconds" Value="[NodeObserverMonitorSleepDurationMilliseconds]" />
<Parameter Name="RunInterval" Value="[NodeObserverRunInterval]" />
<Parameter Name="UseCircularBuffer" Value="[NodeObserverUseCircularBuffer]" />
<!-- Required-If UseCircularBuffer = True -->
<Parameter Name="ResourceUsageDataCapacity" Value="[NodeObserverResourceUsageDataCapacity]" />
<Parameter Name="CpuErrorLimitPercent" Value="[NodeObserverCpuErrorLimitPercent]" />
<Parameter Name="CpuWarningLimitPercent" Value="[NodeObserverCpuWarningLimitPercent]" />
<Parameter Name="MemoryErrorLimitMb" Value="[NodeObserverMemoryErrorLimitMb]" />
<Parameter Name="MemoryWarningLimitMb" Value="[NodeObserverMemoryWarningLimitMb]" />
<Parameter Name="MemoryErrorLimitPercent" Value="[NodeObserverMemoryErrorLimitPercent]" />
<Parameter Name="MemoryWarningLimitPercent" Value="[NodeObserverMemoryWarningLimitPercent]" />
<Parameter Name="NetworkErrorActivePorts" Value="[NodeObserverNetworkErrorActivePorts]" />
<Parameter Name="NetworkWarningActivePorts" Value="[NodeObserverNetworkWarningActivePorts]" />
<Parameter Name="NetworkErrorFirewallRules" Value="[NodeObserverNetworkErrorFirewallRules]" />
<Parameter Name="NetworkWarningFirewallRules" Value="[NodeObserverNetworkWarningFirewallRules]" />
<Parameter Name="NetworkErrorEphemeralPorts" Value="[NodeObserverNetworkErrorEphemeralPorts]" />
<Parameter Name="NetworkWarningEphemeralPorts" Value="[NodeObserverNetworkWarningEphemeralPorts]" />
<Parameter Name="NetworkErrorEphemeralPortsPercentage" Value="[NodeObserverNetworkErrorEphemeralPortsPercentage]" />
<Parameter Name="NetworkWarningEphemeralPortsPercentage" Value="[NodeObserverNetworkWarningEphemeralPortsPercentage]" />
<Parameter Name="LinuxFileHandlesErrorLimitPercent" Value="[NodeObserverLinuxFileHandlesErrorLimitPercent]" />
<Parameter Name="LinuxFileHandlesWarningLimitPercent" Value="[NodeObserverLinuxFileHandlesWarningLimitPercent]" />
<Parameter Name="LinuxFileHandlesErrorLimitTotal" Value="[NodeObserverLinuxFileHandlesErrorLimitTotal]" />
<Parameter Name="LinuxFileHandlesWarningLimitTotal" Value="[NodeObserverLinuxFileHandlesWarningLimitTotal]" />
</Section>
<Section Name="OSObserverConfiguration">
<Parameter Name="Enabled" Value="[OSObserverEnabled]" />
<Parameter Name="EnableTelemetry" Value="[OSObserverEnableTelemetry]" />
<Parameter Name="EnableEtw" Value="[OSObserverEnableEtw]" />
<Parameter Name="EnableVerboseLogging" Value="[OSObserverEnableVerboseLogging]" />
<Parameter Name="EnableWindowsAutoUpdateCheck" Value="[OSObserverEnableWindowsAutoUpdateCheck]" />
<Parameter Name="RunInterval" Value="[OSObserverRunInterval]" />
</Section>
<Section Name="AzureStorageUploadObserverConfiguration">
<Parameter Name="Enabled" Value="[AzureStorageUploadObserverEnabled]" />
<Parameter Name="EnableTelemetry" Value="[AzureStorageUploadObserverEnableTelemetry]" />
<Parameter Name="EnableEtw" Value="[AzureStorageUploadObserverEnableEtw]" />
<Parameter Name="EnableVerboseLogging" Value="[AzureStorageUploadObserverEnableVerboseLogging]" />
<Parameter Name="RunInterval" Value="[AzureStorageUploadObserverRunInterval]" />
<Parameter Name="BlobContainerName" Value="[AzureStorageUploadObserverBlobContainerName]" />
<!-- Azure Storage Auth: Either supply an encrypted Connection String or an account name and encrypted Account Key.
Note that you *can* use unencrypted strings. This is not recommended, but the decision is yours. If you choose to do this,
then you must set IsEncrypted to false both in the below settings and the corresponding settings in Settings.xml. -->
<Parameter Name="AzureStorageConnectionString" Value="[AzureStorageUploadObserverStorageConnectionString]" IsEncrypted="true" />
<!-- OR use Account Name/Account Key pair if NOT using Connection String.. -->
<Parameter Name="AzureStorageAccountName" Value="[AzureStorageUploadObserverStorageAccountName]" />
<Parameter Name="AzureStorageAccountKey" Value="[AzureStorageUploadObserverStorageAccountKey]" IsEncrypted="true" />
<!-- File compression level -->
<Parameter Name="ZipFileCompressionLevel" Value="[AzureStorageUploadObserverZipFileCompressionLevel]" />
</Section>
<Section Name="ContainerObserverConfiguration">
<Parameter Name="Enabled" Value="[ContainerObserverEnabled]" />
<Parameter Name="EnableConcurrentMonitoring" Value="[ContainerObserverEnableConcurrentMonitoring]" />
<Parameter Name="MaxConcurrentTasks" Value="[ContainerObserverMaxConcurrentTasks]" />
<Parameter Name="EnableTelemetry" Value="[ContainerObserverEnableTelemetry]" />
<Parameter Name="EmitRawMetricTelemetry" Value="[ContainerObserverEmitRawMetricTelemetry]" />
<Parameter Name="EnableEtw" Value="[ContainerObserverEnableEtw]" />
<Parameter Name="EnableVerboseLogging" Value="[ContainerObserverEnableVerboseLogging]" />
<Parameter Name="EnableCSVDataLogging" Value="[ContainerObserverEnableCSVDataLogging]" />
<Parameter Name="RunInterval" Value="[ContainerObserverRunInterval]" />
<Parameter Name="ConfigurationFileName" Value="[ContainerObserverConfigurationFile]" />
</Section>
<Section Name="ObserverManagerConfiguration">
<Parameter Name="ObserverLoopSleepTimeSeconds" Value="[ObserverManagerObserverLoopSleepTimeSeconds]" />
<Parameter Name="ObserverExecutionTimeout" Value="[ObserverManagerObserverExecutionTimeoutSeconds]" />
<Parameter Name="EnableVerboseLogging" Value="[ObserverManagerEnableVerboseLogging]" />
<Parameter Name="EnableETWProvider" Value="[ObserverManagerEnableETWProvider]" />
<Parameter Name="ETWProviderName" Value="[ObserverManagerETWProviderName]" />
<Parameter Name="EnableTelemetryProvider" Value="[ObserverManagerEnableTelemetryProvider]" />
<Parameter Name="EnableFabricObserverOperationalTelemetry" Value="[ObserverManagerEnableOperationalFOTelemetry]" />
<Parameter Name="ObserverFailureHealthStateLevel" Value="[ObserverManagerObserverFailureHealthStateLevel]" />
<Parameter Name="ObserverLogPath" Value="[ObserverLogPath]" />
<Parameter Name="TelemetryProvider" Value="[TelemetryProvider]" />
<!-- Application Insights -->
<Parameter Name="AppInsightsConnectionString" Value="[AppInsightsConnectionString]" />
<!-- LogAnalytics -->
<Parameter Name="LogAnalyticsWorkspaceId" Value="[LogAnalyticsWorkspaceId]" />
<Parameter Name="LogAnalyticsSharedKey" Value="[LogAnalyticsSharedKey]" />
<Parameter Name="LogAnalyticsLogType" Value="[LogAnalyticsLogType]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
<Policies>
<!-- Resource Governance
<ServicePackageResourceGovernancePolicy CpuCoresLimit="[RGCPUCoresRequest]" />
<ResourceGovernancePolicy CodePackageRef="Code" MemoryInMB="[RGMemoryInMB]" /> -->
<!-- NOTE: FabricObserver runs a setup script during activation on Linux. It must be run as System user (root).
Thus the below policy, which only impacts the Setup phase of FO, needs to be uncommented if you are deploying FO to a Linux cluster.
Other than the Setup script, FO does not need to (and therefore should not) run as a non-root user on Linux. Leave EntryPointType set to Setup.
<RunAsPolicy CodePackageRef="Code" UserRef="SystemUser" EntryPointType="Setup" /> -->
<!-- If you have to run FO process as SystemUser on Windows or root user on Linux, uncomment below. This is not recommended, generally.
<RunAsPolicy CodePackageRef="Code" UserRef="SystemUser" /> -->
</Policies>
</ServiceManifestImport>
<Principals>
<Users>
<User Name="SystemUser" AccountType="LocalSystem" />
</Users>
</Principals>
<Certificates>
<SecretsCertificate X509FindValue="" Name="" />
</Certificates>
</ApplicationManifest>