NixVis 开源轻量级 Nginx 日志分析工具
NixVis
NixVis 是一款基于 Go 语言开发的、开源轻量级 Nginx 日志分析工具,专为自部署场景设计。它提供直观的数据可视化和全面的统计分析功能,帮助您实时监控网站流量、访问来源和地理分布等关键指标,无需复杂配置即可快速部署使用。
- 演示地址:nixvis.beyondxin
- 项目源码:BeyondXinXin/nixvis

功能特点
- 全面访问指标:实时统计独立访客数 (UV)、页面浏览量 (PV) 和流量数据
- 地理位置分布:展示国内和全球访问来源的可视化地图
- 详细访问排名:提供 URL、引荐来源、浏览器、操作系统和设备类型的访问排名
- 时间序列分析:支持按小时和按天查看访问趋势
- 多站点支持:可同时监控多个网站的访问数据
- 增量日志解析:自动扫描 Nginx 日志文件,解析并存储最新数据
- 高性能查询:存储使用轻量级 SQLite,结合多级缓存策略实现快速响应
- 嵌入式资源:前端资源和IP库内嵌于可执行文件中,无需额外部署静态文件
快速开始
- 下载最新版本的 NixVis
wget https://github.com/beyondxinxin/nixvis/releases/latest/download/nixvis
chmod +x nixvis
- 生成配置文件
./nixvis -gen-config
执行后将在当前目录生成 nixvis_config.json 配置文件。
- 编辑配置文件 nixvis_config.json,添加您的网站信息和日志路径
{
"system": {"logDestination": "file"
},
"server": {"Port": ":8088"
},
"websites": [{"name": "我的博客","logPath": "/var/log/nginx/blog.log"}
]
}
- 启动 NixVis 服务
./nixvis
- 访问 Web 界面
http://localhost:8088
从源码编译
如果您想从源码编译 NixVis,请按照以下步骤操作:
# 克隆项目仓库
git clone https://github.com/BeyondXinXin/nixvis.git
cd nixvis# 编译项目
go mod tidy
go build -o nixvis ./cmd/nixvis/main.go# 或使用编译脚本
# bash package.sh
技术栈
- 后端: Go语言 (Gin框架、ip2region地理位置查询)
- 前端: 原生HTML5/CSS3/JavaScript (ECharts地图可视化、Chart.js图表)
许可证
NixVis 使用 MIT 许可证开源发布。详情请查看 LICENSE 文件。
相关文章:
NixVis 开源轻量级 Nginx 日志分析工具
NixVis NixVis 是一款基于 Go 语言开发的、开源轻量级 Nginx 日志分析工具,专为自部署场景设计。它提供直观的数据可视化和全面的统计分析功能,帮助您实时监控网站流量、访问来源和地理分布等关键指标,无需复杂配置即可快速部署使用。 演示…...
vscode正则表达式使用
小标题 ^\d.\d.\d\s.*$ ^表示匹配字符串的开头。\d\.\d\.\d表示匹配一到多个数字,接着一个小数点,再接着一到多个数字,然后又一个小数点和一到多个数字,用来匹配类似 “2.1.1” 这样的标题号部分。\s表示匹配一个空格。.*表示匹配…...
OpenAI API - Realtime 实时
文章目录 实时 API(Beta)使用实时API入门示例应用合作伙伴集成 用例通过 WebRTC 连接概述连接详情创建一个临时token发送和接收事件 使用 WebSockets 连接概述连接详情 实时对话Beta实时语音到语音会话会话生命周期事件文本输入和输出音频输入和输出语音…...
PE文件(十三)资源表
所谓的资源也就是我们之前学的MFC中的对话框,按钮,编辑框之类的东西。不仅MFC有资源,我们平时熟悉的控制台程序也有资源 当我们平时写一些程序或者木马时,我们通常对其定义一个随机的名称或者路径,然后再向外界进行释…...
丝杆升降机行程控制:精准运行的奥秘
丝杆升降机作为机械传动领域的 “得力干将”,在环保设备、工业生产线、建筑施工等众多场景中发挥着关键作用。其能够实现重物的升降、平移等操作,而行程控制对于丝杆升降机而言,就如同给机器设定了行动边界,不仅关乎设备能否精准达…...
为什么使用Flask + uWSGI + Nginx 部署服务?
概述 在Python开发的web应用中,我们通常能够看到flask、uWSGI、Nginx出现在一起,他们之间的关系是什么?为什么总是被应用在一起?  三者共同使用为了实现一个目的:客户端向服务端发送数据请求,服…...
力扣.旋转矩阵Ⅱ
59. 螺旋矩阵 II - 力扣(LeetCode) 代码区: class Solution {const int MAX25; public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> ans;vector<int> hang;int len_nn;int arry[25][25]…...
HFSS 使用入门
资源 下载资源: https://download.csdn.net/download/wangjun_huster/90547193 下载破解: https://download.csdn.net/download/wangjun_huster/90547551 安装 https://www.bilibili.com/list/ml3403866295?oid925751664&bvidBV1CT4y1u7LB 入门…...
对内核fork进程中写时复制的理解记录
前言 文章写于学习Redis时对aof后台重写中写时复制的疑问 一、感到不理解的歧义 在部分技术文档中(以小林的文章为例),对写时复制后的内存权限存在如歧义: ! 二、正确技术表述 根据Linux内核实现(5.15版本&#x…...
ubuntu 升级补丁,备份备份备份
一、常规软件包更新(安全补丁和软件升级) 更新软件包列表 从软件源服务器获取最新的软件包信息: sudo apt update升级已安装的软件包 安装所有可用的更新(安全补丁、功能更新): sudo apt upgrade处理依赖…...
HarmonyOS-ArkUI Navigation (导航组件)-第一部分
导航组件主要实现页面间以及组件内部的界面跳转,支持在不同的组件间进行参数的传递,提供灵活的跳转栈操作,从而便捷的实现对不同页面的访问和复用。 我们之前学习过Tabs组件,这个组件里面也有支持跳转的方式,Navigati…...
【磁盘扩容】linux磁盘扩容
一、新磁盘分区 1、新磁盘在接入服务器后,很好辨认 使用fdisk -l命令,查看: 或者使用 lsblk -f 其中sdb,sdc, sda都是挂载硬盘,sr0为DVD光盘,很明显sdc没有进行任何的挂载,确定sdc为新磁盘 2、格式化新…...
字典翻转教学
第1关:创建大学英语四级单词字典 任务描述 本关任务:编写一个能创建大学英语四级单词字典的小程序。 相关知识 为了完成本关任务,你需要掌握: 1.创建空字典 2.字典中增加元素 3.字典视图 4.字典排序 创建空字典 空的大括号{}和…...
详解CountDownLatch底层源码
大家好,我是此林。 今天来分享一下CountDownLatch的底层源码。 CountDownLatch 是 Java 并发包 (java.util.concurrent) 中的线程之间同步工具类,主要用于协调多个线程的执行顺序。其核心思想是通过计数器实现线程间的"等待-唤醒"机制&#…...
Gitee批量删除仓库
Gitee批量删除仓库 文章目录 Gitee批量删除仓库生成一个GiteeToken通过Python调用Gitee API参考文档 生成一个GiteeToken 右上角下拉->设置->安全设置->私人令牌->生成新令牌,注意将令牌保存(只会出现一次) 通过Python调用Gite…...
AI 时代,我们该如何写作?
当ChatGPT/DeepSeek能在几秒钟内产出一篇文章,而且生成能力日益精进,你是否也曾思考,我还能做什么? 当2024年AI开始进入人们的视野,我在CSDN 上的博客也悄然发生了变化,以前一篇文章发布后,阅读…...
day16 学习笔记
文章目录 前言一、广播机制二、数组遍历1.for循环2.nditer函数 三、数组操作1.reshape函数2.flat属性3.flatten函数4.revel函数5.数组转置6.升维与降维7.数组的连接与分割8.数组运算 前言 通过今天的学习,我进一步掌握了更多numpy的语法知识 一、广播机制 广播&am…...
Python基于EdgeTTS库文本转语音
EdgeTTS,支持粤语等各种方言,无需部署无需Key,完全免费,太香了 因为其底层是使用微软 Edge 的在线语音合成服务,所以不需要下载任何模型,甚至连 api_key 都给你省了,简直不要太良心~ 关键是&a…...
Day43 | 129. 求根节点到叶节点数字之和、1382. 将二叉搜索树变平衡、100. 相同的树
129. 求根节点到叶节点数字之和 题目链接:129. 求根节点到叶节点数字之和 - 力扣(LeetCode) 题目难度:中等 代码: class Solution {List<Integer> pathnew ArrayList<>();int res0;public int sumNumb…...
MFC案例:利用计时器(Timer)动态绘制正弦曲线
这是一个基于对话框的MFC程序,运行效果是在只画出I、IV象限的坐标系中绘制出红、蓝、绿各相差PI/2的三条正弦曲线,计时器运行一个周期曲线在X轴移动一个像素(对应1度),Y轴显示正弦值(150个像素代表1&#x…...
解析 HTML 网站架构规范
2025/3/28 向全栈工程师迈进! 一、网页基本的组成部分 网页的外观多种多样,但是除了全屏视频或游戏,或艺术作品页面,或只是结构不当的页面以外,都倾向于使用类似的标准组件。 1.1页眉 通常横跨于整个页面顶部有一…...
Kubernetes》》K8S》》Deployment 、Pod、Rs 、部署 nginx
Deployment deployment文档说明 kubectl get rs,deployment,pods 删除pod 、deployment 、service # 如果只删除pod,deployment会自动重建,所以应该先删除deployment。 # 下面演示的是删除所有deployment,可以指定只删除某个 # 删除所有…...
链表(C++)
这是本人第二次学习链表,第一次学习链表是在大一上的C语言课上,首次接触,感到有些难;第二次是在大一下学习数据结构时(就是这次),使用C再次理解链表。同时,这也是开启数据结构学习写…...
nginx 设置隐藏版本号
Nginx默认会在Server头里包含版本信息,比如“nginx/1.18.0”,这可能存在安全隐患,因为攻击者知道了版本号后,可以针对特定版本的漏洞进行攻击。所以,隐藏版本号是一个常见的安全措施。 可通过在http块里加上server_to…...
29_项目
目录 http.js 1、先注册账号 register.html 2、再登录 login.html 3、首页 index.html 4 详情 details.html cart.html css index.css register.css details.css 演示 进阶 http.js let baseURL "http://localhost:8888"; let resgiterApi baseURL &…...
排序算法1--插入排序
目录 1.常见排序算法 2.排序算法的预定函数 2.1交换函数 2.2测试算法运行时间的函数 3.插入排序 3.1直接插入排序 3.2希尔排序 3.3插入排序的时间复杂度分析 4.总结 1.常见排序算法 我将分别讲解五种排序算法,但是不代表只有五种固定的代码,之后…...
PolarDB数据库表恢复实战指南:通过控制台恢复表的完整操作流程
在数据库运维过程中,表数据恢复是一项常见且关键的操作。本文将详细介绍如何通过阿里云PolarDB控制台从备份中恢复特定表,并通过表重命名操作确保业务平稳过渡。 一、背景介绍 在日常数据库运维中,我们可能会遇到以下场景需要从备份中恢复表: 表数据被误删或损坏需要获取历…...
业之峰与宏图智能战略携手,开启家装数字化新篇章
3月8日,业之峰装饰集团董事长张钧携高管团队与宏图智能董事长庭治宏及核心团队,在业之峰总部隆重举行了战略合作签约仪式,标志着双方将携手探索业之峰的数字化转型之路,共同推动家装行业的变革与发展。 近年来,家装行业…...
matplotlib标题比x,y轴字体大,明明标题字体更大?
原始代码: plt.xlabel(训练轮次(Epochs), fontsize14, fontweightbold, fontpropertieschinese_font) # 设置中文字体、加大、加粗 plt.ylabel(R值, fontsize14, fontweightbold, fontpropertieschinese_font) # 设置中文字体、加大、加粗…...
【云原生】docker 搭建单机PostgreSQL操作详解
目录 一、前言 二、前置准备 2.1 服务器环境 2.2 docker环境 三、docker安装PostgreSQL过程 3.1 获取PostgreSQL镜像 3.2 启动容器 3.2.1 创建数据卷目录 3.2.2 启动pg容器 3.3 客户端测试连接数据库 四、创建数据库与授权 4.1 进入PG容器 4.2 PG常用操作命令 4.2…...
