Die Art der Überwachung ist stark von der eingesetzten Virtualisierungslösung abhängig. Während containerbasierende Technologien wie Open VZ, Linux Vserver oder Solaris Zones geschlossene Laufzeitumgebungen ohne Start eines zusätzlichen Betriebssystemskerns darstellen, geben System- und Paravirtualisierung wie bei VMware, Xen oder KVM nur einen gewissen Ressourcenpool frei. Das Host-System muss sich dann selbst um deren Verwendung kümmern und steuert die bereitgestellten Ressourcen unabhängig von der Virtualisierungsumgebung. Dies lässt auch den großen Unterschied in möglichen Überwachungsszenarien erkennen. Während containertbasierende Lösungen meist homogene Systemumgebungen repräsentieren, sind auf Basis von Paravirtualisierung möglicherweise unterschiedliche Wirtsysteme vorzufinden.
Open VZ kann auf Basis eines gepatchten Linux-Kernels weitere Container zur Verfügung stellen. Für jeden Container legt Open VZ eine entsprechende Struktur im Proc-Bereich des Linux-Systems an. Während es in früheren Versionen beschiedene Bereiche wie
»/proc/user_beancounters
«
,
»/proc/user_beancounters_sub
«
und
»/proc/user_beancounters_debug
«
gab, finden sich diese in den aktuellen Versionen in einer hierarchischen Struktur wieder.
Geordnet nach UID des Containers sind alle Counter aufgelistet und lassen sich leicht mit Filesystem-Kommandos einsehen. Auf Basis des Beispiel-Plugins im Open-VZ-Wiki hat Robert Nelson
»check_openvz
«
[9]
entwickelt. Versehen mit Schwellwerten kann der Administrator die Überschreitung entsprechender Limits wie zum Beispiel
»kmemsize
«
und
»numproc
«
so überwachen und die Konfiguration an die tatsächlich benötigten Ressourcen angepassen. Solaris Zones können ergänzend zur Überwachung des gehosteten Betriebssystems nur mit Hilfe des
»zoneadm
«
-Kommandos überwacht werden. Mit
»check_zones
«
[10]
ist ein Wrapper-Plugin verfügbar, das den Aufruf erleichtert und die Status der Zonen ausgibt. Eine interessante Alternative dazu stellt noch die Verwendung von
»prtstat -Z
«
da (
Listing 1
).
Listing 1
prstat
# prstat -Z # PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP # 173 daemon 17M 11M sleep 59 0 3:18:42 0.2% rcapd/1 # 17676 apl 6916K 3468K cpu4 59 0 0:00:00 0.1% prstat/1 # ... # ZONEID NPROC SWAP RSS MEMORY TIME CPU ZONE $ # 0 48 470M 482M 1.5% 4:05:57 0.0% global $ # 3 85 2295M 2369M 7.2% 0:36:36 0.0% refapp1 $ # 6 74 13G 3273M 10% 16:51:18 0.0% refdb1 $ # Total: 207 processes, 709 lwps, load averages: 0.05, 0.06, 0.11$
Damit kann der Administrator Informationen über CPU- und Memory-Verbrauch in den einzelnen virtuellen Maschinen global ermitteln, ein Zugriff auf die Zone selbst ist nicht zwingend notwendig. Die beiden Plugins [11] für CPU und Memory sind nur einfache Shell-Skripts, können aber auch mit Warnschwellen umgehen.