[ZBX-12360] IPMI Agent get wrong value Created: 2017 Jul 07  Updated: 2026 Mar 24

Status: Reopened
Project: ZABBIX BUGS AND ISSUES
Component/s: Server (S)
Affects Version/s: 3.2.6
Fix Version/s: None

Type: Problem report Priority: Trivial
Reporter: BM Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: ipmi
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File ZBX_fan_Template_Conf.PNG     PNG File ZBX_fan_value_wrong.PNG    
Issue Links:
Sub-task
part of ZBX-8395 Zabbix display wrong values with IPMI... Closed
Sprint: Sprint 12, Sprint 13, Sprint 14, Sprint 15, Sprint 16, Sprint 17, Sprint 18
Story Points: 4

 Description   

Hello,

I've got an issue where Zabbix IPMI agent get wrong values.
Joined screenshot of a faulty value for fan and the item configuration.

With openipmi commands I've got the rights values

sofdevzabbix01:/home/bob# ipmitool -I lanplus -H 172.18.131.80 -U -P sdr
UID Light | 0x00 | ok
Sys. Health LED | no reading | ns
01-Inlet Ambient | 20 degrees C | ok
02-CPU 1 | 40 degrees C | ok
03-CPU 2 | 40 degrees C | ok
04-P1 DIMM 1-3 | disabled | ns
05-P1 DIMM 4-6 | disabled | ns
06-P1 DIMM 7-9 | 33 degrees C | ok
07-P1 DIMM 10-12 | 34 degrees C | ok
08-P2 DIMM 1-3 | disabled | ns
09-P2 DIMM 4-6 | disabled | ns
10-P2 DIMM 7-9 | 32 degrees C | ok
11-P2 DIMM 10-12 | 29 degrees C | ok
12-HD Max | 35 degrees C | ok
13-Chipset | 50 degrees C | ok
14-P/S 1 | 34 degrees C | ok
15-P/S 2 | 31 degrees C | ok
16-P/S 2 Zone | 36 degrees C | ok
17-VR P1 | 39 degrees C | ok
18-VR P2 | 39 degrees C | ok
19-VR P1 Mem | 37 degrees C | ok
20-VR P1 Mem | 36 degrees C | ok
21-VR P2 Mem | 35 degrees C | ok
22-VR P2 Mem | 37 degrees C | ok
23-VR P1Vtt Zone | 37 degrees C | ok
24-VR P2Vtt Zone | 35 degrees C | ok
25-HD Controller | 85 degrees C | ok
26-iLO Zone | 38 degrees C | ok
27-LOM Card | 64 degrees C | ok
28-PCI 1 | disabled | ns
29-PCI 2 | disabled | ns
30-PCI 3 | 78 degrees C | ok
31-PCI 4 | disabled | ns
32-PCI 5 | disabled | ns
33-PCI 6 | disabled | ns
34-PCI 1 Zone | 34 degrees C | ok
35-PCI 2 Zone | 37 degrees C | ok
36-PCI 3 Zone | 38 degrees C | ok
37-PCI 4 Zone | disabled | ns
38-PCI 5 Zone | disabled | ns
39-PCI 6 Zone | disabled | ns
40-I/O Board 1 | 39 degrees C | ok
41-I/O Board 2 | disabled | ns
42-VR P1 Zone | 29 degrees C | ok
43-BIOS Zone | 52 degrees C | ok
44-System Board | 38 degrees C | ok
45-SuperCap Max | 26 degrees C | ok
46-Chipset Zone | 39 degrees C | ok
47-Battery Zone | 38 degrees C | ok
48-I/O Zone | 44 degrees C | ok
49-Sys Exhaust | 40 degrees C | ok
50-Sys Exhaust | 37 degrees C | ok
Fan 1 | 6.27 percent | ok
Fan 2 | 6.27 percent | ok
Fan 3 | 6.27 percent | ok
Fan 4 | 7.84 percent | ok
Fan 5 | 14.90 percent | ok
Fan 6 | 18.82 percent | ok
Power Supply 1 | 140 Watts | ok
Power Supply 2 | 35 Watts | ok
Power Meter | 154 Watts | ok
Power Supplies | 0x00 | ok
Fans | 0x00 | ok
Memory | 0x00 | ok
C1 P1I Bay 1 | 0x01 | ok
C1 P1I Bay 2 | 0x01 | ok
C1 P1I Bay 3 | 0x01 | ok
C1 P1I Bay 4 | 0x01 | ok
C1 P2I Bay 5 | 0x01 | ok
C1 P2I Bay 6 | 0x01 | ok
C1 P2I Bay 7 | 0x01 | ok
C1 P2I Bay 8 | 0x01 | ok

Only temperature sensors get good values.



 Comments   
Comment by Andrea Biscuola (Inactive) [ 2017 Jul 17 ]

Can't reproduce this. On our devices that have IPMI, the fan speed is reported in RPM.

BM Can you try to remove from the fan item configuration the unit and see what are the raw values without any potential conversion?

Comment by BM [ 2017 Jul 17 ]

Unit have been removed from the template for Fan, The template have been "unlinked and clear" then "link" again to the host.

The raw values are the same, I've got "1" for fan speed.

I want to precise that the values are from an ILO DL380p Gen8
And that the values problem are also for the power meter of the ILO. As you already see with "ipmitool" the values are good.

Comment by Andrea Biscuola (Inactive) [ 2017 Jul 17 ]

BM Can you also post the output of the "sensor" command instead of "sdr"?

Comment by BM [ 2017 Jul 17 ]

Yes here it is

bob@sofdevzabbix01:~$ ipmitool -I lanplus -H 172.18.131.80 -U -P usensor
UID Light | 0x0 | discrete | 0x0180| na | na | na | na | na | na
Sys. Health LED | na | discrete | na | na | na | na | na | na | na
01-Inlet Ambient | 21.000 | degrees C | ok | na | na | na | na | 42.000 | 46.000
02-CPU 1 | 40.000 | degrees C | ok | na | na | na | na | 70.000 | na
03-CPU 2 | 40.000 | degrees C | ok | na | na | na | na | 70.000 | na
04-P1 DIMM 1-3 | na | | na | na | na | na | na | 87.000 | na
05-P1 DIMM 4-6 | na | | na | na | na | na | na | 87.000 | na
06-P1 DIMM 7-9 | 33.000 | degrees C | ok | na | na | na | na | 87.000 | na
07-P1 DIMM 10-12 | 34.000 | degrees C | ok | na | na | na | na | 87.000 | na
08-P2 DIMM 1-3 | na | | na | na | na | na | na | 87.000 | na
09-P2 DIMM 4-6 | na | | na | na | na | na | na | 87.000 | na
10-P2 DIMM 7-9 | 32.000 | degrees C | ok | na | na | na | na | 87.000 | na
11-P2 DIMM 10-12 | 29.000 | degrees C | ok | na | na | na | na | 87.000 | na
12-HD Max | 35.000 | degrees C | ok | na | na | na | na | 60.000 | na
13-Chipset | 50.000 | degrees C | ok | na | na | na | na | 105.000 | na
14-P/S 1 | 34.000 | degrees C | ok | na | na | na | na | na | na
15-P/S 2 | 31.000 | degrees C | ok | na | na | na | na | na | na
16-P/S 2 Zone | 36.000 | degrees C | ok | na | na | na | na | 75.000 | 80.000
17-VR P1 | 39.000 | degrees C | ok | na | na | na | na | 115.000 | 120.000
18-VR P2 | 39.000 | degrees C | ok | na | na | na | na | 115.000 | 120.000
19-VR P1 Mem | 37.000 | degrees C | ok | na | na | na | na | 115.000 | 120.000
20-VR P1 Mem | 36.000 | degrees C | ok | na | na | na | na | 115.000 | 120.000
21-VR P2 Mem | 35.000 | degrees C | ok | na | na | na | na | 115.000 | 120.000
22-VR P2 Mem | 37.000 | degrees C | ok | na | na | na | na | 115.000 | 120.000
23-VR P1Vtt Zone | 37.000 | degrees C | ok | na | na | na | na | 90.000 | 95.000
24-VR P2Vtt Zone | 35.000 | degrees C | ok | na | na | na | na | 90.000 | 95.000
25-HD Controller | 85.000 | degrees C | ok | na | na | na | na | 100.000 | na
26-iLO Zone | 38.000 | degrees C | ok | na | na | na | na | 90.000 | 95.000
27-LOM Card | 65.000 | degrees C | ok | na | na | na | na | 100.000 | na
28-PCI 1 | na | | na | na | na | na | na | 100.000 | na
29-PCI 2 | na | | na | na | na | na | na | 100.000 | na
30-PCI 3 | 79.000 | degrees C | ok | na | na | na | na | 100.000 | na
31-PCI 4 | na | | na | na | na | na | na | 100.000 | na
32-PCI 5 | na | | na | na | na | na | na | 100.000 | na
33-PCI 6 | na | | na | na | na | na | na | 100.000 | na
34-PCI 1 Zone | 34.000 | degrees C | ok | na | na | na | na | 65.000 | 70.000
35-PCI 2 Zone | 37.000 | degrees C | ok | na | na | na | na | 66.000 | 71.000
36-PCI 3 Zone | 38.000 | degrees C | ok | na | na | na | na | 66.000 | 71.000
37-PCI 4 Zone | na | | na | na | na | na | na | 65.000 | 70.000
38-PCI 5 Zone | na | | na | na | na | na | na | 65.000 | 70.000
39-PCI 6 Zone | na | | na | na | na | na | na | 65.000 | 70.000
40-I/O Board 1 | 40.000 | degrees C | ok | na | na | na | na | 66.000 | 71.000
41-I/O Board 2 | na | | na | na | na | na | na | 66.000 | 71.000
42-VR P1 Zone | 29.000 | degrees C | ok | na | na | na | na | 95.000 | 100.000
43-BIOS Zone | 52.000 | degrees C | ok | na | na | na | na | 90.000 | 95.000
44-System Board | 38.000 | degrees C | ok | na | na | na | na | 80.000 | 85.000
45-SuperCap Max | 26.000 | degrees C | ok | na | na | na | na | 65.000 | na
46-Chipset Zone | 40.000 | degrees C | ok | na | na | na | na | 75.000 | 80.000
47-Battery Zone | 38.000 | degrees C | ok | na | na | na | na | 75.000 | 80.000
48-I/O Zone | 45.000 | degrees C | ok | na | na | na | na | 75.000 | 80.000
49-Sys Exhaust | 40.000 | degrees C | ok | na | na | na | na | 75.000 | 80.000
50-Sys Exhaust | 37.000 | degrees C | ok | na | na | na | na | 75.000 | 80.000
Fan 1 | 6.272 | percent | ok | na | na | na | na | na | na
Fan 2 | 6.272 | percent | ok | na | na | na | na | na | na
Fan 3 | 6.272 | percent | ok | na | na | na | na | na | na
Fan 4 | 7.840 | percent | ok | na | na | na | na | na | na
Fan 5 | 14.504 | percent | ok | na | na | na | na | na | na
Fan 6 | 18.424 | percent | ok | na | na | na | na | na | na
Power Supply 1 | 140 | Watts | ok | na | na | na | na | na | na
Power Supply 2 | 35 | Watts | ok | na | na | na | na | na | na
Power Meter | 154 | Watts | ok | na | na | na | na | na | na
Power Supplies | 0x0 | discrete | 0x0180| na | na | na | na | na | na
Fans | 0x0 | discrete | 0x0180| na | na | na | na | na | na
Memory | 0x0 | discrete | 0x4080| na | na | na | na | na | na
C1 P1I Bay 1 | 0x1 | discrete | 0x0180| na | na | na | na | na | na
C1 P1I Bay 2 | 0x1 | discrete | 0x0180| na | na | na | na | na | na
C1 P1I Bay 3 | 0x1 | discrete | 0x0180| na | na | na | na | na | na
C1 P1I Bay 4 | 0x1 | discrete | 0x0180| na | na | na | na | na | na
C1 P2I Bay 5 | 0x1 | discrete | 0x0180| na | na | na | na | na | na
C1 P2I Bay 6 | 0x1 | discrete | 0x0180| na | na | na | na | na | na
C1 P2I Bay 7 | 0x1 | discrete | 0x0180| na | na | na | na | na | na
C1 P2I Bay 8 | 0x1 | discrete | 0x0180| na | na | na | na | na | na

Comment by Andrea Biscuola (Inactive) [ 2017 Jul 17 ]

BM I have a theory about how the bug is originated. But I need from you to run the server with increased logging level (Change the DebugLevel parameter to 4 in the zabbix_server.conf file).
Run the server until some IPMI checks are performed and, if you can, post the resulting log files here. Maybe We will be lucky to not need special hardware for debugging this

Thanks

Comment by BM [ 2017 Jul 18 ]

In link you have the log with a level 4 https://drive.google.com/open?id=0BxYYuq2hl7h9TWRzdVdiejY4R2c
I wasn't able to use the attachment, the file is 116Mo

Comment by Andrea Biscuola (Inactive) [ 2017 Jul 20 ]

So, After a lot of thinking I understood (I think) why BM receive wrong values. It took me a while and also a lot of reading of the IPMI version 2.0 specification. The Power Supply and Fan sensors in BM hardware are 'discrete' (see section 42.1 of the IPMI 2.0 specification).
Those discrete reads report one or more states of the sensor and along those states, also the currently measured value. In our code, that check is performed in src/zabbix_server/ipmi/checks_ipmi.c in the zbx_read_ipmi_sensor() function. Inside the function you can find this code snippet:

	switch (s->reading_type)
	{
		case IPMI_EVENT_READING_TYPE_THRESHOLD:
			if (0 != (ret = ipmi_sensor_get_reading(s->sensor, zbx_got_thresh_reading_cb, h)))
			{
				/* do not use pointer to sensor here - the sensor may have disappeared during */
				/* ipmi_sensor_get_reading(), as domain might be closed due to communication failure */
				h->err = zbx_dsprintf(h->err, "Cannot read sensor \"%s\"."
						" ipmi_sensor_get_reading() return error: 0x%x", id_str, ret);
				h->ret = NOTSUPPORTED;
				goto out;
			}
			break;
		case IPMI_EVENT_READING_TYPE_DISCRETE_USAGE:
		case IPMI_EVENT_READING_TYPE_DISCRETE_STATE:
		case IPMI_EVENT_READING_TYPE_DISCRETE_PREDICTIVE_FAILURE:
		case IPMI_EVENT_READING_TYPE_DISCRETE_LIMIT_EXCEEDED:
		case IPMI_EVENT_READING_TYPE_DISCRETE_PERFORMANCE_MET:
		case IPMI_EVENT_READING_TYPE_DISCRETE_SEVERITY:
		case IPMI_EVENT_READING_TYPE_DISCRETE_DEVICE_PRESENCE:
		case IPMI_EVENT_READING_TYPE_DISCRETE_DEVICE_ENABLE:
		case IPMI_EVENT_READING_TYPE_DISCRETE_AVAILABILITY:
		case IPMI_EVENT_READING_TYPE_DISCRETE_REDUNDANCY:
		case IPMI_EVENT_READING_TYPE_DISCRETE_ACPI_POWER:
		case IPMI_EVENT_READING_TYPE_SENSOR_SPECIFIC:
		case 0x70:	/* reading types 70h-7Fh are for OEM discrete sensors */
		case 0x71:
		case 0x72:
		case 0x73:
		case 0x74:
		case 0x75:
		case 0x76:
		case 0x77:
		case 0x78:
		case 0x79:
		case 0x7a:
		case 0x7b:
		case 0x7c:
		case 0x7d:
		case 0x7e:
		case 0x7f:
			if (0 != (ret = ipmi_sensor_get_states(s->sensor, zbx_got_discrete_states_cb, h)))
			{
				/* do not use pointer to sensor here - the sensor may have disappeared during */
				/* ipmi_sensor_get_states(), as domain might be closed due to communication failure */
				h->err = zbx_dsprintf(h->err, "Cannot read sensor \"%s\"."
						" ipmi_sensor_get_states() return error: 0x%x", id_str, ret);
				h->ret = NOTSUPPORTED;
				goto out;
			}
			break;
		default:
			s_reading_type_string = ipmi_sensor_get_event_reading_type_string(s->sensor);

			h->err = zbx_dsprintf(h->err, "Cannot read sensor \"%s\"."
					" IPMI reading type \"%s\" is not supported", id_str, s_reading_type_string);
			h->ret = NOTSUPPORTED;
			goto out;
	}

This switch statement process the various type of 'readings' that a sensor expose. In the case of BM we can see from the log provided that, while the temperature sensors (all the ones with correct values) have a type of 0x1, so purely "threshold-based", the others are 'generic discrete' (for example the Fan sensors have type 0xa and it fall in the 'Generic discrete' category).
What we are doing, is reading the actual state of the sensor and reporting it as the value instead of reading the state and storing it in the right place AND reading the value and storing it in the sensor structure.
So this is a bug in zabbix and not a non-compliant equipment or faulty hardware.
What we should do is:

  • Read the sensor state and store it.
  • Check if the reading have also a data value in it
  • Read the data and store it in the sensor structure.

I hope it's clear where the problem lies

Generated at Wed May 20 06:54:17 EEST 2026 using Jira 10.3.18#10030018-sha1:5642e4ad348b6c2a83ebdba689d04763a2393cab.