2009-12-29 76 views
-2

我有一个单独的应用程序每10秒打印一次日志。我需要从日志文件创建RRD文件。我需要一些Perl代码来读取日志文件,并仅在没有图形的情况下创建RRD。如何在Perl中创建RRD文件?

我也经历了CPAN中可用的Perl模块,即RRD::Simple和RRD :: Simple :: Examples,但我仍然需要帮助。

+2

到目前为止,您有什么?你有什么尝试?这不是一个人们会给你代码的网站,它是一个人们可以帮助你解决编程问题的网站。 – 2009-12-29 09:41:16

+0

@Chris:我需要帮助才能开始在perl中编写代码来创建rrd。如果您可以向我推荐任何示例代码。 – Space 2009-12-29 09:46:35

+0

那么,模块的Synopsis部分将告诉你该怎么做。当你尝试这些例子时发生了什么? – 2009-12-30 10:30:56

回答

3

我会从RRD::Simple开始。文档中有一些示例代码。由于您不需要创建图形,只需跳过该示例的该部分即可。

某些示例读取单个数据样本,调用update函数一次,然后退出。这些脚本旨在定期运行以实时收集数据。可能更适合您的需求的示例是ApacheAccessLogActivity.pl,它读取Apache日志文件,使用正则表达式解析每一行,进行一些分析以确定刚刚读取的内容,然后调用update,全部进行循环。请注意,该示例使用独立函数而不是面向对象的版本。

如果您已经阅读过该模块的文档,并且需要更多关于如何使用它的信息,或者您已经尝试过并发现它存在阻止您使用它的缺点,请更具体关于你需要做什么。

RRDTool::OO也看起来很有希望。

0

我推荐RRDTool :: OO。 experpt from perldoc:

$ rrd-> create(...) 创建一个新的循环数据库(RRD)。 RRD由一个或多个数据源和一个或多个档案组成:

  $rrd->create(
       step  => 60, 
       data_source => { name  => "mydatasource", 
           type  => "GAUGE" }, 
       archive  => { rows  => 5 });