代码拉取完成,页面将自动刷新
昔者,吾日志中心之事,恒用传统三件套,曰ELK
,然岁月流转,如行舟江河,难免潮涌沉浮,不维其盛,则不足以久存。故见诸多不如意,如定制之难,如索引之弗易,如初启之迟缓如蜗牛,如操作之陌生如他邦,如资甚之贪婪如饕餮之兽,如崩溃之险如山崩川竭,疑难重重,如堆积之沙石。
终有一日,愈发执志,以go
之巧工,铸造新日志中心,其表现多舛,实足以令人惊艳,是以,赋名曰glogcenter
,亦称GLC
,开仓建库。
当下,架库之作已可窥见,与君共享。
(以上由GPT编辑)
国外仓库地址: https://github.com/gotoeasy/glogcenter
国内(同步): https://gitee.com/gotoeasy/glogcenter
演示地址(网络可能不稳定): https://glc.gotoeasy.top
【节省资源】
【性能卓越】
【广泛适用】
【功能丰富】
【体验优秀】
【部署方便】
【集成简单】
【安全可靠】
【高可用保障】
【生产级别品质】
docker
单机部署模式简易示例# 快速体验(其中通过GLC_TEST_MODE=true开启测试模式,页面上会显示生成测试数据的按钮,方便测试或快速体验)
docker run -d -p 8080:8080 -e GLC_TEST_MODE=true gotoeasy/glc
# 外挂数据目录
docker run -d -p 8080:8080 -v /glc:/glogcenter gotoeasy/glc
# 【简易用法】
# 启动成功后即可按 http://ip:port 访问
# 支持多关键词检索,比如输入【key1、key2、key3】检索出同时满足这3个关键词的结果
# 默认每次检索100条,滚动到底部时自动检索后面100条
docker
集群部署模式简易示例# 以下3台以集群方式启动,配置本节点地址及关联节点地址即可
# 采用“乐观集群”方式,简易选主(简单排序)+日志群发(忽略失败)+数据补偿(隔日同步历史数据)
# 服务1
docker run -d -p 8080:8080 -e GLC_CLUSTER_MODE=true -e GLC_SERVER_URL=http://172.27.59.51:8080 \
-e GLC_CLUSTER_URLS=http://172.27.59.51:8080;http://172.27.59.52:8080;http://172.27.59.53:8080 \
gotoeasy/glc
# 服务2
docker run -d -p 8080:8080 -e GLC_CLUSTER_MODE=true -e GLC_SERVER_URL=http://172.27.59.52:8080 \
-e GLC_CLUSTER_URLS=http://172.27.59.51:8080;http://172.27.59.52:8080;http://172.27.59.53:8080 \
gotoeasy/glc
# 服务3
docker run -d -p 8080:8080 -e GLC_CLUSTER_MODE=true -e GLC_SERVER_URL=http://172.27.59.53:8080 \
-e GLC_CLUSTER_URLS=http://172.27.59.51:8080;http://172.27.59.52:8080;http://172.27.59.53:8080 \
gotoeasy/glc
docker
启动环境变量GLC_STORE_NAME_AUTO_ADD_DATE
日志仓是否自动按日存储,默认true
GLC_SAVE_DAYS
日志仓按日存储自动维护时的保留天数(有效范围0~1200
),0
表示不自动删除,默认180
天GLC_SEARCH_MULIT_LINE
,是否对日志列的全部行进行索引检索,默认false
仅第一行GLC_ENABLE_LOGIN
是否开启用户密码登录功能,默认false
GLC_USERNAME
管理员用户名,默认glc
,从0.13.0
版本开始,管理员有新增用户及权限管理功能,并且有全部系统的查询权限GLC_PASSWORD
管理员密码,默认GLogCenter100%666
GLC_TOKEN_SALT
用以生成令牌的字符串令牌盐,开启登录功能时建议设定提高安全性,默认空白GLC_ENABLE_SECURITY_KEY
日志添加的接口是否开启API秘钥校验,默认false
GLC_HEADER_SECURITY_KEY
API秘钥的header
键名,默认X-GLC-AUTH
GLC_SECURITY_KEY
API秘钥,默认glogcenter
GLC_ENABLE_CORS
是否允许跨域,默认false
GLC_PAGE_SIZE
每次检索件数,默认100
(有效范围1~1000
)GLC_ENABLE_WEB_GZIP
网页服务是否开启压缩,默认false
GLC_ENABLE_AMQP_CONSUME
是否开启rabbitMq
消费者接收日志,默认false
GLC_AMQP_ADDR
消息队列rabbitMq
连接地址,例:amqp://user:password@ip:port/
,默认空白GLC_AMQP_JSON_FORMAT
消息队列rabbitMq
消息文本是否为json
格式,默认true
GLC_CLUSTER_MODE
是否集群模式启动,默认false
GLC_SERVER_URL
集群模式时的本节点服务地址,默认空白GLC_CLUSTER_URLS
集群模式时的关联节点服务地址,多个时;
分隔,默认空白GLC_GOMAXPROCS
使用最大CPU数量,值不在实际范围内时按最大值看待,默认最大值,常用于docker
方式GLC_TEST_MODE
是否开启测试模式,开启时显示生成测试数据的按钮,供测试或快速体验用,默认false
GLC_WHITE_LIST
白名单,多个用逗号分隔,黑白名单冲突时白名单优先,默认空白。可设定IP,最后段支持通配符,如1.2.3.*
,内网IP默认都是白名单不必设定,实验性质的支持区域名称(因为IP地域查询可能有误差),如上海市,深圳市
GLC_BLACK_LIST
黑名单,多个用逗号分隔,黑白名单冲突时白名单优先,默认空白。可设定IP,最后段支持通配符,如1.2.3.*
,也支持单个通配符*
代表全部(也就是只允许内网或白名单指定使用),实验性质的支持区域名称(因为IP地域查询可能有误差)GLC_IP_ADD_CITY
对IP字段是否自动附加城市信息,默认false
GLC_NEAR_SEARCH_SIZE
定位相邻检索时的检索件数,默认200,有效范围50-1000GLC_ENABLE_CHATAI
是否开启GLC智能助手,默认true,会在菜单栏显示/glc/v1/log/add
日志添加,POST
,application/json
system
: 字符串,对应页面的系统名
date
: 字符串,对应页面的日期时间
,格式yyyy-MM-dd HH:mm:ss.SSS
text
: 字符串,对应页面的日志
servername
: 字符串,对应页面的主机名
serverip
: 字符串,对应页面的主机IP
loglevel
: 字符串,对应页面的日志级别
traceid
: 字符串,对应页面的追踪码
clientip
: 字符串,对应页面的客户端IP
user
: 字符串,对应页面的用户
# 发送测试数据的参考脚本
# 注意时间格式要一致,否则按时间范围检索可能无法得到预想结果
curl -X POST -d '{"system":"demo", "date":"2023-01-01 01:02:03.456","text":"demo log text"}' \
-H "Content-Type:application/json" http://127.0.0.1:8080/glc/v1/log/add
logback
的java
项目,支持日志收集,确保主次版本和GLC版本一致<!-- pom坐标 -->
<dependency>
<groupId>top.gotoeasy</groupId>
<artifactId>glc-logback-appender</artifactId>
<version>0.17.1</version>
</dependency>
<!-- logback配置例子1,发送至 glogcenter -->
<appender name="GLC" class="top.gotoeasy.framework.glc.logback.appender.GlcHttpJsonAppender">
<glcApiUrl>http://127.0.0.1:8080/</glcApiUrl> <!--可通过环境变量 GLC_API_URL 设定-->
<glcApiKey>X-GLC-AUTH:glogcenter</glcApiKey> <!--可通过环境变量 GLC_API_KEY 设定-->
<system>demo</system> <!--可通过环境变量 GLC_SYSTEM 设定 -->
<layout>
<pattern><![CDATA[%m %n]]></pattern>
</layout>
</appender>
<!-- logback配置例子2,发送至 rabbitmq -->
<appender name="GLC" class="top.gotoeasy.framework.glc.logback.appender.GlcAmqpAppender">
<amqpHost>127.0.0.1</amqpHost> <!-- 可通过环境变量 GLC_AMQP_HOST 设定 -->
<amqpPort>5672</amqpPort> <!-- 可通过环境变量 GLC_AMQP_PORT 设定 -->
<amqpUser>rabbitmqUsername</amqpUser> <!-- 可通过环境变量 GLC_AMQP_USER 设定 -->
<amqpPassword>rabbitmqPassword</amqpPassword> <!-- 可通过环境变量 GLC_AMQP_PASSWORD 设定 -->
<system>Demo</system> <!-- 可通过环境变量 GLC_SYSTEM 设定 -->
<layout>
<pattern><![CDATA[%m %n]]></pattern>
</layout>
</appender>
<!-- 一个简单的logback-spring.xml配置例子 -->
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<Target>System.out</Target>
<encoder>
<pattern>%d-%c-%t-%5p: %m%n</pattern>
</encoder>
</appender>
<appender name="GLC" class="top.gotoeasy.framework.glc.logback.appender.GlcHttpJsonAppender">
<glcApiUrl>http://127.0.0.1:8080/glc/v1/log/add</glcApiUrl>
<system>demo</system>
<layout>
<pattern><![CDATA[%m %n]]></pattern>
</layout>
</appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE" />
<appender-ref ref="GLC" />
</root>
</configuration>
golang
语言的项目,提供工具包,开箱即用# 方式1)通过环境变量自动配置,程序直接使用cmn.Debug(...)写日志即可
export GLC_ENABLE=true # 此配置默认false,要发送日志中心必须配置为true
export GLC_ENABLE_CONSOLE_LOG=true # 默认true,控制台不打印时配置为false
export GLC_API_URL='http://127.0.0.1:8080/' # 未配置时将取消发送
export GLC_API_KEY='X-GLC-AUTH:glogcenter' # 这是默认值,按需修改
export GLC_SYSTEM=default # 默认default,按需修改
export GLC_LOG_LEVEL=debug # 日志级别(debug/info/warn/error)
export GLC_TRACE_ID=12345 # 默认空,跨进程调用等一些特殊场景使用
export GLC_PRINT_SRC_LINE=true # 是否打印源码行号,go语言专用,默认false
// 方式2) 使用前通过程序cmn.SetGlcClient(...)手动配置初始化
import "github.com/gotoeasy/glang/cmn"
func main() {
// 这里用手动初始化替代环境变量自动配置方式,更多选项详见GlcOptions字段说明
cmn.SetGlcClient(cmn.NewGlcClient(&cmn.GlcOptions{
ApiUrl: "http://127.0.0.1:8080/",
Enable: "true",
}))
cmn.Debug("这是Debug级别日志")
cmn.Info("这是Info级别日志", "多个参数", "会被拼接")
gd := &cmn.GlcData{TraceId: "1234567890"} // 跟踪码相同的日志,传入该参数即可
cmn.Warn("这里的GlcData类型参数都不会打印", "gd只起传值作用", gd)
cmn.Error("gd参数顺序无关", gd, "用法如同log库,但对GlcData做了特殊的判断处理")
cmn.WaitGlcFinish() // 停止接收新日志,等待日志都发送完成,常在退出前调用
}
python
语言的项目,提供工具包,开箱即用# 支持以下环境变量配置
export GLC_ENABLE=true # 默认false,要发送日志中心必须配置为true
export GLC_ENABLE_CONSOLE_LOG=true # 默认true,控制台不打印时配置为false
export GLC_API_URL='http://127.0.0.1:8080/' # 未配置时将取消发送
export GLC_API_KEY='X-GLC-AUTH:glogcenter' # 这是默认值,按需修改
export GLC_SYSTEM=default # 默认default,按需修改
export GLC_LOG_LEVEL=debug # 日志级别(debug/info/warn/error),默认debug
export GLC_TRACE_ID=12345 # 默认空,跨进程调用等一些特殊场景使用
# 安装
pip install glogcenter
# 使用
from glogcenter import glc
glc.debug("这是Debug级别日志")
glc.info("这是Info级别日志", "多个参数", "会被拼接")
gd = glc.GlcData()
gd.user = 'abcd'
glc.warn("这里的GlcData类型参数都不会打印", "gd只起传值作用", gd)
glc.error("gd参数顺序无关", gd, "用法如同log库,但对GlcData做了特殊的判断处理")
0.17.0
及以上版本)# 1) 使用 fluentd 收集日志(为啥?因为较高版本docker已默认支持)
# 本仓库中 fluent.conf 是简单配置示意,其中包含转发日志到GLC
# 官方镜像的时区不合适,懒得改可直接用 gotoeasy/fluentd:v1.17-1-zh 替代
docker run -d -p 24224:24224 -p 24224:24224/udp \
-v ./fluent.conf:/fluentd/etc/fluent.conf fluentd:v1.17-1
# 2) 运行容器时指定日志驱动,指向 fluentd 服务端口
docker run -d -p --log-driver=fluentd --log-opt fluentd-address=192.168.169.170:24224 <你的镜像>
# 已经搞定啦,fluentd会把日志发到GLC (这个必开就不用说了)
# 接下来,去折腾 fluent.conf 就行,举一反三,但凡 fluentd 支持收集的东西都可以框进来
# 当然,这种日志在显示上有一定不足,但瑕不掩瑜,有时这么做还是很值得的
latest
0.17.5
0.17.4
0.17.3
0.17.2
GLC_DICT_DIR
的支持,配置不当会影响分词影响检索结果令人困惑,得不偿失0.17.1
GLC_DICT_DIR
,支持多个*.txt
字典文件。比如环境变量设定为/opt
,启动时使用-v /your-dict-dir:/opt
映射好字典目录就行0.17.0
docker
容器日志、文件等各种日志的收集/glc/v1/log/addBatch
,支持一次接收多条日志Go1.23.1
进行编译0.16.0
0.15.2
0.15.1
GLC智能助手
,可以随时解答日志中心的相关问题0.15.0
定位相邻检索
功能,非常适合快速定位进行上下文查询的场景。相应增加GLC_NEAR_SEARCH_SIZE
参数,配置定位相邻检索时的检索件数,默认200,有效范围50-10000.14.2
0.14.1
GLC_IP_ADD_CITY
环境变量,对IP字段是否自动附加城市信息,默认false
glc-logback-appender
同步升级0.14.0
glc-logback-appender
同步升级,新增MDC存取用户的接口0.13.0
Go1.21.4
进行编译0.12.4
GLC_SESSION_TIMEOUT
环境变量,单位为分钟,默认30分钟0.12.3
0.12.2
GLC_WHITE_LIST
环境变量,多个用逗号分隔,黑白名单冲突时白名单优先,默认空白。可设定IP,最后段支持通配符,如1.2.3.*
,内网IP默认都是白名单不必设定,实验性质的支持区域名称(因为IP地域查询可能有误差),如上海市,深圳市
GLC_BLACK_LIST
环境变量,多个用逗号分隔,黑白名单冲突时白名单优先,默认空白。可设定IP,最后段支持通配符,如1.2.3.*
,也支持单个通配符*
代表全部(也就是只允许内网或白名单指定使用),实验性质的支持区域名称(因为IP地域查询可能有误差)0.12.1
GLC_TOKEN_SALT
令牌盐环境变量,默认空串。如果日志内容比较敏感,应该修改用户密码开启登录功能,同时建议设定令牌盐,提高系统安全性GLC_TEST_MODE
是否开启测试模式的开关,开启后将显示生成测试数据用的按钮,供测试或快速体验用,默认false
0.12.0
GLC_SEARCH_MULIT_LINE
,设定为true
时,支持对日志列的全部行进行索引和检索,默认false
。注意:不会对历史数据进行重新索引,也就是说,设定为true
时,新加入的日志会做多行索引,但历史数据如果没有多行索引的仍旧没法进行多行检索glc-logback-appender
,增加过滤器类GlcFilter
用以生成客户端IP和跟踪码,可按需配置使用0.11.7
0.11.6
Go1.21.3
,一波安全更新robots.txt
,拒绝爬虫爬取内容0.11.5
Go1.21.1
0.11.4
0.11.3
0.11.2
0.11.1
Go1.21.0
alpine
升级至3.18
0.11.0
GLC_ENABLE_CORS
参数配置是否允许跨域,默认false
,方便系统间对接GLC_PAGE_SIZE
参数配置每次检索件数,默认100
(有效范围1~1000
)0.10.2
issue #16
的查询BUG0.10.1
日志级别
展示列及过滤条件,需同步使用glc-logback-appender:0.10.1
客户端IP
展示列,基于MDC实现,Java项目需参考使用MdcUtil类TraceId
展示列,基于MDC实现,Java项目需参考使用MdcUtil类0.10.0
glc-logback-appender:0.10.0
,即可自动产生主机名、主机IP信息0.9.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
golang
编译器升级至1.19.4
alpine
升级至3.17
0.8.3
GLC_GOMAXPROCS
,默认使用最大CPU数量,通常非docker
启动方式使用0.8.2
0.8.1
GLC_LOG_LEVEL
,可设定值为debug/info/warn/error
,默认info
0.8.0
0.7.0
0.6.0
-v
查看版本-d
以后台方式启动stop
停止程序restart
重启程序logback
用jar
包,支持通过设定环境变量GLC_ENABLE=false
关闭日志发送功能0.5.0
/glc/add
、/glc/search
,maven
公共仓库包同步修改并更新版本Docker
镜像设定默认时区Asia/Shanghai
0.4.0
maven
公共仓库包,java
项目日志可推至RabbitMQ
RabbitMQ
简单模式消费者,开启后能从RabbitMQ
获取日志/glc/v1/log/add
,接收JSON
格式日志以便后续扩展0.3.0
glc-logback-appender
的设定,可通过配置环境变量来覆盖0.2.0
logo
/glc/add
添加system
参数分类
0.1.0
golang
实现,就是快goleveldb
做数据保存,结合日志写多读少特点稍加设计,真是快docker
镜像支持容器化部署,方便之极java
项目日志收集包,日志都发来发来发来/glc/add
添加日志/glc/search
查询日志此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型