3、MySQL服务器监控
①、MySQL是否能够连接
②、MySQL是否发生表损坏等错误
③、MySQL活动连接数是否过多
④、MySQL从库是否同步正常
⑤、MySQL从库同步延迟时间是否过大
脚本:/data0/monitor/mysql.php
- <?php
-
- $server_list[]="192.168.1.11:3306:root:password";
- $server_list[]="192.168.1.12:3306:root:password";
- $server_list[]="192.168.1.13:3306:root:password";
-
- $database="mysql";
-
- $curl = new Curl_Class();
-
- foreach ($server_list as $server) {
- $status=1;
- unset($data);
- $data["menu"] = "mysql";
- $data["info"] = "";
- list($data["ip"], $data["port"], $username, $password) = explode(":", $server);
-
- $connect = @mysql_connect($data["ip"].":".$data["port"], $username, $password);
- if(! $connect)
- {
- $status=0;
- $data["info"] = $data["info"] . "无法连接MySQL服务器\r\n";
- }
-
- $select = @mysql_select_db($database, $connect);
- $result = @mysql_query("show slave status");
- $rs_slave = @mysql_fetch_array($result);
- $result = @mysql_query("show global status like 'Threads_running'");
- $rs_threads = @mysql_fetch_array($result);
- if($rs_slave["Slave_SQL_Running"] == "No")
- {
- $status=0;
- $data["abstract"] = "从库不同步";
- $data["info"] = $data["info"] . "Slave_SQL_Running = No\r\n";
- }
- if($rs_slave["Slave_IO_Running"] == "No")
- {
- $status=0;
- $data["abstract"] = "从库不同步";
- $data["info"] = $data["info"] . "Slave_IO_Running = No\r\n";
- }
- if($rs_slave["Last_Error"] != "")
- {
- $status=0;
- $data["abstract"] = "从库同步出错";
- $data["info"] = $data["info"] . "Last_Error = ".substr($rs_slave["Last_Error"], 0, 40)."\r\n";
- }
- if($rs_slave["Seconds_Behind_Master"] > 180)
- {
- $status=0;
- $data["abstract"] = "从库同步延迟时间高达".$rs_slave["Seconds_Behind_Master"]."秒";
- $data["info"] = $data["info"] . "Seconds_Behind_Master = ".$rs_slave["Seconds_Behind_Master"]."\r\n";
- }
- if($rs_threads["Value"] > 60)
- {
- $status=0;
- $data["abstract"] = "活动连接数多达".$rs_threads["Value"];
- $data["info"] = $data["info"] . "Threads_running = ".$rs_threads["Value"]."\r\n";
- }
-
- $data["date"] = date("Y-m-d_H:i:s");
- if($status == 0)
- {
- $post = @$curl->post("http://127.0.0.1:8888/interface.php", $data);
- echo "MySQL服务器“".$data["ip"].":".$data["port"]."”发生故障!\n";
- print_r($post);
- }
- else
- {
- $data["failback"] = "active";
- $post = @$curl->post("http://127.0.0.1:8888/interface.php", $data);
- echo "MySQL服务器“".$data["ip"].":".$data["port"]."”运行正常!\n";
- print_r($post);
- }
- }
-