制作一个可视化Nginx Log数据面板
前言
Why?
今天看了一下Nginx的access.log文件,数据太多,根本不直观,想到可以用Python3稍微处理一下,一不小心就把这个面板做了出来
同时也是我的第一个github项目:地址
关于access.log
access.log记录的信息像这样:
文件可能在/var/log/nginx目录下,具体看/etc/nginx/nginx.conf写的内容
此文件记录的是请求日志,会有什么内容呢?有请求设备名称,浏览器(应该是header中记录的)类型,请求的文件,请求状态等
也就是说可以了解哪一个地址最受欢迎被访问,也可以看看是谁在扫你的服务器web端口
简单说下怎么实现的?
Python3程序读取access.log(无法读取什么的权限问题什么的这里不会讲),提取关键信息生成json文件,浏览器前端JavaScript程序请求Json再进行二次处理
这样做可以达到请求时无后端,避免占用过多的服务器资源,也提高了安全性
平时的话使用定时任务运行此程序让它更新一下json就好
效果截图
本站的面板:https://blog.lxscloud.top/dashboard/index.html
数据总览
可以查看主页访问数和请求数
同时提供图表
模块
有五个子模块
模块细分
网站请求次数排名
具有标签功能,信息一目了然
具备追踪功能
访问者使用最多的浏览器
具有标签功能,标签显示浏览器和异常情况
同样具备追踪功能
访问次数最多的IP
是否显示IP由面板用户决定,请看后部分使用说明
原始数据
有时候可能有看原始数据的需求
开始
Python3读取access.log, 分类成字典,生成json文件
Javascript请求json文件,处理图表数据,处理模块数据,代码不到一千行
网页模板来自这里
结束
源程序可以到我的仓库地址下载,上面有说明,麻烦移步:地址
测试环境:nginx/1.16.1 and nginx/1.18.0(即此版本的Log可以被识别)
V1
- Basic function
- 基本功能(访问显示、访问信息)
V1.1
- Repaired sort by date and appended Fetch and Referer showing
- 请求量按日期排序、增加“请求”和“来自网址”的显示
V2.0(当前版本)
修复了一个小BUG
优化了代码结构
添加 “加载剩余数据” 按钮,在信息比较多的时候不会全部加载到页面
访问足迹功能(可以查看访问者还打开了什么网址、什么时候打开的)
显示提示标签(数据仅供参考)
EOF