LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1148|回复: 6

[日志过滤]日志分析提取讨论

[复制链接]
发表于 2010-4-18 23:08:24 | 显示全部楼层 |阅读模式
  1. 04/18/10        13:00:00        UNIX         Error                file system usage > 90%       
  2. 04/18/10        13:02:00        UNIX          Warning         cpu usage > 80%
  3. 04/18/10        13:05:00        Oracle        Error                listener inactive
复制代码

提取昨天18:00:00到今天18:00:00的日志到新的文件中,每天定时执行

如何比较高效的编写,可能数据量比较大,请大家讨论一下用什么?
发表于 2010-4-19 00:44:44 | 显示全部楼层
要精准还是高效,或者两者兼具。
日志怎么来的,是否支持管道及logrotate一类的工具
提取后是否需要清空原日志文件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-19 09:26:17 | 显示全部楼层
Post by Celinda;2083849
要精准还是高效,或者两者兼具。
日志怎么来的,是否支持管道及logrotate一类的工具
提取后是否需要清空原日志文件
不清空,如果支持的话怎么弄?
不支持呢?
日志应也是有一个shell直接记录的,选取的话应该尽量准确
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-25 23:37:53 | 显示全部楼层
无人矣~~。不屑?不能?可悲!
回复 支持 反对

使用道具 举报

发表于 2010-4-25 23:52:10 | 显示全部楼层
不清空的话,按日志前面的时间戳截取出来,可以用awk, 或者grep + head+tail
这样比较慢,但准确

可以清空的话,在crontab里定时每天18:00切换日志,速度快但是需要清空日志,而且会有点误差
回复 支持 反对

使用道具 举报

发表于 2010-4-26 02:33:10 | 显示全部楼层
如果一天下来数据量大,可能实时处理是最快的,起码不用一某个时间占用大量的CPU。
基本思路如下:

  1. #!/usr/bin/perl
  2. open FH, "tail -n 1 -f log_file|" or die "Err: $!";
  3. while(<FH>){
  4.         print  "$_";
  5. }
  6. close FH;
复制代码


实际应用可能还要加上切换输出文件之类的东西,到时加入到启动运行就OK了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-5-20 16:16:01 | 显示全部楼层
Post by chasye;2085738
如果一天下来数据量大,可能实时处理是最快的,起码不用一某个时间占用大量的CPU。
基本思路如下:

  1. #!/usr/bin/perl
  2. open FH, "tail -n 1 -f log_file|" or die "Err: $!";
  3. while(<FH>){
  4.         print  "$_";
  5. }
  6. close FH;
复制代码


实际应用可能还要加上切换输出文件之类的东西,到时加入到启动运行就OK了。


谢谢,很有启发!!~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表