加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 使用Powershell在非常大的日志文件的最后x行中搜索特定

发布时间:2020-12-15 23:20:24 所属栏目:大数据 来源:网络整理
导读:我要求到目前为止我还没有在论坛上找到解决方案或帮助… 问题:我监控实时系统,这些系统会生成许多非常大的日志文件,每天都会翻转,1GB并不罕见,我所做的就是查看已知错误条件的(尾端)日志或者我想监视的其他字符串,我可能需要采取行动. 由于这类工作耗时且繁
我要求到目前为止我还没有在论坛上找到解决方案或帮助…

问题:我监控实时系统,这些系统会生成许多非常大的日志文件,每天都会翻转,1GB并不罕见,我所做的就是查看已知错误条件的(尾端)日志或者我想监视的其他字符串,我可能需要采取行动.

由于这类工作耗时且繁琐,并且容易因人为错误而错过日志中的问题,因此我一直在自动执行此日志文件监控.我利用名为Servers Alive的产品执行计划检查,并编写脚本来监视日志文件,以查找我感兴趣的日志条目的出现,这可能表明服务有问题,我可以调用其他脚本重新启动服务解决遇到的问题.

我以前使用Perl完成了这些日志监控任务的脚本,这些脚本非常快,但不一定是最干净的方法,我是管理员而不是程序员所以我没有开发人员的方法或经验来依靠.

下面的Perl代码片段显示我’打开’一个日志文件$logfile,然后从文件末尾向后搜索给定数量的数据,然后我从这一点搜索数据到结束时我感兴趣的日志条目的文件,在这个例子中,日志条目是“没有从EISEC客户端收到的数据包”

在此示例中,我们正在监视的日志条目表明EISEC服务存在问题,并且简单地重新启动服务通常可以解决问题,所有这些我都自动将Servers Alive用作计划检查和警报机制.

Perl脚本函数

sub checkEisecSrvloggedon {

print "$logfilen";

if (open (EISECSRV_LOGGEDON,$logfile)) {

    seek (EISECSRV_LOGGEDON,-40000,2);

    $line = <EISECSRV_LOGGEDON>;

    $eisecsrvloggedon_ok = 0;

    while ($line = <EISECSRV_LOGGEDON>) {   

            if ($line =~/No packet received from EISEC Client/) {

                #increment counter
                ++$eisecsrvloggedon_ok; 

                }

            }
        }
    }

我想使用PowerShell为此实现一个解决方案,如果可能的话,我们已经转移到Windows Server 2008 R2和Windows 7客户端,但我找不到有关如何有效地执行此操作的详细信息,快速且没有任何大的内存开销.

我尝试过基于Get-Content的解决方案但是需要读取整个日志文件使得这些类型的解决方案无法使用,因为查询日志文件需要太长时间.我需要能够定期检查一些这样的大型日志文件,在某些情况下每隔几分钟就会检查一次.我已经看到尾部类型的解决方案非常适合拖尾日志文件的末尾,这些脚本使用的是System.IO.File方法.这确实得到了我希望在我的脚本中实现的性能/速度,但我对PowerShell不熟悉,知道如何使用这种方法快速到达大型日志文件的末尾,然后能够向后读取给定数量的数据,然后在此日志部分中搜索相关字符串.

有没有人有任何想法?

解决方法

如果使用PowerShell 3.0或更高版本,则可以结合使用get-content和select-string命令行开关来获得相同的功能.从版本3.0开始,get-content支持一个-tail选项,它只能以有效的方式返回文件的最后n行.使用此方法,您可以使用以下内容重新实现上面的Perl脚本(在最后1000行中搜索):

# Returns the number of occurrences
(get-content logfile.txt -Tail 1000 | select-string -pattern "No packet received from EISEC Client").Length

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读