Monitoring Intel VROC with rstcli

Hello!

I’m trying to monitor a windows machine with a vroc-raid from intel. (Virtual RAID on CPU)
I have two “controllers” activated. The VROC for NVME and the origine RST SATA Controller.

I modified the check_mk_agent-plugin (rstcli.bat) to match IntelVROCCli.exe.

The service-discovery for this plugin is working for the NVME-Volume. The other Volumes doesnt appear.
I couldn’t figure out the difference. There are no interesting “ifs” in the sourcecode for this check plugin.

Anybody a hint for me to look out?

Here the output of rstcli:

<<<rstcli:sep(58)>>>
--VOLUME INFORMATION--

Name:                  System
Raid Level:            1
Size:                  300.00 GB
StripeSize:            N/A
Num Disks:             2
State:                 Normal
System:                True
Bootable:              True
Initialized:           False
Cache Policy:          Off

--DISKS IN VOLUME: System --

ID:                    0-0-0-0
Type:                  Disk
Disk Type:             SATA
State:                 Normal
Size:                  3576.98 GB
System Disk:           False
Usage:                 Array member
Serial Number:         S6E9999999999996
Model:                 SAMSUNG MZ799999999999BLT-00A07
Logical sector size:   512 B

ID:                    0-1-0-0
Type:                  Disk
Disk Type:             SATA
State:                 Normal
Size:                  3576.98 GB
System Disk:           False
Usage:                 Array member
Serial Number:         S6E999999999
Model:                 SAMSUNG MZ9999999T-00A07
Logical sector size:   512 B

--VOLUME INFORMATION--

Name:                  SSD-SATA
Raid Level:            1
Size:                  3276.97 GB
StripeSize:            N/A
Num Disks:             2
State:                 Normal
System:                False
Bootable:              True
Initialized:           True
Cache Policy:          Off

--DISKS IN VOLUME: SSD-SATA --

ID:                    0-0-0-0
Type:                  Disk
Disk Type:             SATA
State:                 Normal
Size:                  3576.98 GB
System Disk:           False
Usage:                 Array member
Serial Number:         S6ER99999996
Model:                 SAMSUNG MZ99999999-00A07
Logical sector size:   512 B

ID:                    0-1-0-0
Type:                  Disk
Disk Type:             SATA
State:                 Normal
Size:                  3576.98 GB
System Disk:           False
Usage:                 Array member
Serial Number:         S6ER999999949
Model:                 SAMSUNG MZ79999999999-00A07
Logical sector size:   512 B

--VOLUME INFORMATION--

Name:                  SSD-NVME
Raid Level:            1
Size:                  3398.13 GB
StripeSize:            N/A
Num Disks:             2
State:                 Normal
System:                False
Bootable:              True
Initialized:           True
Cache Policy:          Off

--DISKS IN VOLUME: SSD-NVME --

ID:                    1-0-0-0
Type:                  Disk
Disk Type:             NVMe*
State:                 Normal
Size:                  3576.98 GB
System Disk:           False
PCH Connected:         False
Usage:                 Array member
Serial Number:         20999D9C999A
Model:                 Micron_7300_XXXXXX
Logical sector size:   512 B
Socket Number:         0
Vmd Controller Number: 4
Root Port Offset:      0
Slot Number:           272

ID:                    1-0-1-0
Type:                  Disk
Disk Type:             NVMe*
State:                 Normal
Size:                  3576.98 GB
System Disk:           False
PCH Connected:         False
Usage:                 Array member
Serial Number:         20992D9C99XX
Model:                 Micron_7300_XXXXXXTDF
Logical sector size:   512 B
Socket Number:         0
Vmd Controller Number: 4
Root Port Offset:      1
Slot Number:           288

@beli3005 looks like there is a bug in the parse function of rstcli check plugin.

 95 def parse_rstcli(info):
 96     if info == [["rstcli not found"]]:
 97         return {}
 98 
 99     rstcli_sections = parse_rstcli_sections(info)
100     if rstcli_sections is None:
101         return {}
102 
103     volumes = {}
104     for section in rstcli_sections:
105         if section[0] == "VOLUME INFORMATION":
106             volumes.update(parse_rstcli_volumes(section[1]))
107         elif section[0].startswith("DISKS IN VOLUME"):
108             volume = section[0].split(":")[1].strip()
109             volumes[volume]["Disks"] = parse_rstcli_disks(section[1])
110         else:
111             raise MKGeneralException("invalid section in rstcli output: %s" % section[0])
112 
113     return volumes

line 106

106             volumes = parse_rstcli_volumes(section[1])

needs to be changed to

106             volumes.update(parse_rstcli_volumes(section[1]))

after tis change the check will discover three volumes with two disks each

RAID Disk SSD-NVME/1-0-0-0 Normal (unit: SSD-NVME, size: 3576.98 GB, type: NVMe*, model: Micron_7300_XXXXXX, serial: 20999D9C999A)
RAID Disk SSD-NVME/1-0-1-0 Normal (unit: SSD-NVME, size: 3576.98 GB, type: NVMe*, model: Micron_7300_XXXXXXTDF, serial: 20992D9C99XX)
RAID Disk SSD-SATA/0-0-0-0 Normal (unit: SSD-SATA, size: 3576.98 GB, type: SATA, model: SAMSUNG MZ99999999-00A07, serial: S6ER99999996)
RAID Disk SSD-SATA/0-1-0-0 Normal (unit: SSD-SATA, size: 3576.98 GB, type: SATA, model: SAMSUNG MZ79999999999-00A07, serial: S6ER999999949)
RAID Disk System/0-0-0-0 Normal (unit: System, size: 3576.98 GB, type: SATA, model: SAMSUNG MZ799999999999BLT-00A07, serial: S6E9999999999996)
RAID Disk System/0-1-0-0 Normal (unit: System, size: 3576.98 GB, type: SATA, model: SAMSUNG MZ9999999T-00A07, serial: S6E999999999)
RAID Volume SSD-NVME RAID 1, 2 disks (3398.13 GB), state Normal
RAID Volume SSD-SATA RAID 1, 2 disks (3276.97 GB), state Normal
RAID Volume System   RAID 1, 2 disks (300.00 GB), state Normal

4 Likes

you nailed it

great appreciation

Thanks!

Hi! So glad I found this thread, had the same result with more than one volume.
Changed like @thl-cmk wrote, worked instantly.

THANK YOU!

Will this fix ever get into the main updates? We have to apply it after every cmk update manually.

Bastian

it’s fixed in 2.3.0 Werk #15573: Detect all volumes with rstcli

1 Like

Cool, thank you!

Bastian