foreach ($xml->answer[0]->history[0] as $hist) { if ($hist->attributes()->end_time == NULL) { // Jobがまだ終了していないときは、end_timeが取得できないため、処理しない。 $msg = $msg . "Job : /" . $hist->attributes()->job_name . " is running.\n"; continue; } $obj = new JobHistoryClass(); $obj->set_id($hist->attributes()->id); $obj->set_start_time($hist->attributes()->start_time); $obj->set_end_time($hist->attributes()->end_time); array_push($jobHist, $obj); } // zabbix_senderでJob実行履歴の情報を登録する for ($j = 0; $j < count($jobHist); $j++) { // 該当itemが所属するhost名を取得する $host = $api->hostGet(array('output' => 'extend', 'filter' => array('hostid' => $items[0]->hostid))); // elapseの計算 $start_time = strtotime($jobHist[$j]->get_start_time()); $end_time = strtotime($jobHist[$j]->get_end_time()); $elapse = $end_time - $start_time; // ホストが一つに特定出来た場合はzabbixへ履歴情報を登録する if (count($host) == 1) { // 以下、zabbix_senderでのjob実行履歴の登録 $msg = $msg . "[" . date("Y/m/d (D) H:i:s", time()) . "] " . 'echo -n -e "' . $host[0]->host . ' ' . $keyHeader . $KEY_ID . ' ' . $start_time . ' ' . $jobHist[$j]->get_id() . '" | ' . $ZABBIX_SENDER . ' -z ' . $ZABBIX_SERVER . ' -T -i -' . "\n"; $msg = $msg . "[" . date("Y/m/d (D) H:i:s", time()) . "] " . exec('echo -n -e "' . $host[0]->host . ' ' . $keyHeader . $KEY_ID . ' ' . $start_time . ' ' . $jobHist[$j]->get_id() . '" | ' . $ZABBIX_SENDER . ' -z ' . $ZABBIX_SERVER . ' -T -i -') . "\n"; $msg = $msg . "[" . date("Y/m/d (D) H:i:s", time()) . "] " . 'echo -n -e "' . $host[0]->host . ' ' . $keyHeader . $KEY_ELAPSE . ' ' . $start_time . ' ' . $elapse . '" | ' . $ZABBIX_SENDER . ' -z ' . $ZABBIX_SERVER . ' -T -i -' . "\n"; $msg = $msg . "[" . date("Y/m/d (D) H:i:s", time()) . "] " . exec('echo -n -e "' . $host[0]->host . ' ' . $keyHeader . $KEY_ELAPSE . ' ' . $start_time . ' ' . $elapse . '" | ' . $ZABBIX_SENDER . ' -z ' . $ZABBIX_SERVER . ' -T -i -') . "\n"; } } } error_log($msg, 3, $LOG_DIR . $LOG_FILE);