daijinming
V2EX  ›  Docker

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

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

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

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