Update Logstash single pipeline dashboard with batch byte_size metrics for p50 p90 max#18311
Conversation
✅ Vale Linting ResultsNo issues found on modified lines! The Vale linter checks documentation changes against the Elastic Docs style guide. To use Vale locally or report issues, refer to Elastic style guide for Vale. |
🚀 Benchmarks reportTo see the full report comment with |
|
I imagined If we keep all percentiles plus current and average as lines, the graph it's hard to understand, you have to consider 5 lines and understanding the relationship it's not easy. |
|
What if we've made the shaded area between But that isn't 100% bulletproof. It feels like we could split this into two separate charts: one for Current vs. Average, and another strictly for Percentiles (p50, p90, Max). |
|
@perk so your suggestion is to keep as it is but only change the shaded areas, maintaining the shading only for the strip between In that case I don't know hot to do it, I think we need to speak to someone in Kibana hot to that (who?).
It could be, but at that point I think it became difficult to correlate current with the percentile measures (and |
Yes, I think that would be more clear than the current dashboard. But I'm not sure it's feasible either. Is it?
Fair question. I think that ability to correlate on a single dashboard is a good thing in general. |
|
Playing with color, stacking and custom formula I was able to draw colored stripe that reppresent the p50-p90, as in the following image:
@perk I've one doubt: how effective is to graph the "average lifetime" value for both event count and byte value. If there is an increase or decrease, the time that metrics take to reach a "stable value" is proportional to the time the LS process was running. For example, suppose it was running for some days with pretty steady flow, that originated a an average of 100KB, if there is an increase to 1MB , the average lifetime takes sometime to get close to the 1MB value. I would suggest to use the average last 1 minute, so that all data series reflect the same temporal window. Let me know what you think. |
|
If we call the That being said :) It doesn't have to be In general I agree time windows are mixed here. Maybe we should have all the values calculated using the sampling rate? |
|
The last minute is an already aggregated and compute datapoint on Logstash side, it comes from flow metric which is used to track batch size values: https://www.elastic.co/docs/api/doc/logstash/operation/operation-nodestatspipelines. Those values are not computed on Kiabana side but just used as they are. |
Thanks for clarification!
That makes sense to me now :) |
… size and p50 p90 for batch's event count, for last 1 minute window
…ove average.lifetime. Updated graphs at the same time.
22912b1 to
c94c0f2
Compare
|
@andsel Running against
The data is available for |
…age.lifetime' to 'logstash.pipeline.total.batch.event_count.average.last_1_minute'
9acf6c0 to
5d03615
Compare
|
@robbavey About your second question. That's related to the way the p50-p90 stripe is created. It's obtained as a couple of stacked areas metrics. As first step a
|
|
@andsel - Makes sense, the only other thing I would suggest is that the "average last minute" value is also somewhat hard to see in light mode, maybe something darker would help |
…ash Single Pipeline View' to be little darker.
💚 Build Succeeded
History
cc @andsel |
@robbavey this is the graph with a little darker color for "average last. minute" |
…s for p50 p90 max (elastic#18311) Update the cel script to store p50 p90 and max byte size metrics of the batch for the last minute. Switch to use the average last one minute metric instead of the lifetime for both batch's byte size and value to be coherent with the other graphed percentiles. Update the Single Pipeline View to include these new values.








Proposed commit message
Update the cel script to store p50 p90 and max byte size metrics of the batch for the last minute.
Switch to use the average last one minute metric instead of the lifetime for both batch's byte size and value to be coherent with the other graphed percentiles.
Update the Single Pipeline View to include these new values.
Checklist
changelog.ymlfile.Author's Checklist
How to test this PR locally
The test is based on a running Logstash instance monitored by an ElasticAgent which push metric data to be processed by the integration.
Requirements: Docker must be running on test host.
Install
elastic-packageDownload from https://github.com/elastic/elastic-package/releases/tag/v0.117.1
Add permission to the file with
Run it
Bring up stack and build/install the integration (from
integration/packages/logstashof the Elastic Integration local clone)Launch the stack
Build the package locally
Install into the package registry running in the Docker, so it can be served to Fleet
Verify the integration is installed, check the listing: https://localhost:5601/app/integrations/installed?currentPage=1
Now install and configure a local Logstash that generates some metrics, this is monitored by a local agent that will be installed in next step
Download Logstash
>= 8.2.0from https://www.elastic.co/downloads/logstashOnce unpacked edit the
config/logstash.ymlto have the following settings:Run Logstash with a pipeline, rememeber to check which HTTP API port is bound, usually 9600 but since the Docker compose already setup a Logstash instance in the container, it could be
9601or so:Generate some flow with a simple script (requires
JDKandJBanginstalled locally, usesdkmanto do that). Use the traffic generator script at https://github.com/andsel/traffic_simulator and run with:If JBang is not able to resolve dependencies, check your
~/.m2/settings.xmland eventually remove it.Add Logstash integration and create new policy and enroll a local agent that monitor the launched Logstash:
In Fleet go to the Logstash integration and press
Add LogstashCreate a new policy and enroll a new agent
Follow the instructions to download the agent and run it, but to the proposed command line remember to add:
--develop --insecure. Add--developto be able run side by side the existing Agent, and--insecureto avoid x509 certificate verification. As example should be something like:In the configuration of the policy set the port where local Logstash bound (step
3.iii)It may require to update your ´/etc/hosts´ file to avoid some error in Fleet UI like "Error get fleet-server" or something related to reaching
elasticsearch, in case add the following to your hosts:Verify the dashboard
[Metrics Logstash] Logstash Single Pipeline ViewRelated issues
Screenshots