sasone("Testing"); } function index() { $this->log("Start Monitoring Pagi"); $sql = "select * from m_branch where M_BranchIsActive = 'Y' and M_BranchIsDefault = 'Y'"; $branchName = "No Branch"; $branchCode = ""; $qry = $this->db->query($sql); if ($qry) { $rows = $qry->result_array(); $branchName = $rows[0]["M_BranchName"]; $branchCode = $rows[0]["M_BranchCode"]; } else { $this->log("Error Pending Merujuk : " . $this->db->error()["message"]); } $msg_service = $this->service(); $msg = "[ $branchCode | $branchName]\n"; $msg .= " DATE : " . date("Y-m-d H:i:s") . "\n"; $msg .= " UP : " . $this->uptime(); $msg .= " ----------\n"; $msg .= " Service : \n"; $msg .= $msg_service; $msg .= " ----------\n"; $msg .= " Resource : \n"; $msg .= $this->resource(); $msg .= " ----------\n"; $msg .= " Connectivity:\n"; $msg .= $this->connectivity(); $msg .= " Backup:\n"; $msg .= $this->backup(); $this->log($msg); $this->sasone($msg,$branchCode); $this->log("End Monitoring Pagi"); } function uptime() { exec("uptime", $output, $return); $s_output = preg_split("/\s+/", $output[0]); if (count($s_output) >= 5) { $msg = ""; for($i=3;$i<=5; $i++) { $msg .= $s_output[$i] . " "; } if ( !strpos($s_output[5],":") ) { $msg .= $s_output[6]; } return $msg . "\n"; } return $output . "\n"; } function service() { exec("pgrep apache2", $output, $return); $result = ""; if ($return == 0) { $result .= " Web Server running\n"; } else { $result .= " Web Server NOT RUNNING\n"; } exec("ps -ef | grep tomcat | grep java | awk ' { print $2 } '",$output,$return); if ($return == 0) { $result .= " Report Server running\n"; } else { $result .= " Report Server NOT RUNNING\n"; } exec("pgrep mysqld", $output, $return); if ($return == 0) { $result .= " MariaDB Server running\n"; } else { $result .= " MariaDB Server NOT RUNNING\n"; } return $result; } function resource() { $df = exec("df -h",$output,$return); $result = ""; $is_pac = false; $pac_tgt =""; foreach($output as $line){ $parts =preg_split("/\s+/",$line); $mount = $parts[5]; if ($mount == "/" || $mount == "/var") { $result .= " folder $mount sisa " . $parts[3] . "\n"; } if ($mount == "/data-pacs") { $is_pac = true; $pac_tgt = $parts[0]; } } if ($is_pac) { $result .= " Pacs /data-pacs => $pac_tgt \n"; $folder = "/data-pacs/" . Date("Ymd",strtotime("now - 1 day")); if ( file_exists($folder)) { $result .= " $folder exists\n"; } else { $result .= " $folder not exists\n"; } $folder = "/data-pacs/" . Date("Ymd",strtotime("now - 2 day")); if ( file_exists($folder)) { $result .= " $folder exists\n"; } else { $result .= " $folder not exists\n"; } } else { $result .= " Pacs not mounted \n"; } return $result; } function backup() { $msg = ""; $dow = date("w"); $file = "/var/backup-data/db/one/daily/backup_one_dow_${dow}.sql"; $stat = stat($file); $msg .= " " . str_pad(basename($file),30," ") . round($stat["size"] / ( 1024 * 1024 * 1024),1) . "G" . " " . date("Y-m-d H:i",$stat["ctime"]) . "\n"; $file = "/var/backup-data/db/one_log/daily/backup_one_log_dow_${dow}.sql"; $stat = stat($file); $msg .= " " . str_pad(basename($file),30," ") . round($stat["size"] / ( 1024 * 1024 * 1024),1) . "G" . " " . date("Y-m-d H:i",$stat["ctime"]) . "\n"; return $msg; } function connectivity() { $regionalIP = trim($this->getRegionalIP()); $regonlineIP = "mobile.pramita.co.id"; $email = "email.pramita.co.id"; $result = "result.pramita.co.id"; $msg = ""; $msg .= $this->ping($regionalIP,80,5,true); $msg .= $this->ping($regonlineIP,443,5); $msg .= $this->ping($email,587,5); $msg .= $this->ping($result,443,5); return $msg; } function ping($host, $port, $timeout, $is_reg = false) { $tB = microtime(true); $fP = fSockOpen($host, $port, $errno, $errstr, $timeout); $s_target = "$host:$port"; if ($is_reg) $s_target = "[Reg]$s_target"; $s_target = str_pad($s_target,38," "); if (!$fP) { return " $s_target down ( connect timeout in $timeout s)\n"; } $tA = microtime(true); return " $s_target " . round((($tA - $tB) * 1000), 0)." ms\n"; } function log($msg) { $sdate = Date("Y-m-d H:i:s"); echo "$sdate $msg\n"; } function getRegionalIP() { $sql = "select S_SystemIPAddressRegional from conf_systems"; $qry = $this->db->query($sql); if (! $qry ) { return "devone.aplikasi.web.id"; } $rows = $qry->result_array(); if (count($rows) > 0 ) return $rows[0]["S_SystemIPAddressRegional"]; return "devone.aplikasi.web.id"; } function clean_up_message($msg) { return $msg; } function sasone($msg,$branchCode) { $url = "http://bandungraya.aplikasi.web.id/one-api/tgram/xone_bot/chat_id_v2"; // chat id upgraded to -1001166991228 $data = json_encode( array( "type"=>"monitoring.pagi", "branchCode" => $branchCode, "text" => $msg, "id" => "-1001166991228" )); $z_data = gzdeflate($data,9); $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $z_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($z_data)) ); $result = curl_exec($ch); echo $result; } }