V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jdz
V2EX  ›  程序员

我想把多台机器上同一个服务的日志进行合并, 有什么好用的工具么

  •  
  •   jdz · 68 天前 · 1930 次点击
    这是一个创建于 68 天前的主题,其中的信息可能已经有所发展或是发生改变。

    日志的格式如下 [08-28 07:36:30 839420] [debug] [16169] [worker.cc:1100] ivyjxj,Foo, timer 我想把合并的日志按前面的时间进行排序

    16 条回复    2024-08-29 11:33:07 +08:00
    summerLast
        1
    summerLast  
       68 天前
    elk
    xunandotme
        2
    xunandotme  
       68 天前
    syslogd
    tgcdz
        3
    tgcdz  
       68 天前
    Jemini
        4
    Jemini  
       68 天前
    elk ,loki
    0x5c0f
        5
    0x5c0f  
       68 天前
    如果不需要进行行合并,在 linux 下,你可以直接用 cat 合并为一个文件,然后 sort 命令排个序就行了,不过还是建议导入到 loki 这种日志系统里面在进行分析
    akin520
        6
    akin520  
       68 天前
    rsyslog
    lx0758
        7
    lx0758  
       68 天前
    公司用 elk, 自己用 loki
    amazingZL
        8
    amazingZL  
       68 天前
    分布式日志手机,还是上报到日志系统来弄方便,查日志也方便
    lambdaq
        9
    lambdaq  
       68 天前
    公司用 e+k 。 用 https://vector.dev/ 代替 l
    vacuitym
        10
    vacuitym  
       68 天前
    promtail + loki + grafana
    小项目十分友好
    onesixthree
        11
    onesixthree  
       68 天前
    1 、汇总到一起如果是容器可以挂载共享盘,多个文件汇总到一个目录下,然后用工具合并这些文件,例如
    @tgcdz
    2 、也可以使用 filebeat 等工具采集发送到队列,在汇总的地方进行消费重写到一个文件
    3 、容器内采用 EFS ,多个容器写入一个文件(共享写没实验过,不知道会不会冲突)
    Kaiv2
        12
    Kaiv2  
       68 天前
    如果感觉 ELK 太重,quickwit + vector 也不错
    目前我用于收集一下系统日志,quickwit 可以简单的查询
    jdz
        13
    jdz  
    OP
       68 天前
    @onesixthree 能根据每条日志的时间进行排序么
    ShineyWang
        14
    ShineyWang  
       68 天前 via Android
    https://datalust.co/seq
    不需要多复杂的日志中心可以试试 seq
    支持基本的查询,过滤,
    xuanbg
        15
    xuanbg  
       68 天前
    elk ,简单好用
    wxf666
        16
    wxf666  
       68 天前
    一个 `sort` 命令不就行了嘛。。你的日期部分也满足默认字典序

    里面有个选项:`-m, --merge 归并已排序的文件;不进行排序`

    你可以尝试如下命令(用了 `scp`、`curl` 两种方式,流式远程获取日志文件。远程服务器可以 `python3 -m http.server` 临时开个服务端):

    ```shell
    sort -m 本机日志.log <(curl -s http://远程主机 1IP:服务端口/路径/日志.log) <(scp -O 远程主机 2 用户 @远程主机 2IP:/路径/日志.log /dev/stdout) >合并后日志.log
    ```


    如,`sort -m <(seq 1 4) <(seq 3 6) <(seq 5 8)` 执行效果为:

    ```
    1
    2
    3
    3
    4
    4
    5
    5
    6
    6
    7
    8
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4420 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 05:33 · PVG 13:33 · LAX 21:33 · JFK 00:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.