【导语】:一个格式化 Nginx 日志,可疾速浏览、查看 Nginx 日志的工具。

简介

Rhit 能够从规范文件夹中读取 Nginx 的日志文件(gzipped 的压缩文件也能够),并进行剖析统计,在控制台中以可视化的表格模式展现,并且不会产生任何多余的临时文件或数据。

能够依照日期、响应值、申请起源等进行过滤匹配,并进行剖析,Rhit 具备很高的效率,每秒能够解决百万行日志数据。

以下是在一月份的日志中查找状态码为 1xx、2xx 的后果:

我的项目地址是:

https://github.com/Canop/rhit

装置

  • 间接下载应用编译好的二进制文件,然而须要确保shell可能找到rhit二进制文件,一个比拟容易的解决形式就是把它放到/usr/local/bin目录下,并且为它增加可执行权限。
chmod +x rhit  // 下载地址  https://dystroy.org/rhit/download  
  • 从crates.io装置,依赖Rust环境,应用以下命令装置:
cargo install rhit  
  • 源码装置,依赖Rust环境,将github源码clone之后,进入到rhit文件夹,运行以下命令:
cargo install --path .  

显示字段

rhit能够主动关上默认目录下的nginx日志文件,也能够在命令行参数中指定日志门路:

rhit my/archived/logs  

nginx常见的日志行是这样的:

178.133.125.122 - - [21/Jan/2021:05:49:52 +0000] "HEAD /broot/download/x86_64-pc-windows-gnu/broot.exe HTTP/1.1" 200 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"  

它由几个字段组成:日期、近程IP地址、门路、发送的字节等。rhit能够执行对表格进行排序的字段列表,如果未指定,默认依照日期、状态码、起源和门路来显示,如果要制订多个字段,应用逗号进行宰割,如-f date,status;显示所有字段,应用-f all。

  • 基于日期。应用--field date,或者缩写为-f date。默认状况下,条形图的长度基于命中数量进行统计,也能够批改排序键以基于发送字节数进行统计。

  • 基于IP。默认状况下不显示近程IP,能够应用rhit -f ip进行显示。

  • 基于申请办法。默认不显示HTTP申请办法,能够应用rhit -f method进行显示。

  • 基于门路。命令为rhit -f path

  • 基于Referer。命令为rhit -f ref

  • 基于状态码。命令为rhit -f status

筛选

Rhit提供了一些过滤器,用于筛选后果列表,展现本人想看到或者不想看到的一些数据。

  • 按日期筛选。准确到天,日期格局是年/月/日,如筛选2021/2/15到2021/2/20的数据,也能够筛选大于某个工夫、小于某个工夫或不蕴含某个工夫(应用'>','\<','\!'符号):

  • 按近程IP筛选。参数为-i,筛选特定的IP,或者排除某个特定的IP(应用'\!'符号)。
  • 按申请办法筛选。参数为-m,筛选特定办法,或者排除特定的办法。
  • 按申请门路筛选,参数为-p,能够准确匹配,也能够应用正则表达式(例如所有门路均以"download"结尾且以"exe":结尾,参数为 -p 'download.*exe&dollar;'):

  • 按Referer筛选。参数为-r,与按门路筛选的语法统一:

  • 按状态码筛选。参数为-s,筛选特定状态码,或者排除特定的状态码。
  • 组合筛选。以上形式能够任意组合。

排序键

默认状况下,所有表都依照hits进行排序,这就是排序键,排序键的所有值都以粉红色显示,包含直方图。如果对发送字节数更感兴趣,能够将排序键批改为bytes,应用-k b进行更改:

开源前哨 日常分享热门、乏味和实用的开源我的项目。参加保护 10万+ Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。