gos-log
基于Go語言的輕量級(jí)高性能的大日志檢索系統(tǒng)
開源地址
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
演示地址
賬號(hào):admin
密碼:admin
演示截圖
登陸頁
客戶端
項(xiàng)目管理
日志查找
項(xiàng)目構(gòu)建
gos-log
# 進(jìn)入go工作空間
cd ~/codes/go/src
# 配置go國內(nèi)代理
sudo vim ~/.bash_profile
# 新增如下內(nèi)容
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
# 克隆項(xiàng)目
git clone https://github.com/dianjiu/gos-log.git
# 分別進(jìn)入項(xiàng)目目錄
cd gos-log/logs #進(jìn)入服務(wù)端
cd gos-log/logc #進(jìn)入客戶端
# 啟動(dòng)服務(wù)
bee run
gos-log-vue
# 克隆項(xiàng)目
git clone https://github.com/dianjiu/gos-log-vue.git
# 進(jìn)入項(xiàng)目目錄
cd gos-log-vue
# 安裝依賴
yarn install
# 啟動(dòng)服務(wù)
yarn run dev
項(xiàng)目部署
gos-log
# 打包服務(wù)端
cd gos-log/logs
bee pack -be GOOS=linux
# 打包客戶端
cd gos-log/logc
bee pack -be GOOS=linux
# 準(zhǔn)備數(shù)據(jù)庫 見gos-log項(xiàng)目下的sql文件夾
gos-log-logs
# 解壓縮
tar -zxf logs.tar.gz -C ./
# 授權(quán)
chmod 777 logs
# 修改數(shù)據(jù)庫配置
sudo vim conf/app.conf
# 啟動(dòng)
nohup ./logs >> logs.log &
gos-log-logc
# 解壓縮
tar -zxf logc.tar.gz -C ./
# 授權(quán)
chmod 777 logc
# 啟動(dòng)
nohup ./logc >> logc.log &
gos-log-vue
# 打包構(gòu)建
yarn run build
# 把dist目錄下的文件拿到服務(wù)器部署即可
# 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未巫、優(yōu)化壓縮算法怀喉、解決壓縮包路徑過長(zhǎng)問題
2、優(yōu)化并行查詢速度奋献,查詢?nèi)糠?wù)器理論耗時(shí)于單臺(tái)服務(wù)相當(dāng)
3、實(shí)現(xiàn)客戶端啟動(dòng)即注冊(cè)布轿,及服務(wù)端健康檢查功能
4甫煞、優(yōu)化向下截取行可輸入,解決默認(rèn)1000行有時(shí)不夠用的問題
5沉馆、增加安全性码党,服務(wù)端所有接口實(shí)現(xiàn)token驗(yàn)證德崭,客戶端僅支持注冊(cè)的服務(wù)端進(jìn)行調(diào)用
6、有機(jī)會(huì)的話做一下權(quán)限管理揖盘,不同的用戶(即不同的部門成員)僅可看到和查詢?cè)摬块T客戶端下的服務(wù)器日志
V1.0.0
1眉厨、基于bufio實(shí)現(xiàn)高性能的日志檢索算法
2、基于beego實(shí)現(xiàn)服務(wù)端客戶端分離設(shè)計(jì)
3兽狭、基于vue2.0實(shí)現(xiàn)服務(wù)端前后端分離設(shè)計(jì)
4憾股、基于DBMan實(shí)現(xiàn)數(shù)據(jù)庫表關(guān)系設(shè)計(jì)
5、實(shí)現(xiàn)多種數(shù)據(jù)庫適配箕慧,支持MySQL服球、PostgreSQL
6、實(shí)現(xiàn)服務(wù)端的登陸登出功能
7销钝、實(shí)現(xiàn)服務(wù)端的客戶端增刪改查有咨、分頁、注冊(cè)接口
8蒸健、實(shí)現(xiàn)服務(wù)端的項(xiàng)目日志的增刪改查座享、分頁接口
9、實(shí)現(xiàn)服務(wù)端的項(xiàng)目日志單臺(tái)和全部客戶端的查詢
10似忧、實(shí)現(xiàn)客戶端的日志檢索功能
11渣叛、實(shí)現(xiàn)客戶端的服務(wù)注冊(cè)功能
性能測(cè)試
系統(tǒng)硬件
CPU | Intel? Core? i5-10210U CPU @ 1.60GHz × 8 |
---|---|
內(nèi)存 | 16G |
硬盤 | 512.1 GB |
操作系統(tǒng) | Ubuntu 20.04.2 LTS 64位 |
GNOME版本 | 3.36.8 |
系統(tǒng)環(huán)境
Java環(huán)境 | ORACLE JDK13.0.2 |
---|---|
Go環(huán)境 | GO1.15.7 linux/amd64 |
Python環(huán)境 | Python 3.8.5 |
性能對(duì)比
單文件逐行讀取 17.8G test.log (單線程讀取)
語言 | test1 | test2 | test3 | test4 | test5 | 總耗時(shí) | 平均耗時(shí) |
---|---|---|---|---|---|---|---|
Go | 32.99s | 34.24s | 30.33s | 31.21s | 35.70s | 164.16s | 32.83s |
Python | 32分鐘還沒執(zhí)行完 | ||||||
Java | 226s | 206s | 153s | 219s | 183s | 987s | 197.4s |