18 个版本

0.6.0 2024年5月29日
0.5.4 2023年11月5日
0.5.3 2023年8月8日
0.5.2 2023年6月14日
0.1.1 2020年8月2日

#1#sparklines

Download history 43/week @ 2024-04-25 52/week @ 2024-05-02 32/week @ 2024-05-09 44/week @ 2024-05-16 121/week @ 2024-05-23 81/week @ 2024-05-30 73/week @ 2024-06-06 52/week @ 2024-06-13 30/week @ 2024-06-20 49/week @ 2024-06-27 60/week @ 2024-07-04 52/week @ 2024-07-11 67/week @ 2024-07-18 74/week @ 2024-07-25 24/week @ 2024-08-01 96/week @ 2024-08-08

每月下载量 265

MIT 许可证

45KB
700

krapslog

Actions Status Crates.io

使用 sparklines 可视化日志文件

在生产服务中解决问题时,我经常需要获取日志文件的大致形状。是否有峰值?在事件发生期间负载是否高于之前?还有其他什么值得注意的吗?如果没有工具的帮助,大量的日志文件不过是数据的一团糟。这个工具旨在快速揭示日志的关键特征——然后让路。

安装

Homebrew

brew install acj/taps/krapslog

从源代码

cargo install krapslog

用法

$ krapslog --help
Visualize log files using sparklines

Usage: krapslog [OPTIONS] [FILE]

Arguments:
  [FILE]  Log file to analyze

Options:
  -F, --format <FORMAT>            Timestamp format to match [default: %d/%b/%Y:%H:%M:%S%.f]
  -m, --markers <MARKERS>          Number of time markers to display [default: 0]
  -h, --height <HEIGHT>            Height (in lines) of the displayed sparkline [default: 1]
  -c, --concurrency <CONCURRENCY>  Number of threads to use when processing large files (defaults to number of CPU cores) [default: 8]
  -h, --help                       Print help
  -V, --version                    Print version

示例

获取基本形状

$ krapslog /var/log/haproxy.log 
▂▂▂▂▂▁▂▁▁▁▁▂▁▁▁▁▂▂▂▁▁▁▁▁▁▁▁▁▂▂▂▂▂▂▂▂▂▃▂▂▂▃▂▂▂▂▃▃▃▃▃▄▅▅▅▄▅▃▄▃▄▄▅▅▆▇▆▆▆▆▆▆▆▆▇▇▇▇██

添加时间点

$ krapslog --markers 10 /var/log/haproxy.log
                                                             Sat Nov 23 14:15:56
                                                    Sat Nov 23 13:22:29        |
                                           Sat Nov 23 12:29:01        |        |
                                  Sat Nov 23 11:35:33        |        |        |
                          Sat Nov 23 10:48:02       |        |        |        |
                                            |       |        |        |        |
▂▂▂▂▂▁▂▁▁▁▁▂▁▁▁▁▂▂▂▁▁▁▁▁▁▁▁▁▂▂▂▂▂▂▂▂▂▃▂▂▂▃▂▂▂▂▃▃▃▃▃▄▅▅▅▄▅▃▄▃▄▄▅▅▆▇▆▆▆▆▆▆▆▆▇▇▇▇██
|        |        |       |        |
|        |        |       |        Sat Nov 23 09:54:34
|        |        |       Sat Nov 23 09:01:07
|        |        Sat Nov 23 08:13:36
|        Sat Nov 23 07:20:08
Sat Nov 23 06:26:40

提高显示分辨率

$ krapslog --height 5 /var/log/haproxy.log
                                                                                                   ▁  ▁▃▃██
                                                                                     ▁▅█▃▅▂▂▄▃▃▅▅▇▆█▇██████
                                                                     ▁▆▅▇▅▃▆▇  ▁ ▁▁▄█▇██████████████████████
                                            ▁▁ ▁▂ ▅▂  ▂▃▂▁ ▃▁ ▂▂▅▅▂▄▅████████▇▆█▅███████████████████████████
▇▇▇▆▇▇▅▅▆▅▅▄▃▄▄▇▄▆▃▅▄▅▅▆▅▅▃▁▁▃▃▄▄▄▃▄▅▅▆█▅▅▇▅██▇██████▇████▇█████████████████████████████████████████████████

与其他工具集成

$ zcat /var/log/haproxy.log.1.gz | grep -v "unimportant.html" | krapslog
▂▁▂▁▂▁▂▂▂▁▃▁▁▁▁▁▁▁▁▁▁▁▂▂▁▁▂▃▂▂▃▁▂▁▂▂▂▂▁▂▁▂▄▂▂▂▂▂▂▂▃▂▂▂▂▄▃▃▄▃▃▃▃▄▄▄▄▄▃▄▄▅▄▃▄▄▅▅▅▅

自定义日期格式

默认情况下,krapslog 假设日志时间戳遵循 通用日志格式 (CLF),如下所示:"02/Jan/2006:15:04:05.000"(时区偏移被忽略)。但是,您可以使用 format 参数来查找其他格式的时间戳。参数值必须使用由 strftime 识别的格式。

例如,如果您的日志包含类似 "Jan 1, 2020 15:04:05" 的日期,您可以使用以下方式运行 krapslog

krapslog --format "%b %d, %Y %H:%M:%S" ...

当前支持的指定符

指定符 含义
%Y 完整的儒略历年份,左填充到 4 位。
%C 儒略历年份除以 100,左填充到 2 位。
%y 儒略历年份对 100 取模,左填充到 2 位。
%m 月份编号(01--12),左填充到 2 位。
%b 缩写月份名称。总是 3 个字母。
%B 完整的月份名称。解析时也接受相应的缩写。
%h 与 %b 相同。
%d 日期编号(01--31),左填充到 2 位。
%H 小时编号(00--23),左填充到 2 位。
%M 分钟编号(00--59),左填充到 2 位。
%S 秒编号(00--60),左填充到 2 位。
%.f 类似于 .%f 但左对齐。这些都消耗开头的点。
%s UNIX 时间戳。自 1970-01-01 00:00 UTC 以来经过的秒数。

贡献

请友好相处。我们都在尽力而为。

如果你发现了一个错误,请打开一个issue。(或者更好,提交一个修复它的pull request!)

如果你想看到新功能或想自己添加一个,请打开一个issue,以便我们可以讨论。

依赖

~7-18MB
~232K SLoC