Mathlion

Mathlion is a Kibana extension that enables equation parsing and advanced math under Timelion, which is part of Kibana.

Mathlion is developed by Fermium LABS

Usage

.math()

Function Description Type
math() Parse mathematical equations and expressions Chainable

Examples:

.es(*).math("a=source")  //the variable "a" now contains the elasticsearch query.
.nop().math("a")  //this row now equals the former elasticsearch query

.es(*).math("source") //return the .es(*) query
.es(*).math("source+5") // add 5 to the .es(*) query

.nop().math("a=a+2 ; a=a+3 ")  //adds 5 to a
.nop().math("a=a+2 ; a=a+3 ; a ")  //adds 5 to a and displays a+5

.es(*).math("a=source")  //this query is invisible and does not generate an axis
.es(*).math("a=source; a")  //this query does

.nop.math("sqrt(3^2 + 4^2)") //returns 5

//Calculate power comsumption based on measured current and stimated voltage (in Europe)
.nop().math("electricPower(v,i)=(v*i)")
.es(metric=avg:current).math(machineCurrent=source)
.nop().math("elascPower(230,machineCurrent)")

//plot the horizontal statistical mean and variance
.es(*).math("me=mean(source); va=var(source)")
.value(1).math(me*source) 
.value(1).math("(me+sqrt(va))*source") 
.value(1).math("(me-sqrt(va))*source")

As you may have understood, source inside a mathematical expression returns the value of the precedent function. It acts as a local variable, and never exit the boundaries of the function you write it in.

The variable will now be accessible from the math() functions. Internally every variable is considered a mathematical array.

When you're working in Timelion each variable will be accessible from the whole Timelion sheet you're working in. Beware that you need to start a new chain for the variable to be accessible.

In Kibana dashboards variables are separated between plots.

//this works
.es(*).math("a=source") 
.nop().math("a")

//Error: Undefine symbol a
.es(*).math("a=source").math("a") //the two functions can't see each other

//A better solution
.es(*).math("a=source; a") 

.nop()

Function Description Type
.nop() A fake datasource that returns no value at all. It's similar to .value(0) Datasource

Examples:

.nop() //returns nothing at all
.nop().math(variable) //retrieve variable

Equations examples

You can do farly complex stuff inside a math function:

mode(a) //compute the mode of the whole set of data in "a" in your window and display it as an y axis
(a>0) ? (a=1) : (a=-1) //if is positive a=1, else a=-1\. A will be modified only temporarely for this equation

delta(a,b,c)=(b^2-4*a*c) //create a new function you can reuse

a=2; a=a+1 // a is now 3, the sub-expressions are evaluated sequentially The last is the one considered in the end 
a=1 ; a=2; a+1 // exactly same as before, but returns directly 3 instead of a=3

Thanks

Mathlion is based on Math.js