forked from microsoft/service-fabric-observer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApplicationManifest.xml
451 lines (451 loc) · 39.7 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
<?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.2.13" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<!-- ObserverManager Configuration -->
<Parameter Name="ObserverManagerObserverLoopSleepTimeSeconds" DefaultValue="30" />
<Parameter Name="ObserverManagerObserverExecutionTimeoutSeconds" DefaultValue="3600" />
<Parameter Name="ObserverManagerEnableVerboseLogging" DefaultValue="false" />
<!-- 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 to transmit telemetry events to ApplicationInsights or LogAnalytics, for example, then enable this setting. Otherwise, set this to false. -->
<Parameter Name="ObserverManagerEnableTelemetryProvider" DefaultValue="true" />
<!-- 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. -->
<Parameter Name="ObserverManagerEnableOperationalFOTelemetry" DefaultValue="true" />
<!-- 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 (which means don't put FO into Warning or Error state or create an Ok health event (info)). -->
<Parameter Name="ObserverManagerObserverFailureHealthStateLevel" DefaultValue="Warning" />
<Parameter Name="ObserverManagerTelemetryProvider" DefaultValue="AzureLogAnalytics" />
<Parameter Name="ObserverManagerAppInsightsConnectionString" DefaultValue="" />
<Parameter Name="ObserverManagerLogAnalyticsWorkspaceId" DefaultValue="" />
<Parameter Name="ObserverManagerLogAnalyticsSharedKey" DefaultValue="" />
<Parameter Name="ObserverLogPath" DefaultValue="fabric_observer_logs" />
<!-- Observer Configuration Settings.
Note: Add parameters for your Observer plugins here (e.g., [ObserverName]Enabled, etc.) so you can run
versionless parameter-only application upgrades to modify them while FO is running. By design, any observer you make using our
extensibility model will employ the same basic config parameters as all observers do. Please see Observers.md -->
<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" />
<!-- Deprecated: SFConfigurationObserver is only useful if you deploy the now-obsolete (and unsupported) FabricObserverWebApi application. -->
<Parameter Name="SFConfigurationObserverEnabled" DefaultValue="false" />
<!-- 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" />
<Parameter Name="SFConfigurationObserverEnableTelemetry" DefaultValue="false" />
<!-- 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="true" />
<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" />
<Parameter Name="SFConfigurationObserverEnableEtw" DefaultValue="false" />
<!-- CSV Logging -->
<Parameter Name="AppObserverEnableCSVDataLogging" DefaultValue="false" />
<Parameter Name="ContainerObserverEnableCSVDataLogging" DefaultValue="false" />
<Parameter Name="FabricSystemObserverEnableCSVDataLogging" DefaultValue="false" />
<Parameter Name="NodeObserverEnableCSVDataLogging" DefaultValue="false" />
<!-- 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" />
<Parameter Name="SFConfigurationObserverEnableVerboseLogging" DefaultValue="false" />
<!-- Monitor Durations (TimeSpan format, e.g., 00:00:00): How long an observer should monitor CPU usage per target (process or machine).
This setting only applies to 3 observers. -->
<Parameter Name="AppObserverMonitorDuration" DefaultValue="00:00:10" />
<Parameter Name="FabricSystemObserverMonitorDuration" DefaultValue="00:00:10" />
<Parameter Name="NodeObserverMonitorDuration" DefaultValue="00:00:10" />
<!-- 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. -->
<Parameter Name="AppObserverMonitorSleepDurationMilliseconds" DefaultValue="1000" />
<Parameter Name="FabricSystemObserverMonitorSleepDurationMilliseconds" DefaultValue="1000" />
<Parameter Name="NodeObserverMonitorSleepDurationMilliseconds" DefaultValue="1000" />
<!-- Run Intervals (TimeSpan format, e.g., 0.00:00:00): How often an enabled observer should run. -->
<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="" />
<Parameter Name="SFConfigurationObserverRunInterval" 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.
NOTE: If you monitor stateful Actor services, then you should set this to true. -->
<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="" />
<!-- KVS LVID Usage Monitoring - Windows-only.
This is a temporary monitor since SF will eventually employ an updated Windows ESE libray that supports long.MaxValue number of LVIDs. -->
<Parameter Name="FabricSystemObserverEnableKvsLvidMonitoring" DefaultValue="true" />
<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" />
<!-- Whether to monitor Windows Event Log. -->
<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.30" />
<Parameter Name="RGMemoryInMBLimit" 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.2.13" />
<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="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="RGMemoryInMBLimit" Value="[RGMemoryInMBLimit]" /> -->
</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="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="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]" />
<!-- Optional: SF Event Log can be noisy and full of non-error errors.,
so it's recommended that you only enable this for debugging purposes. This
only works if you deploy the FabricObserverWebApi service and enable it above (ObserverWebApiEnabled). -->
<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="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="SFConfigurationObserverConfiguration">
<Parameter Name="Enabled" Value="[SFConfigurationObserverEnabled]" />
<Parameter Name="EnableTelemetry" Value="[SFConfigurationObserverEnableTelemetry]" />
<Parameter Name="EnableEtw" Value="[SFConfigurationObserverEnableEtw]" />
<Parameter Name="EnableVerboseLogging" Value="[SFConfigurationObserverEnableVerboseLogging]" />
<Parameter Name="RunInterval" Value="[SFConfigurationObserverRunInterval]" />
</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="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="[ObserverManagerTelemetryProvider]" />
<Parameter Name="AppInsightsConnectionString" Value="[ObserverManagerAppInsightsConnectionString]" />
<Parameter Name="LogAnalyticsWorkspaceId" Value="[ObserverManagerLogAnalyticsWorkspaceId]" />
<Parameter Name="LogAnalyticsSharedKey" Value="[ObserverManagerLogAnalyticsSharedKey]" />
</Section>
</Settings>
</ConfigOverride>
</ConfigOverrides>
<Policies>
<!-- FabricObserver runs a setup script during activation (Linux and Windows). It must be run as System user.
Thus the below policy, which only impacts the Setup phase. The FabricObserver process itself runs as NetworkService on Windows and SFAppsUser on Linux. -->
<RunAsPolicy CodePackageRef="Code" UserRef="SystemUser" EntryPointType="Setup" />
<!-- Resource Governance
<ServicePackageResourceGovernancePolicy CpuCoresLimit="[RGCPUCoresRequest]" />
<ResourceGovernancePolicy CodePackageRef="Code" MemoryInMBLimit="[RGMemoryInMBLimit]" /> -->
</Policies>
</ServiceManifestImport>
<Principals>
<Users>
<User Name="SystemUser" AccountType="LocalSystem" />
</Users>
</Principals>
<Certificates>
<SecretsCertificate X509FindValue="" Name="" />
</Certificates>
</ApplicationManifest>