[ZBXNEXT-2696] Forecasting Graphs and Triggers Created: 2015 Feb 02  Updated: 2018 Feb 22

Status: Open
Project: ZABBIX FEATURE REQUESTS
Component/s: Frontend (F)
Affects Version/s: None
Fix Version/s: None

Type: Change Request Priority: Major
Reporter: Ross Peoples Assignee: Unassigned
Resolution: Unresolved Votes: 11
Labels: graphs, prediction, triggers
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

This is related to ZBXNEXT-922, but I'd like to make this more generic and easy to use. I'd like to see the graphs that Zabbix currently has display some forecasting of what future values might be. Being able to trigger based on these forecasts is also a great feature. This all falls under the "Capacity Management" scope.

I have a separate app written in Python/Django that gets values from the trending tables in the Zabbix database, displays the last 3 months worth of trends for an item, then displays (in a separate color) the forecast for the item over the next two weeks (variable time-frames). I did this using a Holt-Winters double exponential smoothing algorithm I found code for.

The result was fairly accurate for a forecast. Again, written in Python, but should be translatable to PHP. The method itself was pretty simple: pass a list of [clock, value] and it returns a list of [clock, value], where clock contains future dates and times.

I don't know how much work, if any, has been done in this area, but it would be a great feature to have, and one that I personally need. While I have a separate app that does this forecasting, it would be even better if it were built-in to Zabbix. I would be happy to provide any additional information, the Python code for the Holt-Winters algorithm, possibly even some time to implement this (though I haven't worked with PHP in a while).

Please let me know if there is work being done in this area, or if not, would this be a desired feature for anyone else.



 Comments   
Comment by Glebs Ivanovskis (Inactive) [ 2015 Sep 07 ]

Hi! As you can see there is some progress on ZBXNEXT-922. For now forecasting will be implemented by the means of trigger functions. We want them to be as robust and easy to use as possible. Therefore we stick with such common extrapolation techniques like linear regression, polynomials, exponential, logarithmic and power functions. I hope this is just a beginning and as soon as we get feedback on this feature we will probably proceed with something more complicated.

It is very interesting that you use Holt-Winters method. As I can see, there are three-four parameters in this model. This is probably too much for an ordinary user to tune. And we would not want to provide "default" parameters because it is very hard to find parameter set which would suit everyone. Wiki says about exponential smoothing:

Such techniques have broad application that is not intended to be strictly accurate or reliable for every situation.

And this is what concerns us the most.

Anyway, I would be glad to hear more from you about your vision of forecasting in Zabbix and about your experience with Holt-Winters.

Comment by Ross Peoples [ 2015 Sep 08 ]

Hello,

The difference between ZBXNEXT-922 and what I'm proposing is that 922 uses triggers identify capacity issues as they emerge, whereas this one gives an estimation of when that might be. These two complement each other more than compete. While it is ultimately helpful to know when you are about to reach a potential capacity issue, sometimes you also need to answer a question similar to this one: "If we add another server, based on our current growth of application X, how long until we would need to add another server?" While triggers handle most of capacity management, this proposal handles capacity planning.

Being able to see forecasts in graphs allows you to plan for capacity, rather than react to it. It's great that there is some forecasting being done via triggers, now I think we just need to put that into graphs as well. If the extrapolation techniques used for triggers would be suited for graphing as well, then that's fine. I chose Holt-Winters at the time because it was recommended for forecasting things with fluctuations, like CPU usage.

Comment by Glebs Ivanovskis (Inactive) [ 2015 Sep 14 ]

Hi,

ZBXNEXT-922 will allow you to create predictive triggers which can act and prevent problem from happening in an automated manner. Of course, same trigger functions can be used in calculated items and plotted on graphs (but this does not look too pretty at the moment). There are plans to transfer prediction maths to graphs (purely on the frontend side) when trigger functions are done and polished.

Fluctuations are unpredictable by nature. Sometimes Holt-Winters is able to guess them surprisingly well, but sometimes all can go totally wrong.

Comment by David Lang [ 2016 Jan 05 ]

I'll point out that rrdtool implements Holt-Winters and is C code released under GPLv2 (or later), so the code can be directly copied into Zabbix.

for simple functions, calculating it on the fly as you access it can work, but for more complex things, it makes more sense to calculate it once and store the result the way you would any other data source.

looking at ZBXNEXT-992 it looks like it is an on-demand function to calculate the expected value now (or in the future with timeleft), but doesn't provide a way to have the history of the predictions short of running the calculation for each point on the graph as it's displayed.

Is there a way to have a predictive trigger create a data item that can then be graphed as you would any other item?

Comment by Ismael Ricardo Packer [ 2018 Feb 22 ]

Any update with this feature?

Generated at Fri Apr 26 14:23:35 EEST 2024 using Jira 9.12.4#9120004-sha1:625303b708afdb767e17cb2838290c41888e9ff0.