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

2024-08-28 15:37:57 +08:00
 jdz

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

2499 次点击
所在节点    程序员
16 条回复
summerLast
2024-08-28 15:40:13 +08:00
elk
xunandotme
2024-08-28 15:40:34 +08:00
syslogd
tgcdz
2024-08-28 15:57:39 +08:00
Jemini
2024-08-28 15:58:23 +08:00
elk ,loki
0x5c0f
2024-08-28 16:06:49 +08:00
如果不需要进行行合并,在 linux 下,你可以直接用 cat 合并为一个文件,然后 sort 命令排个序就行了,不过还是建议导入到 loki 这种日志系统里面在进行分析
akin520
2024-08-28 16:57:41 +08:00
rsyslog
lx0758
2024-08-28 17:00:37 +08:00
公司用 elk, 自己用 loki
amazingZL
2024-08-28 17:01:54 +08:00
分布式日志手机,还是上报到日志系统来弄方便,查日志也方便
lambdaq
2024-08-28 17:03:52 +08:00
公司用 e+k 。 用 https://vector.dev/ 代替 l
vacuitym
2024-08-28 17:10:01 +08:00
promtail + loki + grafana
小项目十分友好
onesixthree
2024-08-28 17:15:58 +08:00
1 、汇总到一起如果是容器可以挂载共享盘,多个文件汇总到一个目录下,然后用工具合并这些文件,例如
@tgcdz
2 、也可以使用 filebeat 等工具采集发送到队列,在汇总的地方进行消费重写到一个文件
3 、容器内采用 EFS ,多个容器写入一个文件(共享写没实验过,不知道会不会冲突)
Kaiv2
2024-08-28 17:17:07 +08:00
如果感觉 ELK 太重,quickwit + vector 也不错
目前我用于收集一下系统日志,quickwit 可以简单的查询
jdz
2024-08-28 19:15:20 +08:00
@onesixthree 能根据每条日志的时间进行排序么
ShineyWang
2024-08-28 21:54:32 +08:00
https://datalust.co/seq
不需要多复杂的日志中心可以试试 seq
支持基本的查询,过滤,
xuanbg
2024-08-28 22:09:06 +08:00
elk ,简单好用
wxf666
2024-08-29 11:33:07 +08:00
一个 `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
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1068478

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX