From 424738ba8e95c0eb924ea82a2ba3758b665468ce Mon Sep 17 00:00:00 2001 From: gotoeasy Date: Thu, 22 Sep 2022 12:59:08 +0800 Subject: [PATCH] 0.7.0 --- README.md | 30 +++++++++++++++++++++--- glc/rabbitmq/consume/amqp_log_handle.go | 5 ++++ glc/www/controller/log_add_controller.go | 6 ++--- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6e6ec8e..a50c32e 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ - [x] 提供`java`项目日志收集包,`java`项目闭环支持 - [x] 支持从`RabbitMQ`收取日志信息,满足更多闭环需求 - [x] 内置提供简洁的`VUE`实现的日志查询管理界面 +- [x] 支持多服务集群模式部署,确保服务及数据保存的冗余性
@@ -32,7 +33,7 @@
-## `docker`运行 +## `docker`单机部署模式简易示例 ``` // 简单示例 docker run -d -p 8080:8080 gotoeasy/glc @@ -41,6 +42,19 @@ docker run -d -p 8080:8080 gotoeasy/glc docker run -d -p 8080:8080 -v /glc:/glogcenter gotoeasy/glc ``` +## `docker`集群部署模式简易示例 +``` +// 以下3台集群,配置实现上是无主模式,接收到日志时会自动转发到其他服务 +// 但鉴于日志的时序性较强,建议仅取其1作为发送日志数据的主服务入口 + +// 服务1 +docker run -d -p 8091:8080 -e GLC_SLAVE_HOSTS=http://127.0.0.1:8092;http://127.0.0.1:8093 -e GLC_SLAVE_TRANSFER=true gotoeasy/glc:0.7.0 +// 服务2 +docker run -d -p 8092:8080 -e GLC_SLAVE_HOSTS=http://127.0.0.1:8091;http://127.0.0.1:8093 -e GLC_SLAVE_TRANSFER=true gotoeasy/glc:0.7.0 +// 服务3 +docker run -d -p 8093:8080 -e GLC_SLAVE_HOSTS=http://127.0.0.1:8091:http://127.0.0.1:8092 -e GLC_SLAVE_TRANSFER=true gotoeasy/glc:0.7.0 +``` + ## `docker`启动环境变量 - [x] `GLC_STORE_NAME_AUTO_ADD_DATE`日志仓是否自动按日存储,默认`true` @@ -54,6 +68,8 @@ docker run -d -p 8080:8080 -v /glc:/glogcenter gotoeasy/glc - [x] `GLC_ENABLE_AMQP_CONSUME`是否开启`rabbitMq`消费者接收日志,默认`false` - [x] `GLC_AMQP_ADDR`消息队列`rabbitMq`连接地址,例:`amqp://user:password@ip:port/`,默认空白 - [x] `GLC_AMQP_JSON_FORMAT`消息队列`rabbitMq`消息文本是否为`json`格式,默认`true` +- [x] `GLC_SLAVE_HOSTS`待转发的服务地址,多个时`;`分隔,默认空白 +- [x] `GLC_SLAVE_TRANSFER`是否开启转发日志到其他GLC服务,默认false ## 命令行启动参数(适用`0.6.*`及以上版本) - [x] 支持命令行参数`-v`查看版本 @@ -72,13 +88,13 @@ docker run -d -p 8080:8080 -v /glc:/glogcenter gotoeasy/glc -## 使用`logback`的`java`项目,支持日志收集 +## 使用`logback`的`java`项目,支持日志收集,确保主次版本和GLC版本一致 ```xml top.gotoeasy glc-logback-appender - 0.6.0 + 0.7.0 ``` @@ -115,8 +131,16 @@ docker run -d -p 8080:8080 -v /glc:/glogcenter gotoeasy/glc - [ ] 界面优化 - [ ] 多语言 - [ ] 分词优化 +- [ ] 海量日志数据支持 +- [ ] 日志审计 +### 版本`0.7.0` + +- [x] 增加日志转发功能,支持多服务集群模式部署,确保服务及数据保存的冗余性 +- [x] 增加转发地址配置项`GLC_SLAVE_HOSTS`,多地址时可`;`分隔 +- [x] 增加转发开关配置项`GLC_SLAVE_TRANSFER`,默认是false不开启 + ### 版本`0.6.0` - [x] 升级使用Go1.19 diff --git a/glc/rabbitmq/consume/amqp_log_handle.go b/glc/rabbitmq/consume/amqp_log_handle.go index aed4d71..175c1ed 100644 --- a/glc/rabbitmq/consume/amqp_log_handle.go +++ b/glc/rabbitmq/consume/amqp_log_handle.go @@ -8,6 +8,7 @@ import ( "glc/ldb" "glc/ldb/storage/logdata" "glc/onexit" + "glc/www/controller" "log" "sync" ) @@ -73,6 +74,10 @@ func fnAmqpJsonLogHandle(jsonLog string, err error) bool { engine := ldb.NewDefaultEngine() engine.AddTextLog(md.Date, md.Text, md.System) + if conf.IsEnableSlaveTransfer() { + controller.TransferGlc(md.ToJson()) // 转发其他GLC服务 + } + return true } diff --git a/glc/www/controller/log_add_controller.go b/glc/www/controller/log_add_controller.go index f4fba9e..91debb7 100644 --- a/glc/www/controller/log_add_controller.go +++ b/glc/www/controller/log_add_controller.go @@ -30,7 +30,7 @@ func JsonLogAddController(req *gweb.HttpRequest) *gweb.HttpResult { } if conf.IsEnableSlaveTransfer() { - transferGlc(md) // 转发其他GLC服务 + TransferGlc(md.ToJson()) // 转发其他GLC服务 } engine := ldb.NewDefaultEngine() @@ -62,10 +62,10 @@ func JsonLogTransferAddController(req *gweb.HttpRequest) *gweb.HttpResult { } // 转发其他GLC服务 -func transferGlc(md *logdata.LogDataModel) { +func TransferGlc(jsonlog string) { hosts := conf.GetSlaveHosts() for i := 0; i < len(hosts); i++ { - go httpPostJson(hosts[i]+conf.GetContextPath()+"/v1/log/transferAdd", md.ToJson()) + go httpPostJson(hosts[i]+conf.GetContextPath()+"/v1/log/transferAdd", jsonlog) } }