vCenter Host Label

Hallo!

Ich beschäftige mich gerade mit Version 2.0.0p8 und habe mein VMware vCenter mal in einer Test-Site hinzugefügt. Das vCenter selbst is eine VM. Nun wird das Host Label nicht richtig erkannt.
Der Host bekommt immer das Label “cmk/vsphere_object:vm” sollte aber “cmk/vsphere_object:vcenter” bekommen. Das liegt anscheinend daran, dass das host label discovery “esx_systeminfo” vor dem “esx_vsphere_vm” ausgeführt wird.
Im “esx_systeminfo” wird erkannt wird ob es ein vCenter oder ein ESXi host ist und im “esx_vsphere_vm” ob der host eine vm ist. Nun überschreibt letztere das “cmk/vsphere_object” label.
Das sieht man auch schön wenn man den discovery auf der CLI ausführt (siehe unten)
Die Information das der Host ein vCenter ist halte ich für deutlich wichtiger, als die Info das es eine VM ist. Vor allem wenn man mit Regeln arbeiten will die auf dem Label “cmk/vsphere_object:vcenter” aufbauen. Mein Vorschlag wäre nun den “esx_systeminfo” umzubennen das dieser als letzter ausgeführt wird.

Output:
cmk --no-cache -vv -II vcenter-test
Discovering services and host labels on: vcenter-test
vcenter-test:

  • FETCHING DATA
    Source: SourceType.HOST/FetcherType.PROGRAM
    [cpu_tracking] Start [7fd7cdbc29d0]
    Calling: /omd/sites/ccv2/share/check_mk/agents/special/agent_vsphere ‘-u’ ‘REMOVED’ ‘-s’ ‘REMOVED’ ‘-i’ ‘hostsystem,virtualmachine,datastore,counters,licenses’ ‘-P’ ‘–spaces’ ‘underscore’ ‘–vm_piggyname’ ‘alias’ ‘–host_pwr_display’ ‘esxhost’ ‘–no-cert-check’ ‘192.168.0.100’
    [ProgramFetcher] Fetch with cache settings: DefaultAgentFileCache(base_path=PosixPath(’/omd/sites/ccv2/tmp/check_mk/data_source_cache/special_vsphere/vcenter-test’), max_age=MaxAge(checking=0, discovery=120, inventory=120), disabled=True, use_outdated=False, simulation=False)
    Not using cache (Cache usage disabled)
    [ProgramFetcher] Execute data source
    Not using cache (Cache usage disabled)
    [cpu_tracking] Stop [7fd7cdbc29d0 - Snapshot(process=posix.times_result(user=0.0, system=0.009999999999999995, children_user=0.76, children_system=0.05, elapsed=3.0799999982118607))]
    Source: SourceType.HOST/FetcherType.PIGGYBACK
    [cpu_tracking] Start [7fd7cdbc2be0]
    No piggyback files for ‘vcenter-test’. Skip processing.
    No piggyback files for ‘192.168.0.100’. Skip processing.
    [PiggybackFetcher] Fetch with cache settings: NoCache(base_path=PosixPath(’/omd/sites/ccv2/tmp/check_mk/data_source_cache/piggyback/vcenter-test’), max_age=MaxAge(checking=0, discovery=120, inventory=120), disabled=True, use_outdated=False, simulation=False)
    Not using cache (Cache usage disabled)
    [PiggybackFetcher] Execute data source
    Not using cache (Cache usage disabled)
    [cpu_tracking] Stop [7fd7cdbc2be0 - Snapshot(process=posix.times_result(user=0.0, system=0.0, children_user=0.0, children_system=0.0, elapsed=0.0))]
  • PARSE FETCHER RESULTS
    Source: SourceType.HOST/FetcherType.PROGRAM
    Loading autochecks from /omd/sites/ccv2/var/check_mk/autochecks/vcenter-test.mk
    No persisted sections loaded
    → Add sections: [‘esx_systeminfo’, ‘esx_vsphere_clusters’, ‘esx_vsphere_datastores’, ‘esx_vsphere_licenses’, ‘esx_vsphere_objects’, ‘esx_vsphere_snapshots_summary’, ‘esx_vsphere_virtual_machines’, ‘esx_vsphere_vm’, ‘systemtime’]
    Source: SourceType.HOST/FetcherType.PIGGYBACK
    No persisted sections loaded
    → Add sections: []
    Received piggyback data for 388 hosts
  • EXECUTING HOST LABEL DISCOVERY
    Trying host label discovery with: esx_systeminfo, esx_vsphere_clusters, esx_vsphere_datastores, esx_vsphere_licenses, esx_vsphere_objects, esx_vsphere_snapshots_summary, esx_vsphere_virtual_machines, esx_vsphere_vm, systemtime
    cmk/vsphere_object: vcenter (esx_systeminfo)
    cmk/vsphere_object: vm (esx_vsphere_vm)
  • PERFORM HOST LABEL DISCOVERY
    Trying to acquire lock on /omd/sites/ccv2/var/check_mk/discovered_host_labels/vcenter-test.mk
    Got lock on /omd/sites/ccv2/var/check_mk/discovered_host_labels/vcenter-test.mk
    Releasing lock on /omd/sites/ccv2/var/check_mk/discovered_host_labels/vcenter-test.mk
    Released lock on /omd/sites/ccv2/var/check_mk/discovered_host_labels/vcenter-test.mk
  • EXECUTING DISCOVERY PLUGINS (15)
    Trying discovery with: esx_vsphere_vm_snapshots, esx_vsphere_vm_cpu, esx_vsphere_vm_datastores, esx_vsphere_vm_mounted_devices, esx_vsphere_vm_snapshots_summary, esx_vsphere_vm_mem_usage, esx_vsphere_vm_guest_tools, esx_vsphere_vm_name, esx_vsphere_vm_running_on, systemtime, esx_vsphere_vm_heartbeat, esx_vsphere_objects_count, esx_vsphere_licenses, esx_vsphere_datastores, esx_vsphere_objects
    Skip ignored check plugin name ‘esx_vsphere_vm_running_on’
    Trying to acquire lock on /omd/sites/ccv2/var/check_mk/autochecks/vcenter-test.mk
    Got lock on /omd/sites/ccv2/var/check_mk/autochecks/vcenter-test.mk
    Releasing lock on /omd/sites/ccv2/var/check_mk/autochecks/vcenter-test.mk
    Released lock on /omd/sites/ccv2/var/check_mk/autochecks/vcenter-test.mk
    64 esx_vsphere_datastores
    389 esx_vsphere_objects
    1 esx_vsphere_objects_count
    1 esx_vsphere_vm_cpu
    1 esx_vsphere_vm_datastores
    1 esx_vsphere_vm_guest_tools
    1 esx_vsphere_vm_heartbeat
    1 esx_vsphere_vm_mem_usage
    1 esx_vsphere_vm_mounted_devices
    1 esx_vsphere_vm_name
    1 esx_vsphere_vm_snapshots
    1 esx_vsphere_vm_snapshots_summary
    1 systemtime
    SUCCESS - Found 464 services, 1 host labels

Beste Grüße
Reinhard

Gibt es hierfür keine Lösung?

Beste Grüße
Reinhard

So wie es aussieht gibt es keine einfache Lösung hierfür.
Das erste Label wird nicht direkt überschrieben aber ignoriert da immer nur jeder Key einmal vorkommen darf.
Also in diesem Fall müsste die Label selbst geändert werden in etwas in der Art hier.

cmk/vsphere_object_vcenter: true (esx_systeminfo)
cmk/vsphere_object_vm: true (esx_vsphere_vm)

Ich würde die Hoffnung nicht ganz begraben, dass dies mal in näherer Zukunft noch geändert wird da es auch noch andere Label betrifft.
Nur ist die wieder ein “incompatible Change” und da bestehen immer etwas Ängste in München dies zu tun :wink:
Da die Label immer Unique Keys pro Host sein müssten würde ich hier eh dafür plädieren immer jeden Key einzigartig zu machen und diesen nur mittels true oder false zu belegen.

zB einen virtualisierten ESXi-Host, der dann sowohl “vm” als auch “server” sein müsste. Als vSAN Witness Host ist sowas gar nicht mal so unüblich …

Es gibt sogar einen einfachen Lösungsvorschlag wenn ich mir das richtig überlege.
Kopiere einen der beiden Checks (esx_systeminfo od. esx_vsphere_vm) in die ~/local/ Struktur und passe die Funktion an welche das Label ausgibt nach dem Muster was ich ober vorgeschlagen hab. Das ist erstmal nur für eines der beiden Labels notwendig dann sind beide vorhanden.

Ich hab’s jetzt mit einer Host Label Rule überschrieben.
Wenn das Thema bekannt ist und in Zukunkt geändert wird reicht mir das.

Beste Grüße
Reinhard