1
iambic 2016-04-05 17:52:03 +08:00
大部分的服务应该都能做到对日志按小时切割吧,比如 nginx 这种。
|
2
suduo1987 2016-04-05 18:14:20 +08:00 via iPhone
为什么不用正则表达式?
|
3
upupxjg 2016-04-05 19:07:12 +08:00
sed 不就行了么
|
4
vus520 2016-04-05 19:22:40 +08:00
for i in $( seq 1 10); do sed ${i}0000p xxx.log ; done
楼主说得太多了 |
5
fanfank OP @iambic 对,按日志切分也会非常大,日志文件也可能非常大,尤其是最前面做 Load balance 的机器。实时搜索速度是很重要的,尤其你可能需要使用 logid 去关联整个调用链,数十个日志文件,即便切分过,每个都全量去 grep 耗时会比较长
|
6
fanfank OP @vus520 grep 、 awk 、 timecat 的 benchmark 参见这个地址中的第 4 部分,我就是怕发太多了没人看所以没有在这里贴 benchmark : http://blog.reetsee.com/archives/502
|
7
fanfank OP @suduo1987 对日志文件中的每一行都用正则去判断(例如用 grep )是非常耗资源的, benchamark 参见: http://blog.reetsee.com/archives/502
|
8
hustlike 2016-04-05 20:17:24 +08:00
为什么不用 splunk ……
|
9
fanfank OP @hustlike 我在这个帖子的追加内容中补充了一下, splunk 我不太了解,是不是和 ELK 等工具差不多的日志解决方案?如果是的话那起码它需要额外的机器资源,或者需要在线上服务的机器中部署收集日志的 agent 或在业务代码 /框架中发送消息到日志收集器,体量上相对大一点
|
10
Mutoo 2016-04-05 21:03:26 +08:00
之前对一个 500G 的基于时间排序的文本文件处理(千万行)也是自己写了一个二分查找,平均定位次数只要 log(10000000)/log(2) = 23 次就能定位到数据。效率是非常好的。
|