Coder Social home page Coder Social logo

ajunlonglive / glogcenter Goto Github PK

View Code? Open in Web Editor NEW

This project forked from gotoeasy/glogcenter

0.0 1.0 0.0 3.31 MB

一个golang实现的日志中心glogcenter,简称GLC,资源占用低,性能高,目标是作为传统ELK的替代方案

License: GNU Lesser General Public License v3.0

JavaScript 2.65% Go 78.12% HTML 1.39% Vue 16.74% Dockerfile 1.09%

glogcenter's Introduction

缘起

日志中心,一直是用传统的三件套ELK,感激之余,终究还是不理想(定制安装并非简单、页面打开初始化太慢,界面操作不习惯,最主要的是资源占用太厉害,甚至隔段时间就会崩溃),替代品总是找不到。终于,用go试写一个logcenter,结果各种优异表现确实是惊艳到了自己,故起名glogcenter,简称GLC,开仓建库

目标: 逐步替换线上的ELK

Docker Pulls GitHub release

特点

  • 使用golang实现,具备go的各种特性优势,关键是省资源、性能高
  • 借助goleveldb做数据保存,结合日志写多读少特点稍加设计,真是快
  • 关键词全文检索,支持中文分词(使用jiebago进行分词),毫秒级响应,自然流畅
  • 日志吞食量每秒近万条,闲时建索引速度每秒数千条,基本能满足大多项目需要
  • 支持个性化环境变量开关控制,支持日志仓自动化维护,灵活省心
  • 提供docker镜像,支持容器化部署,方便之极
  • 提供java项目日志收集包,java项目闭环支持
  • 支持从RabbitMQ收取日志信息,满足更多闭环需求
  • 内置提供简洁的VUE实现的日志查询管理界面

docker运行

// 简单示例
docker run -d -p 18080:18080 gotoeasy/glc

// 外挂数据目录
docker run -d -p 18080:18080 -v /glc:/glogcenter gotoeasy/glc

docker启动环境变量

  • GLC_STORE_NAME_AUTO_ADD_DATE日志仓是否自动按日存储,默认true
  • GLC_SAVE_DAYS日志仓按日存储自动维护时的保留天数(0~180),0表示不自动删除,默认180
  • GLC_ENABLE_LOGIN是否开启用户密码登录功能,默认false
  • GLC_USERNAME查询界面登录用的用户名,默认glc
  • GLC_PASSWORD查询界面登录用的密码,默认glogcenter
  • GLC_ENABLE_SECURITY_KEY日志添加的接口是否开启API秘钥校验,默认false
  • GLC_HEADER_SECURITY_KEYAPI秘钥的header键名,默认X-GLC-AUTH
  • GLC_SECURITY_KEYAPI秘钥,默认glogcenter
  • GLC_ENABLE_AMQP_CONSUME是否开启rabbitMq消费者接收日志,默认false
  • GLC_AMQP_ADDR消息队列rabbitMq连接地址,例:amqp://user:password@ip:port/,默认空白
  • GLC_AMQP_JSON_FORMAT消息队列rabbitMq消息文本是否为json格式,默认true

命令行启动参数

  • 在Linux系统下支持命令行参数-d以后台方式启动

接口

  • /glc/v1/log/add日志添加,POSTapplication/json
    字段system: 字符串,对应页面的分类
    字段date: 字符串,对应页面的日期时间
    字段text: 字符串,对应页面的日志内容

使用logbackjava项目,支持日志收集

<!-- pom坐标 -->
<dependency>
    <groupId>top.gotoeasy</groupId>
    <artifactId>glc-logback-appender</artifactId>
    <version>0.5.1</version>
</dependency>
<!-- logback配置例子1,发送至 glogcenter -->
<!-- 0.5.1及以上版本,可通过设定环境变量 GLC_ENABLE=false 关闭发送功能 -->
<appender name="GLC" class="top.gotoeasy.framework.glc.logback.appender.GlcHttpJsonAppender">
    <glcApiUrl>http://127.0.0.1:18080/glc/v1/log/add</glcApiUrl> <!-- 可通过环境变量 GLC_API_URL 设定 -->
    <glcApiKey>X-GLC-AUTH:glogcenter</glcApiKey>                 <!-- 可通过环境变量 GLC_API_KEY 设定 -->
    <system>Demo</system>                                        <!-- 可通过环境变量 GLC_SYSTEM 设定 -->
    <layout>
        <pattern><![CDATA[%p %m %n]]></pattern>
    </layout>
</appender>

<!-- logback配置例子2,发送至 rabbitmq -->
<!-- 0.5.1及以上版本,可通过设定环境变量 GLC_ENABLE=false 关闭发送功能 -->
<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[%p %m %n]]></pattern>
    </layout>
</appender>

更新履历

开发版latest

  • 界面优化
  • 多语言
  • 分词优化
  • 升级使用Go1.19
  • 支持命令行参数使用-d以后台方式启动

版本0.5.0

  • 增加用户密码登录功能,可设定是否开启用户密码登录
  • 日志按日分仓存储时,默认自动维护保存最多180天,自动维护时不能手动删除日志仓
  • 改善日志仓管理页面的展示
  • 删除旧版接口/glc/add/glc/searchmaven公共仓库包同步修改并更新版本
  • 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

  • DIY了一个logo
  • 接口/glc/add添加system参数
  • 提供简洁的日志查询界面
  • 当前版设计为接收多个项目的日志,界面栏目为分类

初版0.1.0

  • 使用golang实现,就是快
  • 借助goleveldb做数据保存,结合日志写多读少特点稍加设计,真是快
  • 日志量虽大,却是真心节省内存资源
  • 常用的无条件查询最新日志,快到麻木无感
  • 关键词全文检索,支持中文分词,反向索引以空间换时间,快到麻木无感
  • 提供docker镜像支持容器化部署,方便之极
  • 提供java项目日志收集包,日志都发来发来发来
  • 服务接口/glc/add添加日志
  • 服务接口/glc/search查询日志

glogcenter's People

Contributors

gotoeasy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.