Highly configurable, extensible and performant Service Fabric watchdog service that, out of the box, monitors a broad range of physical machine resources that tend to be very important to Service Fabric services and maps these metrics to SF entities. It targets both Windows and Linux SF clusters.
Note: Microsoft.ServiceFabricApps.FabricObserver.Extensibility.3.2.14 shipped with an incorrect dependency specification. The issue is that it will build using the wrong version of DependencyInjection.Abstractions (7.0.0), which will break the build of your plugin. There are two simple fixes:
1.) Don't build your plugins targeting this release of Extensibility package. That is fine, generally, in fact. There is nothing in this release that would prevent your plugins from building and then from working when hosted in FO/CO 3.2.14 process. There are seldom breaking changes in ObserverBase and related code that break plugin building from release to release of the package. When your plugin is hosted in FO or CO, the version of these services will already have the same version of Extensibility library in place in their code packages. This means that your plugin will target that version at runtime.
2.) Add a Package Reference in your plugin csproj files that reference the correct version of DependencyInjection.Abstractions:
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
Again, option 2 is not necessary as there are no changes that will impact the behavior of your existing plugin(s) in this release of Extensibility package and the primary goal of using this package is to build your plugins without having to consume the entire FO/CO nuget package and then having to keep track of dependency versions of DependencyInjection.Abstractions when these are updated to later versions in the Extensibility project.
NOTE: If you employ the nupkgs
, then you should consume 3.2.10.2
patched release as it contains fixes for issues with FO version number in ApplicationManifest.xml (the app type and service manifest versions are wrong, so you won't be able to deploy FO directly from the nupkg). There are no code issue fixes, just a configuration fix, but if you don't manually change the application type version and service manifest version yourself, then FO won't deploy. So, just consume 3.2.10.2
nupkgs if you automate upgrades from nupkgs without modifying configuration first. The sfpkgs below are not impacted by this, so direct ARM deployment will work as expected.
AppObserver no longer relies on Environment.ProcessorCount to determine concurrent monitoring capability. Even if you are CPU-limiting FabricObserver to a percentage of a single CPU core via Service Fabric Resource Governance, in which case Environment.ProcessorCount would return 1, AppObserver will still monitor services concurrently if AppObserverEnableConcurrentMonitoring is set to true.
AppObserver: Bug fix in child process monitoring.
AppObserver: Bug fix in Cpu RG monitoring.
Performance and Code improvements.
Added support for CPU Resource Governance monitoring (Windows-only). By default, if enabled, FO will put services into Warning state when host processes reach 90% (or what you configure the threshold to be) of the specified governance limit.
Performance and code improvements.
AppObserver: Updated RGMemory implementation for monitoring Memory and warning when a service is approaching configured Resource Governance limits. This includes support for app parameter updates for RGMemory settings (Bug in previous versions).
AppObserver: Significant performance improvements for child process detection - essentially a new implementation that ensures both accuracy and speed. When you employ maximum concurrency level, FO will do more work (with more threads), but the overall impact on the CPU is not detrimental. If you monitor lots of services, and you run on systems with at least 8 logical processors, you should enable AppObserverEnableConcurrentMonitoring setting and set MaxConcurrentTasks to -1.
AppObserver now does a best effort job to prevent issues when Windows or Linux recycles process identifiers. Overall, AppObserver will prevent monitoring wrong processes (which is rare, but can happen without the new AppObserver logic to prevent it from doing so).
New public APIs in FabricObserver.Extensibility including fast process information lookups and BOUND state TCP port information retrieval.
Quality improvements, including new tests and expanded logging, across the board.
Note: You can deploy FO/CO to your cluster directly by clicking on the Deploy to Azure button. You will need to specify the path to the related sfpkg, located in the Assets section (choose the type (SelfContained or FrameworkDependent, right-click the asset name, Copy. Then, paste into the package field in the ARM portal UI).
This release contains a bug fix for concurrent processing in AppObserver. Note: If you do not set AppObserverEnableConcurrentMonitoring to true, then you don't need to upgrade from 3.2.5 right away. Else, you should.