High CPU usage on Windows machines using IFW-API

I have some Windows servers that I’m trying to monitor using Icinga for Windows and the check_command of “Invoke-IcingaCheckPerfCounter”. Initially I was just trying to get all of the counters working and once I did I noticed what others have notice which is that CPU usage gets very high. Once I came to the realization that their solution was to make sure they were using the IFW-API I tried to configure that. I’m not having much luck. I’m not using Director, but manually configuring my environment.

I think I’ve followed the instructions but have been looking at it too long and must be missing something. I’ve added import “ifw-api” to my PowerShell_Base.conf on my Icinga2 server. It still seems to be running the CPU high on the checked host. I am pretty sure I’ve configured everything on the host to be allowing the API but I’m not sure what I’m missing. Any help is appreciated.

  • Icinga for Windows output (Show-Icinga)
    Icinga for Windows environment:

Environment configuration:

PowerShell Root => C:\Program Files\WindowsPowerShell\Modules
Icinga for Windows Service Path => C:\Program Files\icinga-framework-service
Icinga for Windows Service User => NT AUTHORITY\SYSTEM
Icinga for Windows Service Pid => 10248
Icinga for Windows JEA Pid =>
Icinga Agent Path => C:\Program Files\ICINGA2
Icinga Agent User => NT AUTHORITY\SYSTEM
Defined Default User => QUATTRO-VM-W1\icinga
Icinga Managed User => False
PowerShell Version => 5.1.14393.8146
Operating System => Microsoft Windows Server 2016 Standard
Operating System Version => 10.0.14393
JEA Context => IcingaForWindows
JEA Session File => C:\Program Files\WindowsPowerShell\Modules\icinga-powershell-framework\RoleCapabilities\IcingaForWindows.psrc
Api Check Forwarder => True
Debug Mode => False

Icinga for Windows Certificate:

Issuer => CN=Icinga CA
Subject => CN=quattro-vm-w1.cowpokes.cowboystatetrucking.com

List of configured background daemons on this system:

Start-IcingaServiceCheckDaemon

No arguments defined

Start-IcingaWindowsRESTApi

No arguments defined

List of configured background service checks on this system:
=> Collect Metrics Over Time - Icinga for Windows

No background service checks configured

List of configured repositories on this system. The list order matches the apply order:

Icinga Stable Local

CloneSource => https://packages.icinga.com/IcingaForWindows/stable/ifw.repo.json
Enabled => True
LocalPath => C:\icinga\icinga_stable
Order => 1
RemotePath => C:\icinga\icinga_stable
UseSCP => False

Icinga Stable

CloneSource =>
Enabled => True
LocalPath =>
Order => 0
RemotePath => https://packages.icinga.com/IcingaForWindows/stable/ifw.repo.json
UseSCP => False

Installed components on this system:

Component Version Available


agent 2.14.6 2.14.6
framework 1.13.3 1.13.3
mssql 1.5.0 1.5.0
plugins 1.13.1 1.13.1
service 1.3.0 1.3.0

  • Version used (icinga2 --version)
    icinga2 - The Icinga 2 network monitoring daemon (version: r2.13.6-1)

Copyright (c) 2012-2025 Icinga GmbH (https://icinga.com/)
License GPLv2+: GNU GPL version 2 or later https://gnu.org/licenses/gpl2.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

System information:
Platform: Debian GNU/Linux
Platform version: 12 (bookworm)
Kernel: Linux
Kernel version: 6.1.0-27-amd64
Architecture: x86_64

Build information:
Compiler: GNU 12.2.0
Build host: x86-ubc-02
OpenSSL version: OpenSSL 3.0.16 11 Feb 2025

Application information:

General paths:
Config directory: /etc/icinga2
Data directory: /var/lib/icinga2
Log directory: /var/log/icinga2
Cache directory: /var/cache/icinga2
Spool directory: /var/spool/icinga2
Run directory: /run/icinga2

Old paths (deprecated):
Installation root: /usr
Sysconf directory: /etc
Run directory (base): /run
Local state directory: /var

Internal paths:
Package data directory: /usr/share/icinga2
State path: /var/lib/icinga2/icinga2.state
Modified attributes path: /var/lib/icinga2/modified-attributes.conf
Objects path: /var/cache/icinga2/icinga2.debug
Vars path: /var/cache/icinga2/icinga2.vars
PID path: /run/icinga2/icinga2.pid

  • Operating System and version
    Debian 12 Bookworm

  • Enabled features (icinga2 feature list)
    Disabled features: command compatlog debuglog elasticsearch gelf icingadb influxdb influxdb2 livestatus opentsdb perfdata statusdata syslog
    Enabled features: api checker graphite ido-mysql mainlog notification

  • Icinga Web 2 version and modules (System - About)
    |Icinga Web 2 Version |2.11.4|
    |—|—|
    |PHP Version |8.2.28|

Loaded Libraries

icinga/icinga-php-thirdparty 0.11.0
icinga/icinga-php-library 0.10.1

Loaded Modules

doc 2.11.4 Configure
monitoring 2.11.4 Configure
  • Config validation (icinga2 daemon -C)
    [2025-06-16 18:04:43 -0600] information/cli: Icinga application loader (version: r2.13.6-1)
    [2025-06-16 18:04:43 -0600] information/cli: Loading configuration file(s).
    [2025-06-16 18:04:43 -0600] information/ConfigItem: Committing config item(s).
    [2025-06-16 18:04:43 -0600] information/ApiListener: My API identity: cst-XenIcinga2
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 1 GraphiteWriter.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 1 NotificationComponent.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 1 IdoMysqlConnection.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 1 CheckerComponent.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 7 UserGroups.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 5 TimePeriods.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 5 Users.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 364 Services.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 3 ServiceGroups.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 703 ScheduledDowntimes.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 17 Zones.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 3 NotificationCommands.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 451 Notifications.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 83 Hosts.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 1 IcingaApplication.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 17 HostGroups.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 415 Dependencies.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 1 EventCommand.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 636 Downtimes.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 15 Endpoints.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 1 FileLogger.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 1 ApiUser.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 279 CheckCommands.
    [2025-06-16 18:04:44 -0600] information/ConfigItem: Instantiated 1 ApiListener.
    [2025-06-16 18:04:45 -0600] information/ScriptGlobal: Dumping variables to file ‘/var/cache/icinga2/icinga2.vars’
    [2025-06-16 18:04:45 -0600] information/cli: Finished validating the configuration file(s).

  • If you run multiple Icinga 2 instances, the zones.conf file (or icinga2 object list --type Endpoint and icinga2 object list --type Zone) from all affected nodes