Current File : //proc/24011/task/24011/root/etc/node_exporter/scripts/jetback_lastbackup
#!/usr/bin/php -qd disable_functions=""
<?php
error_reporting(0);
date_default_timezone_set('UTC');
$out_lines=array();

$status = array(0 => 'nothing', 1 => 'Completed', 2 => 'Failed', 3 => 'Aborted', 4 => 'Partially Complete', 5 => 'Never Finished', 6 => 'Processing');

$check_jetbackup_version = exec("jetbackup5api 2>&1");

if (strpos($check_jetbackup_version, "command not found") === FALSE) {
    $api_call = exec("jetbackup5api -F listLogs -D 'find[type]=1&sort[start_time]=-1&limit=20' -O json");
    $jtb_version = 5;
} else {
    $api_call = exec("jetapi backup -F listLogs -D 'find[type]=1&sort[start_time]=-1&limit=20' -O json");
    $jtb_version = 4;
}

//$api_call = exec("jetapi backup -F listLogs -D 'find[type]=1&sort[start_time]=-1&limit=20' -O json");
//$api_call = exec("jetbackup5api -F listLogs -D 'find[type]=1&sort[start_time]=-1&limit=20' -O json");
if (empty($api_call) || strpos($api_call, "command not found") !== FALSE) {
    $policy_value=-1;
    $policy_up=-1;
} else {
    $logs_result= json_decode($api_call, true);
    $logs_result=$logs_result['data']['logs'];
    $policy_label=array("state"=>"unknown");
    $policy_value=-1;
    $policy_up=1;

    if (!empty($logs_result)) {
        foreach ($logs_result as $log_line) {
	    if ($log_line['status'] < 6) {
		if(isset($log_line['execution_time']) && $log_line['info']['Backup'] != "JetBackup Config" ){
                    $policy_label=array("state"=>strtolower($status[$log_line['status']]));
                    $policy_value=strtotime(empty($log_line['end_time'])?$log_line['start_time']:$log_line['end_time']);
                    break;
                } elseif(!isset($log_line['execution_time'])){
                    $policy_label=array("state"=>strtolower($status[$log_line['status']]));
                    $policy_value=strtotime(empty($log_line['end_time'])?$log_line['start_time']:$log_line['end_time']);
                    break;
                }
            }
        }
    }
    add_oline('jetbackup_last', $policy_value, $policy_label);
}

add_oline('jetbackup_version', $jtb_version);
add_oline('jetbackup_up', $policy_up);

function add_oline($name, $value, $labels = "") {
    global $out_lines;
    $name = strtolower(str_replace(" ", "_", $name));

    $final_labels = array();
    if (is_array($labels)) {
        foreach ($labels as $k => $v) {
            if (is_numeric($v)) {
                $final_labels[strtolower($k)] = $v;
            } else if (is_string($v)) {
                $final_labels[strtolower($k)] = "\"" . $v . "\"";
            }
        }
    }

    $out_lines[] = $name . ((!empty($final_labels) && count($final_labels) > 0) ? ("{" .
            implode(',', array_map(
                    function ($vv, $kk) {
                        return sprintf("%s=%s", $kk, $vv);
                    },
                    $final_labels,
                    array_keys($final_labels)
            )
        )."}") : "") . " " . (is_numeric($value) ? $value : 0.00);
}

if (!empty($out_lines)) {
    foreach ($out_lines as $line) {
        echo $line.PHP_EOL;
    }
}