API调用的正常运行时间可用代码

时间:2018-06-15 18:54:19

标签: python perl availability-monitoring

我有一个每5分钟运行一次API调用的Perl脚本。此API调用包含用于对数据库进行身份验证的REST调用。如果我成功进行身份验证,则会返回“确定”状态。或者' 1'。

我的任务是为我们的前端开发人员提供此API调用的正常运行时间。例如,具有99.98888' 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中写这个。

1 个答案:

答案 0 :(得分:0)

我的方法是用2个脚本来做这个。每次运行时,监视脚本都会在txt结果文件中为新行写入日期时间戳和1或0表示成功或失败。另一个脚本每天运行一次,并解析结果文件,计算与总体响应相比的失败响应数。然后,这是一个简单的百分比计算,以获得您可以放在前端人员可以读取的txt文件中的结果。

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

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