46个版本 (5个破坏性版本)
0.6.3 | 2024年5月27日 |
---|---|
0.6.2 | 2024年5月20日 |
0.5.5 | 2024年3月8日 |
0.4.9 | 2024年3月8日 |
0.1.8 | 2024年2月12日 |
#76 in 网络编程
每月4,033次下载
48KB
1K SLoC
NGINX日志统计
一个多线程、深度搜索功能、功能全面且智能的NGINX日志解析器
根据参数,NGXAV可以解析每秒2-5百万行的NGINX日志行,使其成为最快的NGINX日志解析器之一。它可以跨会话搜索,允许进行更深入的搜索,而不仅仅是典型的逐行搜索。NGXAV具有旨在检测和防止大型文件请求、查看哪些IP最负责流量、用户代理解析(多亏了woothee)等功能,还有更多。它是完全开源的,并且完全使用RUST重写。
安装
要使用cargo安装此包,请运行以下命令:cargo install ngxav
使用方法
要运行此程序,请使用ngxav
。
如果您使用的是默认的NGINX日志格式,它应该可以直接使用。您可以使用以下标志使用不同的参数进行搜索
-f/--file
- 必需的,指定要搜索的文件/文件夹的路径(如"access.log"或"/var/log/nginx/")-s/--search
- 可选的,REGEX或匹配行的文本-b/--start_date
- 可选的,在特定时间段内查找所有日志(使用时间格式08/Nov/2023:08:04:05)-e/--end_date
- 可选的,在特定时间段内查找所有日志(使用时间格式08/Nov/2023:08:04:05)-q/--host
- 可选的,匹配特定主机(如site.domain.com)-r/--request
- 可选,查找特定请求的所有条目(例如 GET /home/)-t/--status
- 可选,查找特定HTTP状态码的所有条目(例如 200,404,等)-u/--unique
- 可选,只显示日志选择中每个IP地址的最新请求-a/--analytics
- 可选,显示日志选择的分析视图,而不仅仅是原始日志-o/--referer
- 可选,只显示指定http referer的请求-x/--sa
- 可选,显示基于会话的分析(会话是一系列用户活动(请求)在一定时间间隔内的交互)-l/--lst
- 可选,只显示最后n分钟内的请求 --m/--large <n>
- 可选,显示最大的N个请求(请求路径和IP)-d/--ip_ses
- 可选,显示特定IP的会话-p/--pt
- 可选,使用纯文本而不是正则表达式进行搜索(更快)-z/--browser
- 可选,搜索来自特定浏览器的请求-v/--os
- 可选,搜索来自特定操作系统的请求-g/--bot <true/false>
可选,搜索来自/不来自机器人的请求(通过用户代理识别)-j/--device_category
可选,搜索来自某些设备("pc","智能手机","移动电话","家电","爬虫","其他","未知")的请求-w/--su
可选,查找给定日志选择中唯一会话的行-c/--cm
可选,逐行读取文件以使用几乎不使用内存(不能与分析工具一起使用)-y/--uniqueby
可选,正则表达式用于ip相关搜索时使用除了IP以外的其他内容
示例运行: ngxav -f access.log -a
输出
===~ LOG SELECTION STATS ~===
Total Requests: 70,759
Requests Per Min: 13.07
Average Body Transfer Speed: 3.05 MB/S
Total Body Size: 30MB
Top 5 Requests:
-GET /mtaAPI ~ 16,960
-GET /get-trains ~ 13,969
-GET /tripUpdatesAPI ~ 11,374
-GET / ~ 7,526
-GET /assets/TimelineIcon.svg ~ 5,594
Top 5 Hosts:
-api.marcmap.app ~ 29,795
-amtrak-api.marcmap.app ~ 18,942
-marcmap.app ~ 7,631
-localhost ~ 6,597
-quinnpatwardhan.com ~ 3,013
Top 5 IP Addresses:
<Redacted>
示例运行: ngxav -f access.log -sa
SESSION STATS
==============
3200 Total Unique Sessions
0.0003125 Avg Requests Per Session
0min Avg Session Length
MOST COMMON PATHS
=================
- 'amtrak-api.marcmap.app' (1191)
- 'api.marcmap.app' (439)
- 'amtrak-api.marcmap.app' --> 'marcmap.app' --> 'amtrak-api.marcmap.app' (373)
- 'quinnpatwardhan.com' (189)
- 'marcmap.app' (186)
贡献/问题
我们欢迎贡献和错误报告/问题!只需向仓库提交拉取请求 - Github
依赖
测试用法
使用发布标志构建软件包:cargo build --release
运行测试:cd tests && cargo run
许可协议(MIT)
MIT 许可协议
版权所有 (c) [2023] [Quinn Patwardhan]
任何人可免费获得此软件及其相关文档副本(“软件”),在不作任何限制的情况下使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供者提供软件的人也这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论这些责任是源于合同、侵权或其他方式,无论这些责任产生于、源于或与软件或其使用或其他交易有关。
依赖
~11MB
~152K SLoC