-
Notifications
You must be signed in to change notification settings - Fork 37
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JSON output format modification & compatibility with other tools #99
Comments
Oh, I forgot to mention that plotting scripts already exist. Basic example outputs:
These scripts can do much fancier output, like per-rcode charts: or show aggregate results for "groups" of runs with different parameters etc., but I'm not going to post all the variants here. Of course not all of chart types are applicable to Flamethrower today as it does not seem to track fine-grained latencies, but I think it does not preclude us from sharing format. |
Thanks @pspacek, with just a quick look I think it's a great idea and I'd be happy to collaborate here. I'll review in more detail. |
It turns out I'm not the first with the idea! I've just discovered Flent which, besides other things, offers interactive GUI for browsing & editing charts. I plan to have a look if there is a way to converge on something compatible across even larger ecosystem. Edited to add link: Flent data format |
@pspacek in terms of a common format that allows better interaction with other tools - in my observability project we have standardized on openmetrics and opentelemetry ... since this is time series data, I think it could make some sense. There are some existing libraries available, but in the end the OTLP format is protobuf, which I believe could be serialized to JSON. This would enable users to easily get the data into their observability stacks, since it supports many different types of "exporters". |
I'm familiar with openmetrics but it might make sense as well. So many options 🤯 😀 |
Proposal, all values are integers or strings. Time precision us only. |
Feedback on the proposed format:
|
We have moved the unified format description into a separate repo: https://github.com/DNS-OARC/dns-metrics |
TL;DR
This is a vague proposal to work on modified JSON output format, with an ultimate goal - sharing the same output format with dnsperf and also DNS Shotgun.
Motivation
All three tools do essentially the same thing, send queries and statistically evaluate answers, but each tool does that in slightly different manner and fits slightly different use-case. At the same time, much of my data post-processing is in the end the same - I want to plot response rates, RCODEs, and latencies over time. Because each tool has a different format I have to switch parts of post-procesing pipeline to, in the end, get the same plots.
I think it would be common benefit if all three tools used the same JSON format and could reuse the same post-processing and plotting scripts.
What's going on in other projects
So, I think that with buy-in on your end we can make the common format happen!
Discussion about format modification
This is not a firm proposal, take it as kickoff for discussion.
It would seem cleaner/easier for third-party parsers if each output line/JSON object had a separate field like "msgtype" which would clearly indicate that it is a "header" (currently "cmdline"), "period stats" or "total".
Somewhat related is number format and resolution. I would add header field with "timer units per second" information. That would define resolution used for time fields produced by particular implementation:
m
s in some fields - I would standardize on one of them, preferably ms to avoid dealing with floating pointm
s = field value 1 000u
sec - field value = 1 000 000I'm not sure why some field names and field values are duplicated... E.g.
runid
just once in header instead of repeating it everywhere?period_
andtotal_
prefixes?cmdline
could be an array of stringsWow, that is a long post. Sorry! If you made it here, what do you think about it?
The text was updated successfully, but these errors were encountered: