Percentile aggregation in Timelion - kibana

I'm trying to change a Timelion query from averages to percentiles. My current, working query is .es(index=*, metric='avg:duration'). This gives me a nice graph.
Now I change my query to .es(index=*, metric='percentiles:duration:50,95') as documented here. Kibana doesn't give an error, but also doesn't show any graph.
The duration field is properly marked as type number and aggregatable, so I think it should be fine.
What could be wrong?

Related

Is there a way to show the significance of category means against a set value, not one another?

I am graphing measured results versus expected results from a model, grouped by categories (the category in the boxplot below is one of a few different ones I'm using). For each data point, I subtracted the expected from the observed to determine the difference. My task is to modify the model to minimize the difference.
I would like to add the significance level to this chart but all resources I am finding are to compare means of each category to one another. In this case, I would like to know if each of the category's means is significantly different from 0. I can run this test one by one, selecting for data points falling within each category and testing for a difference from 0, but this seems inefficient.
Is there a way to automatically generate this and plot it? stat_compare_means seemed promising but I couldn't figure out how to make it work, while stat_pvalue_manual may hold more promise if I figure out how to code this.
Thanks in advance!
Sample boxplot (too new to add preview)

How to zoom in the Y-Axis in a line chart using kibana 7.12/7.16

I'm working on an application that get values from different cryptocurrency exchanges and I'm trying to plot that values on Kibana (V 7.12.1) to visually compare the oscillations, everything is working fine (I think), the main application is getting the values from the exchanges and sending to ElasticSearch (V 7.12.1) and I can see the values on Kibana/Discover. I don't have much experience on ElasticSearch/Kibana.
So, in Kibana, I created a new dashboard with a Lens panel, I added the DateTime field to X-axis, ask price and bid price to Y-axis and the exchange name as a break down. The plot looks nice as you can see:
The problem is, at this moment, the values are between 42940 and 43080, a very small difference comparing to the total size of the Y-axis and I can not adjust the Y-axis to get a small window to only see the values of interest.
I don't need different scales to each line, in really it must be the same scale. And values will change over the time, so, the value window will change in size too.
Thanks in advance.
Update:
I did all the same tests on ElasticSearch 7.16.3 and Kibana 7.16.3 and I got exact the same results.
Finally I found it.
There is an Up-Down button to set up the Y-axis, clicking on that button we get the window "Left axis". In that window, the field "Bounds" does this adjust.
Full: to see all the graph;
Data bounds: to automatically adjust the zoom;
Custom: to insert your own limits;

How to plot only within a range defined by x number of bars?

I understand that I can contingently plot on the chart using range of date and time values.
However, I would like to be able to plot using a specific number of candlesticks.
For example, I would like to be able to say something like
// Within the most recent 10 bars
// If close[0] > close[1]
// plotshape()
I have tried implementing numerous variations using barstate.isrealtime or barstate.islast but I keep running into limitations.
One major problem is that, although bar_index[#] works by indexing backwards from the most recent bar, the value of bar_index[10] is not 10 but some number in the thousands (depending on the timeframe of the chart — for me its Daily = 2,616 candles, 1hr = 6,217 candles, 15m = 5,222, etc.). In other words, it counts the number of bars from the oldest bar available.
Since referencing of the bars (starting from most recent) and the index values (starting from the oldest) are conflicting--due to counting from opposite ends--I am not sure how to specify: plotshape() for the most recent 10 bars.
I am also running into trouble due to the fact that bar_index[0] occurs every single iteration of the chart's timeframe--so I am getting caught in recursive calculations when trying to do bar_index[0]-bar_index[10].
It seems that what I need is something like bar_index.islast[10]
The reason that I would like to call a plotshape() based on the number of specified candles versus since x date/time (or within date range (x,y)), is because I want my indicator to function properly regardless of which timeframe my chart is displaying:
If I am showing a monthly chart, I want to plot across the last 10 monthly bars; If I am showing a daily chart, I want to plot across the last 10 daily bars; etc.
If I am forced to use a date range, then this functionality breaks down, since I will be shown increasingly more bars for smaller timeframes.
Caveat**
I am able to kinda make this work by specifying the number of bars from the oldest candlestick by stating something like:
bar_index > 2600 ? color=color.black : na
However, given the fact that every single time frame displays a different number of bars, this is not a workable solution for me.
Thanks for any advice.
UPDATE
I have been hunting around and and found that the functionality I desire is already built into the show_last argument of the various plot()functoins.
Ill leave my question posted, in case it helps someone else.
UPDATE I have been hunting around and and found that the functionality I desire is already built into the show_last = int argument of the various plot() functions.
I'll leave my question posted, in case it helps someone else.

Plot actual value on y axis in kibana 4

I want to plot time on x axis and a numeric field 'f' occurring at that time on y axis in kibana 4.
I have changed the data type of 'f' to integer and I can confirm that it has changed from kibana index settings.
However, the only aggregation options available for Y axis are count/min/max/sum etc. This post has an answer for plotting sum but I'm interested in plotting actual values.
Is there a way to do this?
You probably want to check this.
tl;dr
The data you want to plot, are not numbers.
Update your grok filter to something like this %{NUMBER:time:float} instead of whatever you have.
Re-index/re-hash your elasticsearch (i just deleted my data and restarted the whole thing)
Goto Kibana4 -> Visualize -> New line graph
In Y axis select max and in the field, select your number field.
Kibana is plotting a bucket, e.g. every minute.
As such, aggregations are in order. I frequently plot average and max on the same chart to give me a good overview.
If you reduce the time period, the buckets get smaller, but I don't think you can ever make them "just 1 document".

How to set minimum for Jenkins Plot Plugin

I use Jenkins and its Plot Plugin to generate statistics.
Example:
For every Build I plot the line of codes. Lets say I have like 500.000 lines and it changes about +-100 lines per build.
Since the plot y-axis always starts with 0 the whole plot is meaningless. It looks like 1 straight line.
Same goes for other metrics, if the value is too high.
Question: is there any configuration to set minimum y-axes to the minimum value?
Unfortunately, I think the answer to your question is currently 'no'.
First of all, the documentation does not give any hints towards such an option.
Secondly, Given that the Jenkins Plot Plugin uses JFreeChart for the plotting, the setting of a range for the Y-axis should be done using the 'getRangeAxis' function. A search in the source-code does not reveal a call to this function.
Lastly, you do not seem to be the only one that has this problem. Issue JENKINS-2841 asks for the same functionality, but appears not be solved yet.

Resources