Skip to content

Commit

Permalink
FO 3.2.2
Browse files Browse the repository at this point in the history
Resource Governance (Memory, Windows-only) impl and more...
  • Loading branch information
GitTorre authored Sep 27, 2022
2 parents 5e2229e + 4b3b52f commit ceac20f
Show file tree
Hide file tree
Showing 68 changed files with 2,662 additions and 1,305 deletions.
8 changes: 4 additions & 4 deletions Build-SFPkgs.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ function Build-SFPkg {
try {
Push-Location $scriptPath

Build-SFPkg "Microsoft.ServiceFabricApps.FabricObserver.Linux.SelfContained.3.2.1.831" "$scriptPath\bin\release\FabricObserver\linux-x64\self-contained\FabricObserverType"
Build-SFPkg "Microsoft.ServiceFabricApps.FabricObserver.Linux.FrameworkDependent.3.2.1.831" "$scriptPath\bin\release\FabricObserver\linux-x64\framework-dependent\FabricObserverType"
Build-SFPkg "Microsoft.ServiceFabricApps.FabricObserver.Linux.SelfContained.3.2.2.831" "$scriptPath\bin\release\FabricObserver\linux-x64\self-contained\FabricObserverType"
Build-SFPkg "Microsoft.ServiceFabricApps.FabricObserver.Linux.FrameworkDependent.3.2.2.831" "$scriptPath\bin\release\FabricObserver\linux-x64\framework-dependent\FabricObserverType"

Build-SFPkg "Microsoft.ServiceFabricApps.FabricObserver.Windows.SelfContained.3.2.1.831" "$scriptPath\bin\release\FabricObserver\win-x64\self-contained\FabricObserverType"
Build-SFPkg "Microsoft.ServiceFabricApps.FabricObserver.Windows.FrameworkDependent.3.2.1.831" "$scriptPath\bin\release\FabricObserver\win-x64\framework-dependent\FabricObserverType"
Build-SFPkg "Microsoft.ServiceFabricApps.FabricObserver.Windows.SelfContained.3.2.2.831" "$scriptPath\bin\release\FabricObserver\win-x64\self-contained\FabricObserverType"
Build-SFPkg "Microsoft.ServiceFabricApps.FabricObserver.Windows.FrameworkDependent.3.2.2.831" "$scriptPath\bin\release\FabricObserver\win-x64\framework-dependent\FabricObserverType"
}
finally {
Pop-Location
Expand Down
7 changes: 2 additions & 5 deletions ClusterObserver.nuspec.template
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata minClientVersion="3.3.0">
<id>%PACKAGE_ID%</id>
<version>2.2.0.831</version>
<version>2.2.1.831</version>
<releaseNotes>
- This is a relatively major release with significant changes. Many of these will be transparent to you except for the new service deployment model (removal of DefaultServices in ApplicationManifest.xml to support ARM deployment).
- Supports FabricObserver's Extensibility model: you can build and run ClusterObserver plugins.
- Employs FabricObserver.Extensibility for a significant portion of its functionality (duplicated code removed).
- Requires SF Runtime 8+ and .NET Core 3.1.
- Bug fix.
</releaseNotes>
<authors>Microsoft</authors>
<license type="expression">MIT</license>
Expand Down
52 changes: 41 additions & 11 deletions ClusterObserver/ClusterObserver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,10 @@ private async Task ReportClusterHealthAsync(CancellationToken token)
// Telemetry.
if (TelemetryEnabled)
{
await TelemetryClient?.ReportHealthAsync(telemetry, token);
if (TelemetryClient != null)
{
await TelemetryClient.ReportHealthAsync(telemetry, token);
}
}

// ETW.
Expand Down Expand Up @@ -220,7 +223,10 @@ await FabricClientRetryHelper.ExecuteFabricActionWithRetryAsync(
// Telemetry.
if (TelemetryEnabled)
{
await TelemetryClient?.ReportHealthAsync(telemetry, token);
if (TelemetryClient != null)
{
await TelemetryClient.ReportHealthAsync(telemetry, token);
}
}

// ETW.
Expand Down Expand Up @@ -356,7 +362,10 @@ await FabricClientRetryHelper.ExecuteFabricActionWithRetryAsync(
// Send Telemetry.
if (TelemetryEnabled)
{
await TelemetryClient?.ReportHealthAsync(telemetryData, token);
if (TelemetryClient != null)
{
await TelemetryClient.ReportHealthAsync(telemetryData, token);
}
}

// Emit ETW.
Expand Down Expand Up @@ -522,7 +531,10 @@ private async Task ProcessApplicationHealthAsync(ApplicationHealthState appHealt
// Telemetry.
if (TelemetryEnabled)
{
await TelemetryClient?.ReportHealthAsync(foTelemetryData, token);
if (TelemetryClient != null)
{
await TelemetryClient.ReportHealthAsync(foTelemetryData, token);
}
}

// ETW.
Expand Down Expand Up @@ -557,7 +569,10 @@ private async Task ProcessApplicationHealthAsync(ApplicationHealthState appHealt
// Telemetry.
if (TelemetryEnabled)
{
await TelemetryClient?.ReportHealthAsync(telemetryData, token);
if (TelemetryClient != null)
{
await TelemetryClient.ReportHealthAsync(telemetryData, token);
}
}

// ETW.
Expand Down Expand Up @@ -624,7 +639,10 @@ private async Task ProcessServiceHealthAsync(ServiceHealthState serviceHealthSta
// Telemetry.
if (TelemetryEnabled)
{
await TelemetryClient?.ReportHealthAsync(foTelemetryData, token);
if (TelemetryClient != null)
{
await TelemetryClient.ReportHealthAsync(foTelemetryData, token);
}
}

// ETW.
Expand Down Expand Up @@ -661,7 +679,10 @@ private async Task ProcessServiceHealthAsync(ServiceHealthState serviceHealthSta
// Telemetry.
if (TelemetryEnabled)
{
await TelemetryClient?.ReportHealthAsync(telemetryData, token);
if (TelemetryClient != null)
{
await TelemetryClient.ReportHealthAsync(telemetryData, token);
}
}

// ETW.
Expand Down Expand Up @@ -791,7 +812,10 @@ private async Task ProcessGenericEntityHealthAsync(HealthEvaluation evaluation,
// Telemetry.
if (TelemetryEnabled)
{
await TelemetryClient?.ReportHealthAsync(telemetryData, token);
if (TelemetryClient != null)
{
await TelemetryClient.ReportHealthAsync(telemetryData, token);
}
}

// ETW.
Expand All @@ -804,7 +828,7 @@ private async Task ProcessGenericEntityHealthAsync(HealthEvaluation evaluation,
private async Task MonitorNodeStatusAsync(CancellationToken token, bool isTest = false)
{
// If a node's NodeStatus is Disabling, Disabled, or Down
// for at or above the specified maximum time (in Settings.xml),
// for at or above the specified maximum time (in ApplicationManifest.xml, see MaxTimeNodeStatusNotOk),
// then CO will emit a Warning signal.
var nodeList = await FabricClientRetryHelper.ExecuteFabricActionWithRetryAsync(
() =>
Expand Down Expand Up @@ -838,7 +862,10 @@ private async Task MonitorNodeStatusAsync(CancellationToken token, bool isTest =
// Telemetry.
if (TelemetryEnabled)
{
await TelemetryClient?.ReportHealthAsync(telemetry, token);
if (TelemetryClient != null)
{
await TelemetryClient.ReportHealthAsync(telemetry, token);
}
}

// ETW.
Expand Down Expand Up @@ -902,7 +929,10 @@ private async Task MonitorNodeStatusAsync(CancellationToken token, bool isTest =
// Telemetry.
if (TelemetryEnabled)
{
await TelemetryClient?.ReportHealthAsync(telemetry, token);
if (TelemetryClient != null)
{
await TelemetryClient.ReportHealthAsync(telemetry, token);
}
}

// ETW.
Expand Down
2 changes: 1 addition & 1 deletion ClusterObserver/ClusterObserverManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public sealed class ClusterObserverManager : IDisposable
private bool appParamsUpdating;

// Folks often use their own version numbers. This is for internal diagnostic telemetry.
private const string InternalVersionNumber = "2.2.0.831";
private const string InternalVersionNumber = "2.2.1.831";

public bool EnableOperationalTelemetry
{
Expand Down
8 changes: 4 additions & 4 deletions ClusterObserver/PackageRoot/ServiceManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ServiceManifest Name="ClusterObserverPkg"
Version="2.2.0.831"
Version="2.2.1.831"
xmlns="http://schemas.microsoft.com/2011/01/fabric"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
Expand All @@ -11,7 +11,7 @@
</ServiceTypes>

<!-- Code package is your service executable. -->
<CodePackage Name="Code" Version="2.2.0.831">
<CodePackage Name="Code" Version="2.2.1.831">
<EntryPoint>
<ExeHost>
<Program>ClusterObserver</Program>
Expand All @@ -21,11 +21,11 @@

<!-- Config package is the contents of the Config directory under PackageRoot that contains an
independently-updateable and versioned set of custom configuration settings for your service. -->
<ConfigPackage Name="Config" Version="2.2.0.831" />
<ConfigPackage Name="Config" Version="2.2.1.831" />

<!-- Config package is the contents of the Config directory under PackageRoot that contains an
independently-updateable and versioned set of custom configuration settings for your service. -->
<DataPackage Name="Data" Version="2.2.0.831" />
<DataPackage Name="Data" Version="2.2.1.831" />

<Resources>
<Endpoints>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="ClusterObserverType" ApplicationTypeVersion="2.2.0.831" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="ClusterObserverType" ApplicationTypeVersion="2.2.1.831" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<Parameters>
<!-- ClusterObserverManager settings. -->
<Parameter Name="ObserverManagerObserverLoopSleepTimeSeconds" DefaultValue="30" />
Expand Down Expand Up @@ -27,7 +27,7 @@
should match the Name and Version attributes of the ServiceManifest element defined in the
ServiceManifest.xml file. -->
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="ClusterObserverPkg" ServiceManifestVersion="2.2.0.831" />
<ServiceManifestRef ServiceManifestName="ClusterObserverPkg" ServiceManifestVersion="2.2.1.831" />
<ConfigOverrides>
<ConfigOverride Name="Config">
<Settings>
Expand Down
2 changes: 1 addition & 1 deletion Documentation/Deployment/Deploy-FabricObserver.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Try {

$resourceGroup = "<YOUR-CLUSTER-RESOURCE-NAME>"
$armTemplate = "service-fabric-observer.json"
$armTemplateParameters = "service-fabric-observer.v3.2.1.831.parameters.json"
$armTemplateParameters = "service-fabric-observer.v3.2.2.831.parameters.json"

cd "<LOCAL-FO-REPO-PATH>\Documentation\Deployment"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
},
"applicationTypeVersionClusterObserver": {
"type": "string",
"defaultValue": "2.2.0.831",
"defaultValue": "2.2.1.831",
"metadata": {
"description": "Provide the app version number of ClusterObserver. This must be identical to the version speficied in the related sfpkg."
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"value": "<ClusterResourceName>"
},
"applicationTypeVersionClusterObserver": {
"value": "2.2.0.831"
"value": "2.2.1.831"
},
"packageUrlClusterObserver": {
"value": "<PUBLIC-ACCESSIBLE-URL-FOR-CLUSTEROBSERVER-SFPKG>"
Expand Down
6 changes: 3 additions & 3 deletions Documentation/Deployment/service-fabric-observer.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@
},
"applicationTypeVersionFabricObserver": {
"type": "string",
"defaultValue": "3.2.1.831",
"defaultValue": "3.2.2.831",
"metadata": {
"description": "Provide the app version number of FabricObserver. This must be identical to the version, 3.2.1.831, in the referenced sfpkg specified in packageUrlFabricObserver."
"description": "Provide the app version number of FabricObserver. This must be identical to the version, 3.2.2.831, in the referenced sfpkg specified in packageUrlFabricObserver."
}
},
"packageUrlFabricObserver": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "This has to be a public accessible URL for the sfpkg file which contains the FabricObserver app package. Example: https://github.com/microsoft/service-fabric-observer/releases/download/[xxxxxxxx]/Microsoft.ServiceFabricApps.FabricObserver.Windows.SelfContained.3.2.1.831.sfpkg"
"description": "This has to be a public accessible URL for the sfpkg file which contains the FabricObserver app package. Example: https://github.com/microsoft/service-fabric-observer/releases/download/[xxxxxxxx]/Microsoft.ServiceFabricApps.FabricObserver.Windows.SelfContained.3.2.2.831.sfpkg"
}
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"value": "<YOUR-CLUSTER-RESOURCE-NAME>"
},
"applicationTypeVersionFabricObserver": {
"value": "3.2.1.831"
"value": "3.2.2.831"
},
"packageUrlFabricObserver": {
"value": "<PUBLIC-ACCESSIBLE-URL-FOR-FABRICOBSERVER-SFPKG>"
Expand Down
12 changes: 8 additions & 4 deletions Documentation/ErrorCodes.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,13 @@
| FO039 | Number of threads at or exceeding configured ***Error*** threshold for an app service process. |
| FO040 | Number of threads at or exceeding configured ***Warning*** threshold for an app service process. |
| FO041 | Percentage of Maximum number of KVS LVIDs in use is at or exceeding internal ***Warning*** threshold (75%) for an app service process. This is non-configurable and Windows-only. |
| FO042 | Folder size (MB) has exceeded configured ***Error*** threshold |
| FO043 | Folder size (MB) has exceeded configured ***Warning*** threshold |
| FO042 | Folder size (MB) has exceeded configured ***Error*** threshold. |
| FO043 | Folder size (MB) has exceeded configured ***Warning*** threshold. |
| FO044 | Percentage of active Ephemeral TCP ports in use is at or exceeding configured ***Error*** threshold for an app service process. |
| FO045 | Percentage of active Ephemeral TCP ports in use is at or exceeding configured ***Error*** threshold for an app service process. |
| FO045 | Percentage of active Ephemeral TCP ports in use is at or exceeding configured ***Warning*** threshold for an app service process. |
| FO046 | Percentage of active Ephemeral TCP ports in use is at or exceeding configured ***Error*** threshold for a machine. |
| FO047 | Percentage of active Ephemeral TCP ports in use is at or exceeding configured ***Error*** threshold for a machine. |
| FO047 | Percentage of active Ephemeral TCP ports in use is at or exceeding configured ***Warning*** threshold for a machine. |
| FO048 | Private Bytes usage (Commit) is at or exceeding configured ***Error*** threshold for an app service process. |
| FO049 | Private Bytes usage (Commit) is at or exceeding configured ***Warning*** threshold for an app service process. |
| FO050 | At or exceeding default (90%) or configured percentage of Resource Governance limit 'MemoryInMBLimit' for a service code package. |

Loading

0 comments on commit ceac20f

Please sign in to comment.