Releases: Icinga/icinga-powershell-framework
Icinga for Windows v1.3.2
1.3.2 (2021-07-09)
Security Fixes
- #298 Fixes possible security vulnerability on Icinga for Windows service registration, by not quoting the service path on registration
You can read more on this on the Knowledge Base Entry with further details, on how to apply the fix and test if you are affected.
Icinga for Windows v1.5.1
1.5.1 (2021-07-07)
Bugfixes
- #276 Fixes check value conversion to decimal, which sometimes did not resolve values properly and caused conversion issues
- #282 Fixes issue on
System.Text.StringBuilder
which fails to initialize properly on some older Windows systems - #284 Fixes exception while creating default threshold objects
- #285 Fixes plain Icinga 2 conf generation for commands, which was caused by a new exception output for additional output
- #293 Fixes crash on REST-Api for NULL values while parsing the REST message
- #295 Fixes background service check daemon not working with arguments for plugins
- #297 Fixes null exception error which can occur in certain edge cases, caused by testing
New-IcingaCheck
directly without function wrapper
Icinga for Windows v1.5.0
1.5.0 (2021-06-02)
Upgrading Steps
SecureString
and Icinga Director Baskets
We have updated the configuration baskets generator to set arguments defined as SecureString
(for passwords) to hidden
within the Icinga Director. This will prevent users from simply gaining access to a password while having access to the Director.
Please update manually all your CustomFields under Icinga Director
-> Define Data Fields
-> Search for *_Securestring_*
-> Field Visibility
to Hidden
before importing new configuration baskets. Otherwise you will have two data fields stored within your Icinga Director and have to enter all passwords again for your service checks.
Reworked plugins and removed arguments
Please note that in general plugins should no longer ship % values performance data and only the actually values including thresholds and min/max input. With the new Icinga for Windows Framework, you can use your graphing solution to properly calculate % values there on your own for display context. Monitoring is for most plugins possible, by simply adding a % sign behind your threshold.
In case the plugin does not support this input for this specify argument, you will receive a UNKNOWN
output.
Invoke-IcingaCheckNetworkInterface
The following arguments have been removed from the plugin and are no longer usable:
- IncomingAvgBandUsageWarn
- IncomingAvgBandUsageCrit
- OutboundAvgBandUsageWarn
- OutboundAvgBandUsageCrit
These arguments were a % value based on the link speed and the current traffic of the interface. With the new argument handling for % values with Icinga for Windows v1.5.0, you can achieve the same result with the following, already present arguments:
- DeviceTotalBytesSecWarn
- DeviceTotalBytesSecCrit
- DeviceSentBytesSecWarn
- DeviceSentBytesSecCrit
- DeviceReceivedBytesSecWarn
- DeviceReceivedBytesSecCrit
Invoke-IcingaCheckMemory
We entirely reworked the plugin and added the same % value shipping with Icinga for Windows v1.5.0, which means we removed the following arguments:
- PercentWarning
- PercentCritical
In addition we added page file monitoring capabilities to the plugin with additional arguments
Invoke-IcingaCheckUsedPartitionSpace
As for both previous plugins, we reworked used partition space with changes for % values with Icinga for Windows 1.5.0 and fixed minor issues from the ground up.
Invoke-IcingaCheckPerfCounter
We fixed a spelling issue on the command itself, which was Invoke-IcingaCheckPerfcounter
before and now properly displays Invoke-IcingaCheckPerfCounter
. For that reason your current plugin configuration will change.
To resolve this beforehand, rename the custom variable within your Icinga Director to match the new uppercase C
for Counter
, before importing new configuration baskets.
Features and Updates
Enhancements
- #228 Adds feature to suppress any kind of console output except for plugin output and performance data
- #229 CustomFields defined as
SecureString
are now set tohidden
within the Icinga Director configuration basket - please read the upgrading docs carefully - #234 Adds support to allow custom exception lists for Icinga Exceptions, making it easier for different modules to ship their own exception messages
- #235 Adds new Cmdlet
Show-IcingaEventLogAnalysis
to get a better overview on how many log entries are present within the EventLog based on hour, minute and day average/maximum for allowing a more dynamic configuration forInvoke-IcingaCheckEventLog
- #236 Adds feature which stops the Icinga Agent before upgrading the Icinga PowerShell Framework and starting it again afterwards (in case it was running), to resolve some possible file lock issues
- #241 Ensures we use TLS 1.1 and 1.2 for REST-Api calls, as used certificates in general are created with these
- #243 Adds stacktrace output for exceptions in case plugin execution fails
- #248 Improves
Test-IcingaPerformanceCounterCategory
by creating an object for the Performance Counter category provided and checking if it is a valid object instead of relying on the registry which might not contain all categories in the correct language. - #249 Improves internal exception handler to get rid if misplaced
:
and adds all fields properly - #250 Improve error handling on plugin execution by informing the user if the plugin is simply not installed or the entire module was not loaded because of errors or missing dependencies
- #264 Adds initial handling for handling link speeds or anything else by using new units and conversions, which were formerly used inside the Network plugin and corresponding provider
Bugfixes
- #231 Fixes error while using Icinga Director Self-Service API, in case the host or host API key was deleted inside the Icinga Director and the installation wizard was called with the correct template key, while the old host key was still present inside the Icinga for Windows configuration
- #232 Fixes wrong encoding while using REST-Api checks experimental feature, and now forces UTF8
- #237 Fixes
Icinga PowerShell Framework
root folder lookup, in case the module was installed with PowerShell gallery, which creates version folders for each installed version - #240 While filtering for certain services with
Get-IcingaServices
, there were some attributes missing from the collection. These are now added resulting in always correct output data. - #245 Fixes loading of
.pfx
certificates by properly checking the file type - #265 Fixes
Test-Numeric
to now accept negative numeric values and als fixes errors, causing.
to be allowed multiple times.ConvertFrom-TimeSpan
now properly prints on negative values if the time provided is positive or negative and also prints microseconds asus
in case the value is loer than1ms
- #269 Fixes unhandled exception on
Set-IcingaCacheData
, as the-ErrorAction Stop
argument was not set and therefor the function never halted on errors - #272 Fixes invalid unit conversion, in case first char of a string is matching time metrics
Icinga for Windows v1.4.1
1.4.1 (2021-03-10)
Bugfixes
- #222 Fixes an issue with [Secure.String] arguments for PowerShell plugins, caused by
ConvertTo-IcingaSecureString
Cmdlet not being pre-loaded - #224 Fixes "memory leak" on background daemon for registered service checks, by clearing the error stack and manually calling the PowerShell garbage collector to force freeing of memory
Icinga for Windows v1.4.0
1.4.0 (2021-03-02)
Breaking Changes
There are changes made to the pre-compiled configuration files and Get-IcingaCheckCommandConfig.
Please have a look on the upgrading before applying the new configuration files.
Enhancements
- #180 Ensure check data are separated from each thread and not accessible from one thread to another to prevent conflicting results
- #193 Adds optional support for adding milliseconds to
Get-IcingaUnixTime
with the-Milliseconds
argument for more detailed time comparison - #198 Adds support to flush the content of the Icinga Agent API directory with a single Cmdlet
Clear-IcingaAgentApiDirectory
- #203 Removes experimental state of the Icinga PowerShell Framework code caching and adds docs on how to use the feature
- #205 Ensure Icinga for Windows configuration file is opened as read-only for every single task besides actually modifying configuration content
- #207 Adds new Argument
-LabelName
toNew-IcingaCheck
, allowing the developer to provide custom label names for checks and override the default based on the check name. - #210 Updates the Icinga DSL for building PowerShell arrays to ensure all string values are properly escaped with
'
. In case the user already wrapped commands with'
by himself, this will not have an effect as we only add single quotes for escaping if they are not present already - #211 Adds feature to uninstall single components for Icinga for Windows or to uninstall everything and start entirely from new
- #213 Added support to fetch network interface for
Register-IcingaDirectorSelfServiceHost
directly from provided director url - #213 Added support for Icinga Framework Code Cache file being deleted once the feature is disabled
- #213 Added support to suppress any console output for the current PowerShell session by using
Disable-IcingaFrameworkConsoleOutput
and to enable it again by usingEnable-IcingaFrameworkConsoleOutput
- #213 Added support for
-Release
argument forGet-IcingaFrameworkServiceBinary
suppressing questions and using GitHub as source directly if set - #213 Added support to color console output by using
Write-IcingaConsolePlain
with the new argument-ForeColor
- #213 Added new feature to write Icinga for Windows console headers more easily, better structured and formatted with
Write-IcingaConsoleHeader
by adding line content as array elements
Bugfixes
- #206 Fixes background service check daemon for collecting metrics over time which will no longer share data between configured checks which might cause higher CPU load and a possible memory leak
- #208 Fixes
Convert-IcingaPluginThresholds
which sometimes did not return proper numeric usable values for our internal functions, causing issues on plugin calls. In addition the function now also supports the handling for % units. - #213 Fixed possible crash on
Get-IcingaAgentFeatures
if PowerShell is not running as administrator and therefor the commandicinga2 feature list
can not be processed - #213 Fixed
ConvertTo-IcingaSecureString
to return$null
for empty strings instead of throwing an exception - #214 Fixes wrong
[Unknown] PluginNotInstalled
exception because of new plugin configuration and wrong checking against APi result in case feature is enabled - #215 Fixes wrong used variable for arguments on API call checks
Experimental
- #204 Adds experimental feature to forward checks executed by the Icinga Agent to an internal REST-Api, to reduce the performance impact on systems with lower resources available
- #213 Adds new experimental feature
Management Console
for better and easier management for Icinga for Windows and improved automation and deployed.
Icinga for Windows v1.3.1
1.3.1 (2021-02-04)
Bugfixes
- #186 Fixes path handling for custom local/web path sources for service binary installation
- #188 Removes hardcoded zones
director-global
andglobal-zones
which were always set regardless of user specification. This fix will ensure the user has the option to add or not add these zones - #189 Fixes wrong documented user group for accessing Performance Counter objects which should be
Performance Monitor Users
- #192 Fixes code base for
Invoke-IcingaCheckService
by preferring to fetch the startup type of services by using WMI instead ofGet-Services
, as the result ofGet-Services
might be empty in some cases - #195 Fix Agent installer crash on package lookup with different files in directory
- #196 Fix Icinga 2 .conf file generator to no longer generate invalid plain configuration files
- #197 Fixes progress bar appearance on check outputs for certain plugins, by disabling the entire PowerShell progress bar during the usage of Icinga for Windows
Icinga for Windows v1.3.0
1.3.0 (2020-12-01)
Breaking Changes
Components
- Please have a look on the changes made on the Icinga PowerShell Plugins for a smooth upgrade process
Icinga PowerShell Kickstart
- In order to be able to use the Icinga PowerShell Kickstart Script with v1.3.0 of the Icinga PowerShell Framework, you will have to upgrade the kickstart script to v1.2.0
Enhancements
- #19 Add support for proxy servers for web calls and re-arranges content from lib/web to lib/webserver and uses lib/web for new proxy/web calls
- #121 Adds feature allowing sharing of local variables with Icinga Shell, by using
-ArgumentList
. They can then be accessed by using$IcingaShellArgs
with the correct array index id, following the order of items added to-ArgumentList
- #136 Adds support to ignore empty check packages and return
Ok
instead ofUnknown
if-IgnoreEmptyPackage
is set onNew-IcingaCheckPackage
- #137 Adds Cmdlet to compare a DateTime object with the current DateTime and return the offset as Integer in seconds
- #139 Add Cmdlet
Start-IcingaShellAsUser
to open an Icinga Shell as different user for testing - #141 Adds Cmdlet
Convert-IcingaPluginThresholds
as generic approach to convert Icinga Thresholds with units to the lowest unit of this type. - #134 Adds Cmdlet
Test-IcingaWindowsInformation
to check if a WMI class exist and if we can fetch data from it. In addition we add support for binary value comparison with the new CmdletTest-IcingaBinaryOperator
- #142 Experimental: Adds feature to cache the Framework code into a single file to speed up the entire loading process, mitigating the impact on performance on systems with few CPU cores. You enable disables this feature by using
Enable-IcingaFrameworkCodeCache
andDisable-IcingaFrameworkCodeCache
. Updating the cache is done withWrite-IcingaFrameworkCodeCache
- #149 Adds support to add Wmi permissions for a specific user and namespace with
Add-IcingaWmiPermissions
. In addition you can remove users from Wmi namespaces by usingRemove-IcingaWmiPermissions
- #153 Adds support to add a knowledge base id to
Exit-IcingaThrowException
for easier referencing. This should mostly be used for custom messages, as we should track the main knowledge base id's inside the messages directly. Native messages should be split in a hashtable with aMessage
andIWKB
key - #155 Adds support to write all objects collected by
Get-IcingaWindowsInformation
into the Windows EventLog in case the debug output for the Icinga PowerShell Framework is enabled. - #162 Adds feature to test the length of plugin custom variables during config generation and throws error in case the total length is bigger than 64 digits, as imports into the Icinga Director by using baskets is not possible otherwise
- #163 Adds native support for writing Icinga 2 configuration for plugins and allows to easy publish new configurations for modules with the new Cmdlet
Publish-IcingaPluginConfiguration
- #164 Adds
exit
after callingicinga
on Windows Terminal integration to ensure the shell will close in case the Icinga shell is closed - #168 Adds support for new Icinga Director SelfService config arguments which will now ensure the wizard will run without asking questions by using the Icinga Director configuration (requires Icinga Director 1.8 or later)
Bugfixes
- #059, #060 Fixes interface handling for multiple interfaces and returns only the main interface by fallback to routing table and adds support for Windows 2008 R2
- #114#146 Fixes Icinga Agent API being wrongly disabled after successful certificate configuration and installation
- #127 Fixes wrong error message on failed MSSQL connection due to database not reachable by using
-IntegratedSecurity
- #128 Fixes unhandled output from loading
System.Reflection.Assembly
which can cause weird side effects for plugin outputs - #130 Fix crash while running services as background task to collect metrics over time by missing Performance Counter cache initialisation
- #133, #147 Fixes an issue while changing the hostname between upper/lower case which might cause unwanted exceptions on one hand but also required manual signing of requests on the CA master as the signing process was not completed
- #138 Fixes possible value overflow on
Convert-Bytes
while converting from anything larger than MB to Bytes - #140 Fixes version fetching for not loaded modules during upgrades/plugin calls with
Get-IcingaPowerShellModuleVersion
- #143 Fixes the annoying hint from the analyzer to check space before open brace
- #152 Fixes incorrect rendering for empty arrays which used
$null
incorrectly instead of@()
and fixed ValidateSet which now also supports arrays as data type - #159 Fixes crash during update of the Icinga Framework, caused by the newly introduced experimental feature for code caching
- #165 Fixes fetching for Icinga Agent certificate for REST-Api daemon on upper/lower case hostname mismatch
- #166 Fixes fetching of Icinga Agent MSI packages by correctly comparing versions to ensure we always use the latest version and fixes
release
usage for local/network drive sources - #167 Fixes error while writing EventLog entries with too large message size
- #177 Fixes Wmi permissions to allow domain accounts while not being locally known on the system
Icinga for Windows v1.2.0
1.2.0 (2020-08-28)
Upgrading Notes
Breaking change with non-equal versions
Check Command configuration generated by Icinga for Windows 1.2.0 require Icinga for Windows 1.2.0 or later deployed on all systems, otherwise you will run into issues with an unknown command Exit-IcingaPluginNotInstalled
error.
- To properly catch errors on check execution you will have to import check commands as Director basket again by using
Get-IcingaCheckCommandConfig
. Further details can be found in the upgrading docs
Notes
- Improved documentation for plenty of Cmdlets and functionality
- We have updated the handling for plugin outputs which will now only print
non Ok
values by using verbosity 0 on check plugin configuration and includeOk
checks for packages withnon Ok
checks on verbosity 1. Additional details can be found on issue #99 - #80 Adds wrapper function
Get-IcingaWindowsInformation
for WMI and CIM calls to properly handle config/permission errors - #93 Adds PSScriptAnalyzer for improved and identical code quality
Enhancements
- Adds configuration for Windows Terminal integration
- Adds new Cmdlet
Show-IcingaPerformanceCounterInstances
to display all available instances for Performance Counters - #76 Adds support to test for required .NET Framework Version 4.6.0 or above before trying to install the Icinga Agent
- #87 Adds wrapper command to test new code or functionality of Framework and/or plugins
- #88 Adds Start/Stop timer functionality for performance analysis
- #94 Adds
Namespace
argument for Get-IcingaWindowsInformation for additional filtering - #95 Improves error handling for issues by using
Use-Icinga
initialising or by calling plugins which are not installed - #98 Adds support for SecureString as password argument on config generation
- #99 Improves plugin output with different verbosity settings
- #100, #107 Adds help for each Performance Counter Cmdlet, separates Cmdlets into single files, adds
Filter
option forShow-IcingaPerformanceCounterCategories
and addsTest-IcingaPerformanceCounterCategory
to test if a category exists on a system - #108 Adds function
Show-IcingaPerformanceCounterHelp
to fetch the help of a specific Performance Counter - #111 Improves error message on permission problems while accessing CIM/WMI objects including details on how to resolve them
Bugfixes
- #78 Fix Icinga Agent package fetching for x86 architecture
- #79 Fix ConvertTo-Seconds to output valid numeric data with multiple digits
- #81, #82 Fix error on EventLog initialising in case
Icinga for Windows
application is not registered on new machines and throws proper error message on plugin execution on how to resolve it - #83 Fix error on Icinga Config basket renderer for illegal ValidateSet while $null values were allowed values
- #84 Fix conversion of
ConvertTo-Seconds
andConvertTo-SecondsFromIcingaThresholds
while the input value is$null
- #85 Fix incorrect handling to empty service user password which was configured as empty
String
instead of$null
SecureString
object - #89 Fix file type question during
Get-IcingaCheckCommandConfig
generation in Windows 2012 R2 and older - #90 Fix file type question during Icinga Agent installation on Windows 2012 R2 while using a custom installation target
- #91 Fix wrong default values being set for installer arguments by using the Icinga Director Self-Service API
- #92 Fix
Set-IcingaAcl
which fails on older Windows systems with a security id error and not at all/not properly setting required permissions for directories - #96 Re-Implements caching for Performance Counters and fixes an issue with counters sometimes returning value 0 instead of the correct value
- #97, #101, #104 Fix value digit count for Performance Counters