我们开源了一个日志查询的小工具 - Dagger <文末含福利>

1,770 阅读3分钟

Dagger是一个基于Loki的日志查询和管理系统,它是从我们的云平台内派生出来的一个项目。dagger运行在Loki前端,当前具备日志查询、搜索、保存和下载等特性,适用于云原生场景下的容器日志管理场景,更多的功能我们会在后面持续开放。

之前小白分享过许多关于Loki的文章,有的同学可能会问了Grafana的Explore也可以接Loki查看日志啊,为什么还要自己在搞个Dagger

Grafana的确非常不错,对于查询方面它非常的高效且炫酷,刚开始小白也是直接将Grafana丢给研发的同学自己使用,不过也遇到很多问题,以下就是我们的日常


  • 场景一

研发: "在?这么多Label,哪个才是我的应用啊?" 运维: "这个...这个...还有这个" 研发: "这么多,还要手写,真费劲!" 运维: "..."


  • 场景二

研发: "在?我想查xxx这个字段,怎么过滤啊?" 运维: 默默敲下LogQL语句发送给他,并说"LogQL语句,了解下?" 研发: "牛🍺,还要学啊,太麻烦了!" 运维: "..."


  • 场景三

研发: "在?,帮我下载下xx容器里面x时xx分的日志" 运维: 经过一顿kubectl cp操作后,把日志发给了他 ...过了2分钟... 研发: "在?再帮我下载下yy容器里面y时yy分的日志,谢谢!" 运维: 再经过一顿kubectl cp操作后,把日志发给了他,并在心中一万个草泥马跑过


  • 场景四

研发:"在?我应用怎么查不到jira里报告的xx那天日志了?" 运维:经过一顿调查后,"日志超过保留日期,被清除了" 研发:"我正准备看日志debug呢!算了,下次吧",并顺手把jira转给运维 运维:内心os"宝宝心里苦,但宝宝不说"


相信聪明的你一定发现了Grafana的重心在于查日志,对于日志的管理始终差了点意思,这也是我们发起dagger初衷,让查日志的操作和保存更加简单方便。话不多说,先上图

当前Dagger支持的功能还非常的少,仅仅满足了最基本的一些需求:

  • 支持日志按照标签和正则匹配的过滤规则,并且按照时间选择查询的日志(日志最大留存时间依赖loki配置),在过滤的行数里面支持日志上下文的追踪;
  • 简单的日志等级过滤,以及最大行数的选择,提供正序和倒序两种方式输出;
  • 提供日志的实时推送和日志下载功能;
  • 支持查询历史,并在快速查询中列出以保存的标签;
  • 支持日志快照,将当前查询的结果保存在dagger当中,提供下载和查看

持续改进

虽然Dagger还非常的新,不过它已经在我们内部稳定运行了8个月,当前我们仍然还有很多东西需要完善,比如:

  • 管理多个Loki实例

    • 在Dagger内支持多个Loki实例的配置管理,并支持多实例的日志查询
  • 日志告警

    • 支持LogQL的方式在前端添加自定义日志度量
    • 支持Loki-Ruler组件,在界面支持ruler的编辑和推送
    • 日志告警事件的订阅、收敛和通知(多渠道)
  • 部署简单

    • 集成多种日志客户端和loki的部署,完成一键部署

总结

请大家关注Dagger在GitHub上的仓库,内有更详尽的文档

github.com/CloudmindsR…

最后附上一个抽奖红包,关注云原生小白公众号回复dagger获取抽奖资格,10月30日早上9点开,感谢大家转发支持🙏祝各位程序员大佬1024节日快乐