#log-parser #nginx #filter #log-entries #regex #analytics #requests

app ngxav

使用高级过滤器和显示所选日志条目分析功能搜索NGINX日志

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 网络编程

Download history 111/week @ 2024-05-10 367/week @ 2024-05-17 187/week @ 2024-05-24 19/week @ 2024-05-31 4/week @ 2024-06-07 3/week @ 2024-06-14

每月4,033次下载

MIT 许可证

48KB
1K SLoC

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