0

我有一个每 5 分钟运行一次的 Perl 脚本,它执行一次 API 调用。此 API 调用由 REST 调用组成,用于对数据库进行身份验证。如果我验证成功,它会返回“ok”或“1”。

我的任务是为我们的前端开发人员提供此 API 调用的正常运行时间可用性。例如,反映范围的“99.98888”性质的东西;例如,90 天的范围或可能的 365 天。

这是执行 API 调用的脚本。

#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;
use Data::Dumper;
use XML::Simple;
use JSON;


## Perl's way of slurping the xml file
my $message = do {
  open my $fh, '<', '/usr/lib/xymon/server/ext/States/Puerto-Rico/credentials.xml' or die "Could not open file: $!";
  local $/;
  <$fh>;
};


    my $start = `date +%s.%N`;
    my $webpage = "https://xxxxxxxxx/xxxxxx.asp";

    my $ua = LWP::UserAgent->new;
    my $response = $ua->post($webpage, Content_Type => 'text/xml',
                                            Content => $message);
    my $end = `date +%s.%N`;
    my $eventtime = `date +%c`;
    my $time = $end - $start;
    my $response_time = sprintf "%.1f", $time;


    if ( $response->is_success) {

my $xml = new XML::Simple;
my $x = $response->decoded_content;

# read XML file
my $data = $xml->XMLin($x);



my $success =  $data->{'success'};



if ( $response_time < 5 && $success == '1' )
{
print "good\n";
}

我需要添加代码或数学公式,以便在此 Perl 脚本中为我提供此 API 调用 90 或 365 天(脚本可以每 1 或 5 分钟运行一次)的正常运行时间可用性,以便它可以填充文本文件。然后前端开发人员将从文本文件中检索数据并制作漂亮的网页或 JavaScript 调用。任何提示将不胜感激,我也可以用 python 编写它。

4

1 回答 1

0

我的方法是使用 2 个脚本来执行此操作。每次运行时,监控脚本都会在 txt 结果文件的新行中写入日期时间戳和成功或失败的 1 或 0。另一个脚本可能每天运行一次,并解析结果文件,计算失败响应的数量与总体响应的比较。然后是一个简单的百分比计算来获得结果,您可以将其放入前端人员可以阅读的 txt 文件中。

当您从今天起 90 或 365 天获得结果后,当您循环读取每一行的文件时,您开始将结果写回文件中。完成后用新的结果文件替换现有的结果文件。

如果您有权访问数据库,那么您可以使用相同的主体,但它会更灵活。

于 2018-06-15T21:34:06.827 回答