Hello,

Hmm.. I had not read through the code for the holt-winter implementation with Graphite, I had assumed that the implementation had configuration options. HW algorithm has a short and long term period, smoothing and upper/lower confidence bands which are typically all configurable items making HW very flexible. Though HW is NOT meant to be used on server network interfaces of servers or even uplinks, it is meant to be used on things that have clearly defined patterns or that aggregates enough data flows that it creates a identifieable pattern, for example: An internet gateway, an AS internet router.

Way back with Cricket, I would configure HW with a two week period, so that it would compare this week versus last week, plus you define a short term seasonality (period) that also defines if the algorithm will adapt more easily to fast short term changes. In a corporate network with three WAN carriers, 150 sites, a couple internet access points, and one major datacenter, there were only 4 links that warranted the use of HW with active alerts. Every other HW active time-series was informational only.

For use with time-series that have more variability it is highly suggested to have the HW anomaly be confirmed by a second metric before generating a Warning or generating an Error and notification. That is where the Shinken internal rules become useful (as we discussed a ways back :-)).

Once again, let me reiterate that I think what you are doing is great (re-using MongoDB), implementing anomaly detection and leveraging internal rules. Just make sure that you keep the minimum amount of data in MongoDB for the algorithm because the data is also typically exported to PNP or Graphite for graphing.

Keep up the great work. I look forward in testing this feature.

As to the second point, using Graphite... What I am trying to say is that, we (I include myself here) should really get a good shinken graphite_check, that can use Graphites native functions to compute alerts from short and mid-term trends in graphite. The wealth of API functions can make it very powerful and flexible. There is an article on the News page about this.. :-) Of course if we can cover directly in Shinken some of the most common use cases that even better.

Cheers,

Francois

On 13-01-10 9:51 AM, nap wrote:


On Thu, Jan 3, 2013 at 3:12 PM, Francois Mikus <fmi...@acktomic.com <mailto:fmi...@acktomic.com>> wrote:

    Happy new year from this side of the ocean!

Hi :)


    [...]

    Graphite has built-in holt-winters support, trendlines, functions
    for comparing a time period versus a previous time period, etc.

Yes, the main code is at graphite/webapp/graphite/render/functions.py:def holtWintersAnalysis(series, bootstrap=None). But like I said to Hermann, HW is a nightmare to manage, even if we add to Graphite parameters to it, instead of the hard coded parameters, you will have to hack several times the parameters to get something near mine. The key is the dimension where you smoothing (in fact it's not a smoothing, it's an update of an average based on history). When you got "quick" changes during the weeks (or 2 months are Graphite is using it this cycle), you will have an O(N) error accumulation (each average compute will add it's error from the previous value). For values like disks it's not a problem, the variation is slow, so HW will work without too much problems. But for things as network consumption (and I think you know what I means here) what is the rule for 8h55 and 9h05? None. All users are connection (in fact nearer to 9h20 because of coffee pause...).

That's why I used my algorithm, to bypass this O(N) errors problem. One other thing, is the computation time. In Graphite, you can have HW, but it will look at 2 months value for just one value GET. Here we are doing something nearer to reporting than to classic transactional. Aggregate/pre-compute (tell the name you want here) is the key. O(1) versus O(N) computation -> I choose the first one :)


    We should concentrate on integrating better calling of the
    graphing functions of graphite and a (new) storage mechanism that
    is only used for Shinken.

I don't understand this part. Do you means integrate this in carbon-agregator? (to bypass the 0(n) thing). I personally don't have time for this, but I can explain the algorithm to Graphite folks if they want it ;)


    What you are doing is great, but in the longer term it may be
    better to focus on a backend that has more support and ecosystem
    and that can be used natively within Shinken. I think the ideas
    you have can be applied against Graphite to provide really really
    good stuff!!

Yes, should be better of course. But I don't have time to learn another tool code for hacking such thing. I need it now for a project, and here it work well. That's ok for me :D


Jean


    Hermann, there is already an existing Shinken module to send data
    to Graphite (carbon), have you looked at it?

    Cheers,

    xkilian




------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712


_______________________________________________
Shinken-devel mailing list
Shinken-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shinken-devel

------------------------------------------------------------------------------
Master HTML5, CSS3, ASP.NET, MVC, AJAX, Knockout.js, Web API and
much more. Get web development skills now with LearnDevNow -
350+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122812
_______________________________________________
Shinken-devel mailing list
Shinken-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shinken-devel

Reply via email to