gos-log高性能大日志检索中台

gos-log

基于Go语言的轻量级高性能的大日志检索系统

开源地址

gos-log

https://gitee.com/dianjiu/gos-log

https://github.com/dianjiu/gos-log

gos-log-vue

https://gitee.com/dianjiu/gos-log-vue

https://github.com/dianjiu/gos-log-vue

演示地址

http://goslog.dianjiu.org.cn

账号:admin
密码:admin

演示截图

登陆页

在这里插入图片描述

客户端

在这里插入图片描述

项目管理

在这里插入图片描述

日志查找

在这里插入图片描述

项目构建

gos-log

# 进入go工作空间
cd ~/codes/go/src
# 配置go国内代理
sudo vim ~/.bash_profile
# 新增如下内容 
export GOPATH=/Users/dianjiu/Codes/go
export GOROOT=/usr/local/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
export GOPROXY=https://goproxy.cn
export GO111MODULE=on
# 使配置生效
source ~/.bash_profile
# 安装beego依赖
go get github.com/astaxie/beego
go get github.com/beego/bee
# 克隆项目
git clone https://github.com/dianjiu/gos-log.git
# 分别进入项目目录
cd gos-log/logs		#进入服务端
cd gos-log/logc		#进入客户端
# 启动服务
bee run

gos-log-vue

# 克隆项目
git clone https://github.com/dianjiu/gos-log-vue.git

# 进入项目目录
cd gos-log-vue

# 安装依赖
yarn install

# 启动服务
yarn run dev

项目部署

gos-log

# 打包服务端
cd gos-log/logs
bee pack -be GOOS=linux
# 打包客户端
cd gos-log/logc
bee pack -be GOOS=linux
# 准备数据库 见gos-log项目下的sql文件夹

gos-log-logs

# 解压缩
tar -zxf logs.tar.gz -C ./ 
# 授权
chmod 777 logs 
# 修改数据库配置
sudo vim conf/app.conf 
# 启动
nohup ./logs >> logs.log & 

gos-log-logc

# 解压缩
tar -zxf logc.tar.gz -C ./ 
# 授权
chmod 777 logc 
# 启动
nohup ./logc >> logc.log & 

gos-log-vue

# 打包构建
yarn run build
# 把dist目录下的文件拿到服务器部署即可
# nginx部署如下nginx.conf
server {
	listen       2022;
	server_name  localhost;

	location / {
		root /web/gos-log/vue;
		index  index.html index.htm;
		try_files $uri $uri/ /index.html; 
	}
	location /api {
		rewrite  ^/api/(.*)$ /$1 break;
		proxy_pass http://127.0.0.1:2021;
	}
}

更新日志

V2.0.0

  • 1、优化压缩算法、解决压缩包路径过长问题

  • 2、优化并行查询速度,查询全部服务器理论耗时于单台服务相当

  • 3、实现客户端启动即注册,及服务端健康检查功能

  • 4、优化向下截取行可输入,解决默认1000行有时不够用的问题

  • 5、增加安全性,服务端所有接口实现token验证,客户端仅支持注册的服务端进行调用

  • 6、有机会的话做一下权限管理,不同的用户(即不同的部门成员)仅可看到和查询该部门客户端下的服务器日志

V1.0.0

  • 1、基于bufio实现高性能的日志检索算法

  • 2、基于beego实现服务端客户端分离设计

  • 3、基于vue2.0实现服务端前后端分离设计

  • 4、基于DBMan实现数据库表关系设计

  • 5、实现多种数据库适配,支持MySQL、PostgreSQL

  • 6、实现服务端的登陆登出功能

  • 7、实现服务端的客户端增删改查、分页、注册接口

  • 8、实现服务端的项目日志的增删改查、分页接口

  • 9、实现服务端的项目日志单台和全部客户端的查询

  • 10、实现客户端的日志检索功能

  • 11、实现客户端的服务注册功能

性能测试

系统硬件

CPUIntel® Core™ i5-10210U CPU @ 1.60GHz × 8
内存16G
硬盘512.1 GB
操作系统Ubuntu 20.04.2 LTS 64位
GNOME版本3.36.8

系统环境

Java环境ORACLE JDK13.0.2
Go环境GO1.15.7 linux/amd64
Python环境Python 3.8.5

性能对比

单文件逐行读取 17.8G test.log (单线程读取)

语言test1test2test3test4test5总耗时平均耗时
Go32.99s34.24s30.33s31.21s35.70s164.16s32.83s
Python32分钟还没执行完
Java226s206s153s219s183s987s197.4s

关于点九

个人站点

http://dianjiu.co/

个人邮箱

dianjiu@dianjiu.cc

公众号

在这里插入图片描述

交流群

在这里插入图片描述

项目致谢

posted @ 2021-03-31 15:49  点九先生  阅读(65)  评论(0编辑  收藏  举报