微服务时代我们该怎么处理日志 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
daijinming
V2EX    Docker

微服务时代我们该怎么处理日志

  •  
  •   daijinming 2019-06-12 17:05:27 +08:00 6308 次点击
    这是一个创建于 2316 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在采用微服务之前,也就是一个应用的简单美好时代,我一般都会采用日志组件 log4net、或是 log4j,在项目目录下创建一个 Log 目录,下面分为 error \ info 两个子文件夹,然后按照日志记录每天的日志,错误日志、访问日志或是调试日志什么的。当我开始向微服务,docker 中迁移的时候发现,傻眼了,该怎么办呀。

    21 条回复    2019-06-16 21:00:41 +08:00
    nakes
        1
    nakes  
       2019-06-12 17:17:37 +08:00
    elk ?
    daijinming
        2
    daijinming  
    OP
       2019-06-12 17:28:49 +08:00
    @nakes 有没有人在正式环境中,API 直接向 elk 中写入日志,会不会卡?我倒是听说过用 kafka 记录日志的,这两个方案都没用过
    luckyrayyy
        3
    luckyrayyy  
       2019-06-12 17:32:20 +08:00
    docker 内部可以用 fluentd 吧,原来的日志文件也不用动,直接读日志文件就行了。但是我没大规模用过,不知道效率怎么样。
    Rwing
        4
    Rwing  
       2019-06-12 17:33:39 +08:00
    elk ?
    misaka19000
        5
    misaka19000  
       2019-06-12 17:35:46 +08:00
    @daijinming #2 elk 用的就是 Kafka 做 broker,我们每天数十亿的日志没卡过
    10Buns
        6
    10Buns  
       2019-06-12 17:38:09 +08:00
    现有方案直接丢 Kafka 再处理,也就是不落盘?
    passerbytiny
        7
    passerbytiny  
       2019-06-12 17:40:04 +08:00
    用 docker 数据卷,跟原来就是一样的操作,没啥区别。但是你要是用了 scale 来启动容器,当我没说。
    monsterxx03
        8
    monsterxx03  
       2019-06-12 17:45:37 +08:00
    迁移 k8s 的过程中正好在做, 我的做法是应用日志全部打到 stdout, fluent-bit 做 daemonset, 读取本地 pod log, 发送到中心化的 fluentd, 定时归档到 s3.

    https://blog.monsterxx03.com/2019/05/26/centralized-logging-on-k8s/
    daijinming
        9
    daijinming  
    OP
       2019-06-12 17:46:48 +08:00
    @passerbytiny docker 数据卷 可以考虑,不是什么大网站,日志量不大
    daijinming
        10
    daijinming  
    OP
       2019-06-12 17:50:47 +08:00
    @monsterxx03 你这个方案很前卫的,很适合微服务,我确实很喜欢。我这边刚起步,还是初级阶段,没有 S3,能简化吗
    daijinming
        11
    daijinming  
    OP
       2019-06-12 17:53:04 +08:00
    @10Buns kafka 在小团队适用吗,有没有学习的难度。日志以日期形式记录,又好记录,又好查看,简单易学,你说的这个 kafka 有没有学习曲线
    daijinming
        12
    daijinming  
    OP
       2019-06-12 17:54:08 +08:00
    @monsterxx03 没有 K8s,没有 S3,只有 Linux 机器,安装了 docker
    10Buns
        13
    10Buns  
       2019-06-12 17:55:10 +08:00
    @daijinming 还好吧,其实大多数时候都是用,然后慢慢深入摸索
    daijinming
        14
    daijinming  
    OP
       2019-06-12 17:55:40 +08:00
    @misaka19000 小团队,只有一台 Linux,这个方案合适吗,有没有简化方案
    passerbytiny
        15
    passerbytiny  
       2019-06-12 17:56:10 +08:00
    如果是全 docker 的话,也可以考虑只保留 stdout,然后由 docker logs 或 docker-composer logs 接管日志。
    monsterxx03
        16
    monsterxx03  
       2019-06-12 17:59:09 +08:00
    日志量不大的话,直接用 syslog 协议打到 远端的 fluentd 也可以, fluentd 定时把 log 归档到本地的某个文件夹. 这样你只需要一台日志服务器就行了,只需要配置 fluentd 这一个程序.

    对日志没有很强的分析和可视化需求的话, ELK 那套我觉得有点重了.
    daijinming
        17
    daijinming  
    OP
       2019-06-12 18:02:16 +08:00
    @monsterxx03 只要能分类分日期记录日记就好,不要分散的到各个微服务里,能集中查看就好
    daijinming
        18
    daijinming  
    OP
       2019-06-12 18:03:11 +08:00
    @passerbytiny 这个可能就挺好
    basefas
        19
    basefas  
       2019-06-12 18:48:05 +08:00
    prometheus ?
    aitaii
        20
    aitaii  
       2019-06-12 19:57:27 +08:00 via iPhone
    我们用的阿里服务器,写到 logstore 里了
    Linxing
        21
    Linxing  
       2019-06-16 21:00:41 +08:00 via iPhone
    prometheus ?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3089 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:28 PVG 08:28 LAX 17:28 JFK 20:28
    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