V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
daijinming
V2EX  ›  Docker

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

  •  
  •   daijinming · Jun 12, 2019 · 6539 views
    This topic created in 2519 days ago, the information mentioned may be changed or developed.

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

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

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

    对日志没有很强的分析和可视化需求的话, ELK 那套我觉得有点重了.
    daijinming
        17
    daijinming  
    OP
       Jun 12, 2019
    @monsterxx03 只要能分类分日期记录日记就好,不要分散的到各个微服务里,能集中查看就好
    daijinming
        18
    daijinming  
    OP
       Jun 12, 2019
    @passerbytiny 这个可能就挺好
    basefas
        19
    basefas  
       Jun 12, 2019
    prometheus ?
    aitaii
        20
    aitaii  
       Jun 12, 2019 via iPhone
    我们用的阿里服务器,写到 logstore 里了
    Linxing
        21
    Linxing  
       Jun 16, 2019 via iPhone
    prometheus ?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2797 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 09:39 · PVG 17:39 · LAX 02:39 · JFK 05:39
    ♥ Do have faith in what you're doing.