Files
BE_IBL/application/controllers/Ext_rspad.php
2026-04-15 15:24:53 +07:00

238 lines
8.2 KiB
PHP

<?php
class Ext_rspad extends MY_CONTROLLER
{
function __construct()
{
parent::__construct();
}
function wa($target = "slave_rspad", $last_minute = 15)
{
$sql = "select * from ext_rspad.slave_log
where
target = ? and
(
Last_IO_Errno <> 0 or Last_Errno <> 0
or Last_SQL_Errno <> 0
)
and date + interval ? minute > now()
order by id desc";
$qry = $this->db->query($sql, [$target, $last_minute]);
if (!$qry) {
echo "<p>";
print_r($this->db->error());
echo "</p>";
exit;
}
$rows = $qry->result_array();
if (count($rows) == 0) {
echo "No Error in Last 15 minutes\n";
exit;
}
$msg = "*Last $last_minute minute Error*:\n";
if (count($rows) > 0) {
foreach ($rows as $r) {
$msg .= "Date: \t" . $r["date"] . "\n";
if ($r["Last_IO_Errno"] > 0) {
$msg .= "IO Err: \t" . $r["Last_IO_Error"] . "\n";
}
if ($r["Last_Errno"] > 0) {
$msg .= "Gen Err: \t" . $r["Last_Error"] . "\n";
}
if ($r["Last_SQL_Errno"] > 0) {
$msg .= "SQL Err: \t" . $r["Last_SQL_Error"] . "\n";
}
}
}
$msg .= "Last Status: https://devone.aplikasi.web.id/one-api/ext_rspad/show";
$this->load->library("Wa_sas");
$hp = "081339692415";
$resp = $this->wa_sas->send_message($hp, $msg, false);
echo json_encode($resp);
}
function wa_sum($target = "slave_rspad")
{
$sql = "select * from ext_rspad.slave_log
where
target = ? and
(
Last_IO_Errno <> 0 or Last_Errno <> 0
or Last_SQL_Errno <> 0
)
and date + interval 3 day > now()
order by id desc limit 0,3";
$qry = $this->db->query($sql, [$target]);
if (!$qry) {
echo "<p>";
print_r($this->db->error());
echo "</p>";
exit;
}
$rows = $qry->result_array();
$msg = "";
if (count($rows) > 0) {
$msg = "*Last 3 Error (last 3 day)*:\n";
foreach ($rows as $r) {
$msg .= "Date: \t" . $r["date"] . "\n";
if ($r["Last_IO_Errno"] > 0) {
$msg .= "IO Err: \t" . $r["Last_IO_Error"] . "\n";
}
if ($r["Last_Errno"] > 0) {
$msg .= "Gen Err: \t" . $r["Last_Error"] . "\n";
}
if ($r["Last_SQL_Errno"] > 0) {
$msg .= "SQL Err: \t" . $r["Last_SQL_Error"] . "\n";
}
}
}
$sql = "select * from ext_rspad.slave_log
where target = ?
order by id desc limit 0,3";
$qry = $this->db->query($sql, [$target]);
if (!$qry) {
echo "<p>";
print_r($this->db->error());
echo "</p>";
exit;
}
$rows = $qry->result_array();
$msg .= "*Last 3 status*:\n";
if (count($rows) > 0) {
foreach ($rows as $r) {
$msg .= "Date: \t" . $r["date"] . "\n";
if ($r["Last_IO_Errno"] > 0) {
$msg .= "IO Err: \t" . $r["Last_IO_Error"] . "\n";
}
if ($r["Last_Errno"] > 0) {
$msg .= "Gen Err: \t" . $r["Last_Error"] . "\n";
}
if ($r["Last_SQL_Errno"] > 0) {
$msg .= "SQL Err: \t" . $r["Last_SQL_Error"] . "\n";
}
$msg .= "IO State:\t" . $r["Slave_IO_State"] . "\n";
$msg .= "IO Running:\t" . $r["Slave_IO_Running"] . "\n";
$msg .= "Sql State:\t" . $r["Slave_SQL_Running_State"] . "\n";
$msg .= "Sql Running:\t" . $r["Slave_SQL_Running"] . "\n";
$msg .= "Behind Master:\t" . $r["Seconds_Behind_Master"] . "\n";
$msg .= "\n";
}
} else {
$msg .= "Tidak ada\n";
}
$msg .= "Last Status: https://devone.aplikasi.web.id/one-api/ext_rspad/show";
$this->load->library("Wa_sas");
$hp = "081339692415";
$resp = $this->wa_sas->send_message($hp, $msg, false);
echo json_encode($resp);
}
function show($target = "slave_rspad")
{
$sql = "select
date as TrxDate, Slave_IO_Running, Slave_IO_State, Seconds_Behind_Master,
Last_Errno, Last_Error, Last_SQL_Errno, Last_SQL_Error,
Last_IO_Errno, Last_IO_Error
from ext_rspad.slave_log
where target =? order by id desc limit 0,20";
$qry = $this->db->query($sql, [$target]);
echo "<h5>Log for $target <h5>";
if (!$qry) {
echo "<p>";
print_r($this->db->error());
echo "</p>";
exit;
}
$rows = $qry->result_array();
$this->print_table_style();
$this->print_table($rows, array_keys($rows[0]));
}
function slave()
{
$sql = "INSERT INTO ext_rspad.slave_log (
target,
`Slave_IO_State`,`Master_Host`,`Master_User`,
`Master_Port`,`Connect_Retry`,`Master_Log_File`,
`Read_Master_Log_Pos`,`Relay_Log_File`,`Relay_Log_Pos`,
`Relay_Master_Log_File`,`Slave_IO_Running`,`Slave_SQL_Running`,
`Replicate_Do_DB`,`Replicate_Ignore_DB`,`Replicate_Do_Table`,
`Replicate_Ignore_Table`,`Replicate_Wild_Do_Table`,`Replicate_Wild_Ignore_Table`,
`Last_Errno`,`Last_Error`,`Skip_Counter`,
`Exec_Master_Log_Pos`,`Relay_Log_Space`,`Until_Condition`,
`Until_Log_File`,`Until_Log_Pos`,`Master_SSL_Allowed`,
`Master_SSL_CA_File`,`Master_SSL_CA_Path`,`Master_SSL_Cert`,
`Master_SSL_Cipher`,`Master_SSL_Key`,`Seconds_Behind_Master`,
`Master_SSL_Verify_Server_Cert`,`Last_IO_Errno`,`Last_IO_Error`,
`Last_SQL_Errno`,`Last_SQL_Error`,`Replicate_Ignore_Server_Ids`,
`Master_Server_Id`,`Master_SSL_Crl`,`Master_SSL_Crlpath`,
`Using_Gtid`,`Gtid_IO_Pos`,`Replicate_Do_Domain_Ids`,
`Replicate_Ignore_Domain_Ids`,`Parallel_Mode`,`SQL_Delay`,
`SQL_Remaining_Delay`,`Slave_SQL_Running_State`,`Slave_DDL_Groups`,
`Slave_Non_Transactional_Groups`,`Slave_Transactional_Groups`)
values(?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,?,?, ?,? ) ";
$body = file_get_contents("php://input");
$prm = json_decode($body, true, 2048);
$qry = $this->db->query($sql, [
$prm["target"],
$prm["Slave_IO_State"], $prm["Master_Host"], $prm["Master_User"],
$prm["Master_Port"], $prm["Connect_Retry"], $prm["Master_Log_File"],
$prm["Read_Master_Log_Pos"], $prm["Relay_Log_File"], $prm["Relay_Log_Pos"],
$prm["Relay_Master_Log_File"], $prm["Slave_IO_Running"], $prm["Slave_SQL_Running"],
$prm["Replicate_Do_DB"], $prm["Replicate_Ignore_DB"], $prm["Replicate_Do_Table"],
$prm["Replicate_Ignore_Table"], $prm["Replicate_Wild_Do_Table"], $prm["Replicate_Wild_Ignore_Table"],
$prm["Last_Errno"], $prm["Last_Error"], $prm["Skip_Counter"],
$prm["Exec_Master_Log_Pos"], $prm["Relay_Log_Space"], $prm["Until_Condition"],
$prm["Until_Log_File"], $prm["Until_Log_Pos"], $prm["Master_SSL_Allowed"],
$prm["Master_SSL_CA_File"], $prm["Master_SSL_CA_Path"], $prm["Master_SSL_Cert"],
$prm["Master_SSL_Cipher"], $prm["Master_SSL_Key"], $prm["Seconds_Behind_Master"],
$prm["Master_SSL_Verify_Server_Cert"], $prm["Last_IO_Errno"], $prm["Last_IO_Error"],
$prm["Last_SQL_Errno"], $prm["Last_SQL_Error"], $prm["Replicate_Ignore_Server_Ids"],
$prm["Master_Server_Id"], $prm["Master_SSL_Crl"], $prm["Master_SSL_Crlpath"],
$prm["Using_Gtid"], $prm["Gtid_IO_Pos"], $prm["Replicate_Do_Domain_Ids"],
$prm["Replicate_Ignore_Domain_Ids"], $prm["Parallel_Mode"], $prm["SQL_Delay"],
$prm["SQL_Remaining_Delay"], $prm["Slave_SQL_Running_State"], $prm["Slave_DDL_Groups"],
$prm["Slave_Non_Transactional_Groups"], $prm["Slave_Transactional_Groups"]
]);
if (!$qry) {
echo json_encode([
"status" => "ERR",
"error" => $this->db->error()
]);
exit;
}
echo json_encode(["status" => "OK", "error" => []]);
}
public function print_table_style()
{
echo "
<style>
th, td {
padding: 15px;
text-align: left;
}
tr:nth-child(even) {background-color: #f2f2f2;}
table {
border: solid 1px ;
min-width:600px;
}
</style>
";
}
public function print_table($rows, $keys)
{
echo "<table>";
echo "<tr>";
foreach ($keys as $k) {
echo "<td>$k</td>";
}
echo "</tr>\n";
foreach ($rows as $r) {
echo "<tr>";
foreach ($keys as $k) {
echo "<td>" . $r[$k] . "</td>";
}
echo "</tr>";
}
echo "</table>";
}
}