redis-faina
A query analyzer that parses Redis' MONITOR command for counter/timing stats about query patterns
At its core, redis-faina uses the Redis MONITOR command, which echoes every single command (with arguments) sent to a Redis instance. It parses these
entries, and aggregates stats on the most commonly-hit keys, the queries that took up the most amount of time, and the most common key prefixes
as well.
Usage is simple:
# reading from stdin
redis-cli -p 6490 MONITOR, head -n <NUMBER OF LINES TO ANALYZE>, ./redis-faina.py [options]
# reading a file
redis-cli -p 6490 MONITOR, head -n <...> > /tmp/outfile.txt
./redis-faina.py [options] /tmp/outfile.txt
options:
--prefix-delimiter=... String to split on for delimiting prefix and rest of key, if not provided `:` is the default . --prefix-delimiter=#
--redis-version=... Version of the redis server being monitored, if not provided `2.6` is the default. e.g. --redis-version=2.4
The output (anonymized below with 'zzz's) looks as follows:
One caveat on timing: MONITOR only shows the time a command completed, not when it started. On a very busy Redis server (like most of ours), this is
fine because there's always a request waiting to execute, but if you're at a lesser rate of requests, the time taken will not be accurate.
Have more stats / improvements you'd like to see to Redis-Faina? Please fork and send pull requests! And if analyzing hundreds of thousands of requests per second
across many systems is interesting to you, drop us a note and tell us a bit about yourself--we're building out our dev & devops team