社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

Rhit:高效可视化 Nginx 日志查看工具,每秒处理百万行日志数据

Cocoa开发者社区 • 3 年前 • 300 次点击  

【导语】:一个格式化 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$'):


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


  • 按状态码筛选。参数为-s,筛选特定状态码,或者排除特定的状态码。

  • 组合筛选。以上方式可以任意组合。

排序键

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


- EOF - 


分享、点赞和在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/110071
 
300 次点击