Application Insights Dashboard - Set Graph Dimensions? - azure-application-insights

I am currenty setting up a new dashboard in application insights to monitor our applications in detail. To do so, I am logging custom events from my application, and using a log query, I generate a Stacked Column Chart. Like so:
Chart. Notice that I am grouping on multiple dimensions, and the generated chart lets me pick which Dimension I want. (As documented here: https://learn.microsoft.com/en-us/azure/azure-monitor/log-query/charts#multiple-dimensions)
Now, when I pin this chart to my dashboard, I lose the ability to pick the dimension I want to see there. (Dashboard chart) Is there some way to retain this, or do I have to create and pin multiple charts, one for each dimension?

You are right. Changing the dimensions of existing parts are not supported yet.
We plan to support this in the future.
I'll ask here once we add this support.

Related

setDataCleaningThreshold for Area Range Series

I saw in version 3.00 there is something called setDataCleaningThreshold , Can you tell its benefits , I think it's for faster loading of progressive charts.
const dcThreshold = xVal - 100;
lineSeries.setDataCleaningThreshold(dcThreshold);
AreaRangeSeries.setDataCleaningThreshold(dcThreshold); // not working
But it's not working for Area range series.
Also there is setMaxPointCount in Area range Series , what is the difference between both ?
My charts are progressive and I want to clear the charts that are out of view and make the charts faster.What is the best way ? Can I use Dispose method ?
Also , can we drag the chart by left click + mouse drag. . I saw something like API for Axis mouse and touch events is released.Can you tell what can be achieved with this.
(right now its right click + drag).
it's not working for Area range series.
setDataCleaningThreshold is new API that will be slowly introduced to existing series. With v3.0 it is only introduced for LineSeries and its derivatives (like PointLineSeries).
To prevent confusion, please refer to official API documentation to see if some method is supported - for example if we look at AreaSeries, it is not part of the API.
Also there is setMaxPointCount in Area range Series , what is the
difference between both ?
setMaxPointCount and setDataCleaningThreshold exist for the same purpose, and effectively achieve the same things, but they are based on slightly different ideas.
setMaxPointCount configures automatic data cleaning by specifying amount of data points to retain at the "head" of data.
setDataCleaningThreshold configures automatic data cleaning by specifying a coordinate on progressive axis. All data points that are "behind" this coordinate can be cleaned whenever convenient. This configuration is slightly preferred over "max points count" as it is more convenient for the rendering engine, and it also behaves slightly more logically - if you apply the fit() operation by dragging to top-left in chartXY with left mouse click, the axis will stop at data cleaning threshold, instead of showing all data including the data behind cleaning threshold.
Both of these methods will be supported for the time being and there should not be major differences between using either, so I recommend use whichever you feel more comfortable with.
Eventually the data cleaning configuration will settle down to a simpler API, but now we're still feeling how different users are using the library, and how we can optimize the performance best - so the API is a bit messy (as in, there are 2 methods for same purpose).
My charts are progressive and I want to clear the charts that are out
of view and make the charts faster.What is the best way ?
For AreaSeries setMaxPointCount is the only automatic option.
Please see the updated documentation on the method to learn more.
You can also implement manual data cleaning using dispose method, as you suggested.
However, please see if automatic data cleaning works for you first.

Possible to jump from new Metrics Explorer to Search?

One highly useful feature of the Classic Metrics Explorer is the ability to click the chart to jump directly to a Search blade with corresponding filters and time range already set up.
For example, if I have a Classic Metrics Explorer chart on my dashboard with Failed Requests for the last 12 hours filtered to a specific Cloud Role Name, I can click the chart to get to a dedicated blade for that chart, then click the chart on that blade (heck, I can even click-drag to easily filter time further first) to get to a Search blade which shows failed requests for the last 12 hours for that specific Cloud Role Name. This allows me with just a few clicks to easily drill down into the specific telemetry items related to anything I see in the original chart, such as traces for the failed requests.
The gif below demonstrates this, clicking on a Classic Metrics Explorer chart on the dashboard to get to its own blade, and then clicking the chart there to get to the Search blade:
This does not seem to be possible with the new Metrics explorer. Clicking a chart on the dashboard gets you to the Metrics blade for that chart, but clicking the chart there does not have any effect. See the gif below:
This means that whenever I want to drill down into some data I see on a Metrics chart/blade, I have to go to the search blade and manually set up the correct filters. When there's a high number of services, this takes significantly more time to the point of being completely out of the question, which is a shame, because the new Metrics charts are better in other ways (e.g. integration with the dashboard-wide time range).
Have I missed something, or is it simply not possible to go from the new Metrics charts to relevant telemetry items? Is there a workaround that makes the job of going from charts to related telemetry items easier when using new Metrics charts?
Unfortunately, this is a known limitation of the new metrics explorer.

Making independent graphs for different event types

The application insights APIs let you record custom events for user-defined purposes. They also let you record custom properties on those events.
The Application Insights chart control on the Azure Portal however, appears to have some annoying limitation.
Let's say we have two event names:
Login: A user logged in.
Work: The application started some expensive background job, which happens independently of any user action on various conditions.
Then I likely don't want those event types to be series in the same chart. In particular, I may want to do a grouping by user or something similar in case of Login, but that would make no sense for the Work type.
They really have nothing to do with each other and I'd like to have them in different charts.
I do, however, want them to be in the same chart control (the whole white rectangle thing that groups charts together and where you set the time scope and filters on).
The following missing features would each solve the problem:
If it was allowed to set a filter on individual charts rather than only the chart control as a whole.
If each event name would appear as a distinct metric to select.
I know there's also Analytics, but then I still don't have the new chart in the same old chart control.
Is there another option I overlooked?
There's no way to do this in any one specific metrics explorer window, like you said, filters apply to the whole window.
But you can do this by creating a dashboard, and pinning individual metrics explorer charts (or grids, or whatever) to that dashboard.
make a new dashboard, and name it something distinctive
create one of the charts you want with the right filters in a standard metrics explorer part.
pin that chart to the dashboard created in step 1.
repeat steps 2 and 3 to create each chart with its own settings
go to that dashboard, and resize / configure each chart the way you want it

How to do Grafana Dynamic Singlestat Panels?

I've got metrics in Graphite showing response time for various organizations. The list of organizations can change on the fly. I want panels in Grafana to appear for any origanization who's response time is over a certain threshold. Was thinking the Singlestat panels was the right panel to use. Question is how to make them appear dynamically? Is a scripted dashboard the right approach?
If a scripted dashboard is the correct solution, can anyone recommend a Grafana cloud/service provider that supports scripted dashboards? The current one I have been testing out does not support scripts. Note that I am not really tied to Graphite as the backend since this project is in proof of concept phase. Just need the backend to also be a service. Don't want to roll the backend myself. Thanks.
As far as I know, it is not possible right now.
We had a similar use case in my organisation, and here is what we did.
You can define a template variable for your organizations, and then use SingleStat panel with “Repeat Panel” on this variable, but that will display panels for all of your organizations. Filtering based on a criteria is a requested feature.
Alternatively, you can use the Table panel for your use case.
Choose Table panel
In “Metrics”, enter your metric organizations.*.response_time (or whatever more complicated you need, applyByNode can be handy for such cases)
In “Options”
“To Table Transform”: choose “Time Series aggregations”
“Columns”: Avg, or Current (depending on your needs)
“Coloring”: use thresholds to paint in red or something anything above your desired response-time threshold.
Sort the Table per the Number column.
Ta-da! Your organisations needing attention will be at the top of the table and highlighted.
In the lack of true filtering, this worked for us. Hope it will work for you too :)

input controls for easy filtering in kibana dashboard?

I have successfully used kibana (4.3.1) to make a dashboard with several visualizations. Great! Now I would like to add some input controls to allow filtering. I know that you can manually enter filters in the query bar, for example 'myCol:[low TO high]' but this is problematic for a couple of reasons. First, the syntax is a little too advanced for casual users (although I could use the metadata visualization to document the syntax). Second, the query bar goes away when exporting the dashboard via iframe.
I have tried using the metric visualization to display a min and max values. Unfortunately, the metric visualization is read only.
I have tried a bar chart to allow range filtering but my users will need to select very specific ranges that result in selection areas of only a few pixels. This is error prone and not precise enough.
Any other ideas on how to create input controls for easy filtering? I was hoping find some sort of dial that is tied to a column to allow users an easy way to apply filters.
Thanks,
Nathan
Check working with filters section in the documentation. Selecting a filter changes dashboard URL and includes snippet like (filters:!((meta:(disabled:!t,index:'myIndex_*',key:MyTermToFilter,negate:!f,value:'MyValueToFilter'). Once you have all the filters you want your users to change in the URL, after they navigate to that URL they will be able to enable/disable them in the UI

Resources