Slice and dice logs on the command line
This release adds 2 major new features:
json
will now create an array when parsing a JSON array. Arrays can be accessed with [n]
, eg. sum(x.y[4])
. (@rcoh )split
operator: The forcing function for array support was the split operator, enabling converting csv & similar formats into arrays for quick and easy analysis. See README for examples (@DarrenTsung )This release also switches to use the crate of logfmt, allowing publishing releases to cargo, once again.
Users of v0.9.0 and later can upgrade with agrind --self-update
This release adds a number of features contributed from the community:
logfmt
parser: * | logfmt | ...
see README for examples (@MikaelSmith)min(col)
& max(col)
aggregate operators (@slaunay)--format '{col a}: {col b}'
flag for custom formatting -- see README (@MikaelSmith).
notation (eg. sum(response.latency_ms)
). Previously, nested JSON resulted in a string which need to be reparsed with json from nested
. (@rcoh)Users of v0.9.0 and later can upgrade with agrind --self-update
The release adds support for complex filters in the query:
AND
OR
NOR
The keywords must always be all CAPS. Currently, expressions must be fully parenthesized. There was a bit of effort for helpful errors, but if you get a confusing error, file an issue and I'll try to improve it! Users of 0.9.0 and above can upgrade with agrind --self-update
.
Big release, thanks to @tstack and @akdor1154
limit
operator (@tstack ) see README
for more infonodrop
option to the parse operator (@akdor1154 )'abc'
is now accepted anywhere we accepted "abc"
before. This change is required to make angle-grinder easier to use on Windows. A preliminary windows build should be available fairly shortly. (@rcoh )agrind
now supports self-updates via the --self-update
flag. It will update to the most recent Github
release and is useful for Linux users where upgrading was annoying.host-*
to match lines like host-44
, host-abc
, etc.host-* | parse "host-*" as hostname | count by hostname
total
operator: As requested by @tallpsmith, angle grinder now has a total(column)
operator which will compute a running total for aggregates. Examples in the docs.* | sum(num_queries) by host, url | total(_sum)
The rendering pipeline is now multi threaded -- updates to the UI no longer block the main reader thread. This update also fixes a performance bug where output being written to a file was significantly slower than output being written to the terminal.
Aggregate groups can now be any expression. The most useful is probably a boolean expression in queries like:
* | json | p50(response_time), p90(response_time) by url, status_code >= 400
where
is now out of beta and supports the full range of comparators (==
, <=
, !=
, >=
, >
, <
)
This release marks one of the last that changes the language. Future releases will be focused on usuability