-
Change Request
-
Resolution: Fixed
-
Minor
-
None
-
2.0.15
We calculate request response times of our application by a calculated value:
requests.total_processing_time:
=> sum of all request processing times
=> Store value : Delta (Simple change)
requests.count: count of all requests
=> sum of all request processing times
=> Store value : Delta (Simple change)
Expression:
last("requests.total_processing_time") / ( last("requests.count") + count("requests.count",#1,0) )
We added the expression 'count("requests.count",#1,0)' to prevent a division by zero.
Otherwise, Zabbix alters the calculated item to "unsupported" if at least one item is not available or a division by zero appears and reactivates the item after the configured value for "Refresh unsupported items".
(Administration => General => Other)
We do not want to increase this value only for reactivating calculated items faster.
From our point of view a adeuqate solution might be:
A option "skip on calculation problems" which just skips the calculation if a division by zero appears of a item is not available.
No value will be stored - the user should see a measurement hole.
Why do we not calculate the performance measure in the application?
Adding values to requests.total_processing_time and requests.count is very useful, because :
- the measurement frequency of these value can be changed without changing the application
- the calculated/displayed values are standardized and not depended to the measuement frequency
- the application code for requests.total_processing_time and requests.count can be very simple from locking and queueing point of view