it-novum / openitcockpit-agent-go

Cross-Platform Monitoring Agent for openITCOCKPIT written in Go
https://openitcockpit.io/download_agent/
Apache License 2.0
5 stars 2 forks source link

CPU usage percentage Check über den Agent zeigt falsche Werte #70

Open ppabst opened 2 years ago

ppabst commented 2 years ago

Moin, seit dem (ungefähr) letztem release von dem Agent, habe ich auf vielen Server Windows/Linux das phänomen das ich angeblich 100% CPU hätte, hab ich aber nicht. Auf dem Dashboard steht Server CPU usage percentage 100%. Wenn ich dann auf den Check klicke sehe ich ja den graphen und dort ist seit Stunden nicht mehr als 2 - 3 % und dann einen starken Ausschlag, auf dem System selber ist aber nichts zu sehen.

grafik grafik

Kernel Version 4.15.0-177-generic

nook24 commented 2 years ago

Leider kann ich das Problem nicht nachstellen, weder in einer VM noch auf Hardware. Hier mal ein Beispiel von einem Linux Server. Bildschirmfoto 2022-06-21 um 10 52 19

Die CPU Auslastung wird unter Windows und Linux auch völlig unterschiedlich abgefragt. Deswegen macht mich die Fehlerbeschreibung etwas stutzig.

Unter Windows wird die Klasse Win32_PerfFormattedData_PerfOS_Processor genutzt: https://docs.microsoft.com/de-de/windows/win32/wmisdk/wmi-tasks--performance-monitoring

Unter Linux werden die Werte aus /proc/stat ausgelesen. Die Berechnung des Prozentwertes ist von htop abgekupfert.

exa-mk commented 1 year ago

Ich kann das Phänomen auf mind. 1 Host (Proxmox Qemu-VM; Rocky Linux 9.1, Kernel 5.14.0-162.6.1.el9_1.0.1.x86_64) auch nachvollziehen.

kbilev commented 1 year ago

Hi, wir haben ein änliches Problem auf manchen Systemen. Es tritt gefühlt nur auf System auf welche eine load average von < 0,1 haben. Wenn ich folgendes Script ausführe "https://rosettacode.org/wiki/Linux_CPU_utilization#Go" habe ich folgenden Output:

go run cpu.go
CPU usage % at 1 second intervals:

1 :  0.000
2 :  0.000
3 :  0.000
4 :  0.990
5 :  0.000
6 :  0.000
7 : 14.000
8 : 33.663
9 :  0.000
10 :  1.000
11 : 35.000
12 :  5.051
13 :  0.990
14 :  1.000
15 : 42.574
16 :  0.000
17 :  4.000
18 :  1.000
19 :  0.000
20 :  0.000
21 :  0.000
22 :  0.000
23 :  0.000
24 : 39.394
25 :  0.000
26 :  0.000
27 :  0.000
28 :  0.000
29 :  1.980
30 :  5.000
31 : 40.404
32 :  1.000
33 :  0.000
34 : 40.000
35 :  0.000
36 :  0.000
37 : 15.842
38 : 27.273
39 :  0.000
40 :  0.000
41 :  0.000
42 :  0.000
43 :  0.000
44 :  0.000
45 : 40.000
46 :  0.000
47 :  6.000
48 :  0.000
49 :  0.000

Der Service Graph in openITC zeigt jedoch konstant 40% load an. Ich habe keinen Lösungsvorschlag, aber vieleicht hilft es, das Problem näher einzugrenzen System: Ubuntu 20.04.4 LTS 5.4.0-121-generic Beste Grüße

kbilev commented 1 year ago

Das "Problem" hat sich bei uns gelöst. Ein unglücklicher Zufall. Wenn ein rechenintensiver Check auf schwacher VM zur gleichen Zeit ausgeführt wird wie das "Check CPU Usage", zeigt der Agent einen hohen Wert an. Normal, da zu dieser Zeit die VM höher beansprucht ist. Dieser Wert ist aber nur eine Momentaufnahme und kann sich dann ich Graphen falsch wiederspiegeln da der Wert nur zb alle 5 Minuten abgefragt wird. 1 Sekunde 100%, 4 Minuten 59 0%, der Graph zeigt jedoch ständig 100% an. Einfache Lösung: Den/die Custom Checks mit ungeradem Intervall ausführen, damit dieser sich nicht mit dem Check CPU Usage überschneidet Beste Grüße

nook24 commented 1 year ago

Danke für die Info, sehr schöne Analyse. In der Tat vergleicht der Agent zwei unterschiedliche Messungen, welche in einem Abstand von einer Sekunde getätigt werden.

https://github.com/it-novum/openitcockpit-agent-go/blob/728a89e6f0890b5c3b26d24f1ee63eab5003bbe3/checks/cpu_posix.go#L55C2-L67