When does Zabbix display graph lines connected? - graph

When Zabbix graphs show items with missing values, the graph line is shown interrupted:
In my eyes this shall show visually that there aren't any values between 5:25 and 5:55. This seems completely correct.
But I have another graph where the line between the values before and after the gap are displayed connected:
Both graphs are using different items (but in this case the same or similiar values). Both items don't have values from about 5:25 to 5:55. Both graphs are equally configured - as far as I can see...
What is the difference? Why is the second line displayed connected?
I also tried different draw styles (Line, filled region etc.) as described in Zabbix docu Custom graphs - always the same. Zabbix seems to have some other criteria to decide if the graph should be shown connected or interrupted.

This depends on item type, item interval configuration and the graph width.
item type - for trapper items, a line will always be drawn from one value to the next, and a straight line to the graph edge
item interval configuration and graph width - depending on how frequently the values are collected, how many are missing and how long the gap would be pixel-wise
Note that I said "item interval configuration" - flexible intervals and item scheduling can affect this in other, sometimes quite obscure, ways.

Related

Missing values show broken line in Lens

I have an application that dumps statistics once every minute into ElasticSearch. Using Kibana, I've created a lens to visualize the values over time. All good.
Occasionally, the application skips a dump (which is a separate issue I'll be working on), so I may have occasional missing values. In the Lens, the Line chart breaks the line when a value is missing for a certain time (see screenshot).
How can I interpolate between the available values and show a continuous line instead?
EDIT
To make it clear, I'm asking how to fix the chart in the Lens. The issue of skipped dumps is a separate one and needs to be addressed separately. I may still have some missing values (unlikely but not impossible), and I would like my Lens to show a continuous chart anyway.
UPDATE
While I found the "Missing values" setting in "Visual Options" and I set it to "Linear", the interpolation is rendered with a dashed line. How can I make it the same as the main line?

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;

Anylogic: How to create an agent graph in the Main agent?

In my Anylogic model I have an agent population (terminals) of 4 agents with the time measurement shown below. I want to make a graph of this end.distribution.
If I create a graph in that agent tab and run the model, the graph will always appear within my GIS Map in the Main agent, which makes it unreadable. Thus, I want to create the graph within the Main agent tab. However, when I make the graph in the Main agent with this histogram data: terminals(0).end.distribution, I receive this error: Index 0 out of bounds for length 0, while there are 4 agents and this reference to terminals(0) does work in a tab of another agent population. Does anybody know how to make it work?
Your issue is an initialisation-order one: your histograms initialises themselves before the embedded agents they are referring to for their data are created (and so you get the error).
There are various ways to control the initialisation order but the 'correct' solution here (irrespective of initialisation order) is to use a replicated Histogram chart, where each replication 'links' to the appropriate Terminal agent to get its data (and so will only exist when the respective Terminal agent exists in its population).
This also means you only 'code' the histogram once, and it will dynamically adjust to create as many histograms as you have agents (which is what you would typically always want).
(The expression for the X coordinate of the replicated chart will depend on how wide it is. In my case, the chart is positioned at x=40 and is 300 wide, so I make each replication 350 apart to leave a 50 gap between.)
See help section AnyLogic Help > 2D and 3D Animation > Shape Replication for more details on replication (a very powerful capability applicable to several different types of element).

How to avoid interpolation between sporadic metrics in Application Insights?

I have a job runner app that runs jobs sporadically throughout the day, and I'm reporting metrics for them. They don't run continuously, so AI interpolates between the gaps and the graph looks weird. I would like the graph to either not interpolate or just start/end at zero, so for now I am going to try reporting non-pre-aggregated zero values before and after the jobs, so at least this interpolation will be at the bottom of the graph and be easier to read.
Is there a correct way to indicate the end of a segment of values and the start of another, to avoid this?
Here is a good example of what I'm talking about:
This is a single job runner from our staging env. which ran four jobs in this timeframe, and you can see where the dotted lines are between jobs. This is what I'm trying to avoid. This is exacerbated in a real environment with multiple runners or if you need to compare, e.g.:
What I would like to do is somehow avoid the dotted lines and just go to/from zero (have all the dotted lines at the bottom so they don't interfere with other series). Maybe it's not possible.
I tried sending zero values (both direct and pre-aggregated) at the beginning and end of the jobs and using Operations hoping they would "bookend" the jobs, but neither seemed to do anything.
Metrics Troubleshooting Guide explains the dashes on the line chart type. Generally, the line chart is a great option for showing the continuity and trends. It is a poor option for showing sparse data points. It is so because this type of the chart is rendered by drawing the line segments between known values but without visualizing each value. For better illustration, think about how the line would look when there is only one known value on the entire chart. The two options could be: 1 - show a horizontal line (that’s what we do, but in addition, we add the dashed visualization so that you know the other values are missing) or 2 - not show the line and switch visualization to display just a dot (we let you do it manually by picking scattered plot chart option).

visualization - size of circle proportionate to the value of the item

I'm getting familiar with Graphviz and wonder if it's doable to generate a diagram/graph like the one below (not sure what you call it). If not, does anyone know what's a good open source framework that does it? (pref, C++, Java or Python).
According to Many Eyes‌​, this is a bubble chart. They say:
It is especially useful for data sets with dozens to hundreds of values, or with values that differ by several orders of magnitude.
...
To see the exact value of a circle on the chart, move your mouse over it. If you are charting more than one dimension, use the menu to choose which dimension to show. If your data set has multiple numeric columns, you can choose which column to base the circle sizes on by using the menu at the bottom of the chart.
Thus, any presentation with a lot of bubbles in it (especially with many small bubbles) would have to be dynamic to respond to the mouse.
My usual practice with bubble charts is to show three or four variables (x, y and another variable through the size of the bubble, and perhaps another variable with the color or shading of the bubble). With animation, you can show development over time too - see GapMinder. FlowingData provides a good example with a tutorial on how to make static bubble charts in R.
In the example shown in the question, though, the bubbles appear to be located somewhat to have similar companies close together. Even then, the exact design criteria are unclear to me. For example, I'd have expected Volkswagen to be closer to General Motors than Pfizer is (if some measure of company similarity is used to place the bubbles), but that isn't so in this diagram.
You could use Graphviz to produce a static version of a bubble chart, but there would be quite a lot of work involved to do so. You would have to preprocess the data to calculate a similarity matrix, obtain edge weights from that matrix, assign colours and sizes to each bubble and then have the preprocessing script write the Graphviz file with all edges hidden and run the Graphviz file through neato to draw it.

Resources