为团队做了一个轻量化的日志检索系统
加入新团队一个月了,遇到了一个很大的痛点,就是没有一个日志搜索平台,导致大家排查问题比较麻烦。以前在互联网公司,都会有一个类似elk的日志搜索平台,就算没有之前我也会搭建一套elk来用。但是新团队比较特殊,我是作为一个技术顾问的角色,申请甲方的资源不是那么方便。
既然资源有限,那elk肯定是用不了的。我一直很想要有一个轻量级的日志搜索平台,毕竟elk部署起来的成本太高了,但是github上确实没找到类似的项目。索性我自己写一个算了。
项目构思
既然要自己写,那我肯定得规划处它的核心功能:
随时同步指定服务器的日志
合并集群服务的日志
全文搜索
调用链串联
内容高亮
这5条是我觉得一个日志搜索平台应该有的能力,其中,同步日志这块,我不想和elk一样实时同步,那样太耗费性能了,我觉得在需要查的时候同步到本地然后再结构化是最优解,这样不会影响服务器太多性能。
技术选型
前端肯定是用next.js,最近一年写next.js写的非常顺手,再加上最近研究了一款ui框架 nextui,样式非常好看。
后端用什么比较纠结,首先肯定排除了java,毕竟部署不方便。一度我非常想用go,但是想想还是放弃了,go虽然部署方便,但是写起来还是不够灵活。最终还是决定用python + fastapi,这一套组合可以非常快速的开发一个api server。最最最重要的是,我通过sqlite3在本地结构化日志,不仅查询非常方便,而且只要索引建好了,查询性能超级好(经过几天的运行,证明了这一点)。
未来规划
不知道其他朋友有没有遇到类似的痛点,反正我在好几份工作中都遇到了类似的痛点,可能我是做后端业务开发的,所以经常有排查业务问题的需要。
如果大家对这个轻量级日志搜索平台比较感兴趣并且是真的用的上,那我会把项目开源到github,有什么问题随时微信或者邮箱联系我(点击博客头像有联系方式)
展示图
![image](https://prod-files-secure.s3.us-west-2.amazonaws.com/371abca5-94fd-4d13-a43e-bbcb27be7c63/5599093d-af29-45a6-92e6-8f253c9bbfe1/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20240727%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20240727T105957Z&X-Amz-Expires=3600&X-Amz-Signature=d06782db6ab5d2f1e4a34d843b76095af93a989654392dae9206ad0cfc918767&X-Amz-SignedHeaders=host&x-id=GetObject)
![image](https://prod-files-secure.s3.us-west-2.amazonaws.com/371abca5-94fd-4d13-a43e-bbcb27be7c63/9641f638-203c-4587-8e8c-03f955941aff/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20240727%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20240727T105957Z&X-Amz-Expires=3600&X-Amz-Signature=216be9f483addcbdb21b6a20c3bc8b2b2ede9d7a5dd4d7fb7d0b8d2472eb21d4&X-Amz-SignedHeaders=host&x-id=GetObject)