为团队做了一个轻量化的日志检索系统
加入新团队一个月了,遇到了一个很大的痛点,就是没有一个日志搜索平台,导致大家排查问题比较麻烦。以前在互联网公司,都会有一个类似elk的日志搜索平台,就算没有之前我也会搭建一套elk来用。但是新团队比较特殊,我是作为一个技术顾问的角色,申请甲方的资源不是那么方便。
既然资源有限,那elk肯定是用不了的。我一直很想要有一个轻量级的日志搜索平台,毕竟elk部署起来的成本太高了,但是github上确实没找到类似的项目。索性我自己写一个算了。
项目构思
既然要自己写,那我肯定得规划处它的核心功能:
随时同步指定服务器的日志
合并集群服务的日志
全文搜索
调用链串联
内容高亮
这5条是我觉得一个日志搜索平台应该有的能力,其中,同步日志这块,我不想和elk一样实时同步,那样太耗费性能了,我觉得在需要查的时候同步到本地然后再结构化是最优解,这样不会影响服务器太多性能。
技术选型
前端肯定是用next.js,最近一年写next.js写的非常顺手,再加上最近研究了一款ui框架 nextui,样式非常好看。
后端用什么比较纠结,首先肯定排除了java,毕竟部署不方便。一度我非常想用go,但是想想还是放弃了,go虽然部署方便,但是写起来还是不够灵活。最终还是决定用python + fastapi,这一套组合可以非常快速的开发一个api server。最最最重要的是,我通过sqlite3在本地结构化日志,不仅查询非常方便,而且只要索引建好了,查询性能超级好(经过几天的运行,证明了这一点)。
未来规划
不知道其他朋友有没有遇到类似的痛点,反正我在好几份工作中都遇到了类似的痛点,可能我是做后端业务开发的,所以经常有排查业务问题的需要。
如果大家对这个轻量级日志搜索平台比较感兴趣并且是真的用的上,那我会把项目开源到github,有什么问题随时微信或者邮箱联系我(点击博客头像有联系方式)