现在新项目的微服务分离日志系统应该怎么设计? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
FlyingBackscratc
V2EX    程序员

现在新项目的微服务分离日志系统应该怎么设计?

  •  
  •   FlyingBackscratc 2024-04-06 00:19:59 +08:00 3009 次点击
    这是一个创建于 553 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,个人项目,不需要做到商业程度严谨,但是基于多组件和分布式,我个人想法是让它能跑的时间长一点,维护尽量轻松。我感觉搞个合适的日志汇总、故障自动分析排查这些东西应该是能有效提高维护效率。

    现在后端一般搞微服务的日志是怎么做的?是有后端框架的全套里带吗,比如 springcloud 里带?还是有其他的常用组件?还是基于类似 kafka 这种自己搭服务?没啥经验,一般是咋搞的?

    15 条回复    2024-04-10 17:25:38 +08:00
    morgan1freeman
        1
    morgan1freeman  
       2024-04-06 00:37:48 +08:00
    携程用的 log4j 后面 套的是 es ,你可以考虑试试
    morgan1freeman
        2
    morgan1freeman  
       2024-04-06 00:39:25 +08:00
    clickhouse 忘记说了
    ikas
        3
    ikas  
       2024-04-06 01:41:57 +08:00   1
    轻量级 ,使用 loki 全家桶
    新的可以考虑 opentelemetry
    timethinker
        4
    timethinker  
       2024-04-06 03:33:12 +08:00 via iPhone   1
    日志分为写和读两个步骤,这两个步骤完全是分离的。日常开发还是写入到文件,存储到磁盘,说白了日志就是一个文本文件,在写的阶段什么顺手用什么。

    日志的处理就比较庞大了,包括收集日志文件、存储、索引和查询,每一个步骤都有很多开源的选择,这部分更偏向于运维,跟开发关系就不大了。
    wph95
        5
    wph95  
       2024-04-06 03:57:37 +08:00
    默认的 log 库大差不差,往本地磁盘上写。
    然后 filebeat/fluented/vector 等 log collector 收集起来发送走。
    如果是 k8s 还分 sidecar/deamonset 两种主流的 log collector pattern 。

    datasource 老牌的就 elasticsearch 一把梭。新玩法是 loki ,clickhouse 。


    对于你个人项目, 如果查询需求很低。
    就简单一点 vector 收集日志,扔到 对象存储。需要查的时候 mount 一个 goofys grep 就好。
    扔日志到对象存储时候设置一个基于时间的 prefix 就好。
    zed1018
        6
    zed1018  
       2024-04-06 08:17:07 +08:00
    我们现在的都是直接打控制台( spring-bot-starter-logging ),因为服务在 pod 里,k8s 里跑一套 loki + minio + grafana ,loki 从 pod 的控制台输出直接采集了
    chendy
        7
    chendy  
       2024-04-06 08:33:30 +08:00
    既然是个人项目,直接打文件,按天滚动,grep awk 一把梭
    最多上个 loki
    xuanbg
        8
    xuanbg  
       2024-04-06 11:38:14 +08:00
    ELK
    luozic
        9
    luozic  
       2024-04-06 14:42:49 +08:00
    可以走 elk 那一套,这一套有单机版本 并且可以后期切换。
    单机版本的比如 sonic 。 已经可以支持 tb 级别了,等到后面超过 10tb 了,这种明显可以迁移了
    luozic
        10
    luozic  
       2024-04-06 14:44:03 +08:00
    FlashEcho
        11
    FlashEcho  
       2024-04-06 17:53:45 +08:00
    如果你的微服务能在 k8s 上,不需要任何日志库,直接往 stdout 和 stderr 扔就行了,然后用第三方的日志解决方案,比如 elk stack 和 grafana loki ,除非你的数据量真的高到惊人了,不然不需要 kafka ,elk 或者 loki 已经够用了
    7beloved
        12
    7beloved  
       2024-04-06 18:20:50 +08:00
    最近用了 loki ,挺不错的
    kuanat
        13
    kuanat  
       2024-04-06 23:25:35 +08:00
    我提一个可能会被遗漏的细节,微服务环境里做日志,一定要有全链路的 trace 信息,不然出了问题也很难还原出错的场景。

    前面有人讲了读写分离,写基本都是本地,然后通过后台 daemon 定期汇总到日志服务器上。

    原始日志汇总存储之后,建议再定期根据 trace 重新组织一下(比如数据库视图,或者直接用文档类型存储)以方便查询。一般来说,日志信息往往会比生产数据的容量还大,如果用到了再去查可能会很慢。
    keepRun
        14
    keepRun  
       2024-04-07 00:08:07 +08:00 via Android
    小项目推荐 loki ,非常省资源
    c9cc
        15
    c9cc  
       2024-04-10 17:25:38 +08:00
    loki 够用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5884 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 06:08 PVG 14:08 LAX 23:08 JFK 02:08
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86