百度首页 | 百度空间
 
查看文章
 
Linux服务器系统监控框架与MSN、E-mail、手机短信报警的实现[2]
2008-07-01 12:10

3、MySQL服务器监控
①、MySQL是否能够连接
②、MySQL是否发生表损坏等错误
③、MySQL活动连接数是否过多
④、MySQL从库是否同步正常
⑤、MySQL从库同步延迟时间是否过大
脚本:/data0/monitor/mysql.php
  1. <?php  
  2. //$server_list[]="服务器地址:端口:帐号:密码";  
  3. $server_list[]="192.168.1.11:3306:root:password";  
  4. $server_list[]="192.168.1.12:3306:root:password";  
  5. $server_list[]="192.168.1.13:3306:root:password";  
  6.   
  7. $database="mysql";  
  8.   
  9. $curl = new Curl_Class();   
  10.   
  11. foreach ($server_list as $server) {  
  12.     $status=1;//初始化,正常状态  
  13.    unset($data);  
  14.     $data["menu"] = "mysql";  
  15.   $data["info"] = "";  
  16.      list($data["ip"], $data["port"], $username, $password) = explode(":", $server);  
  17.   
  18.     $connect = @mysql_connect($data["ip"].":".$data["port"], $username, $password);  
  19.     if(! $connect)  
  20.      {  
  21.         $status=0;  
  22.         $data["info"] = $data["info"] . "无法连接MySQL服务器\r\n";  
  23.      }  
  24.     
  25.     $select = @mysql_select_db($database, $connect);  
  26.     $result = @mysql_query("show slave status");  
  27.     $rs_slave = @mysql_fetch_array($result);  
  28.     $result = @mysql_query("show global status like 'Threads_running'");  
  29.     $rs_threads = @mysql_fetch_array($result);  
  30.     if($rs_slave["Slave_SQL_Running"] == "No")  
  31.      {  
  32.         $status=0;//故障状态  
  33.         $data["abstract"] = "从库不同步";  
  34.         $data["info"] = $data["info"] . "Slave_SQL_Running = No\r\n";    
  35.      }  
  36.     if($rs_slave["Slave_IO_Running"] == "No")  
  37.      {  
  38.         $status=0;  
  39.         $data["abstract"] = "从库不同步";  
  40.         $data["info"] = $data["info"] . "Slave_IO_Running = No\r\n";    
  41.      }  
  42.     if($rs_slave["Last_Error"] != "")  
  43.      {  
  44.         $status=0;  
  45.         $data["abstract"] = "从库同步出错";  
  46.         $data["info"] = $data["info"] . "Last_Error = ".substr($rs_slave["Last_Error"], 0, 40)."\r\n";  
  47.      }  
  48.     if($rs_slave["Seconds_Behind_Master"] > 180)  
  49.      {  
  50.         $status=0;  
  51.         $data["abstract"] = "从库同步延迟时间高达".$rs_slave["Seconds_Behind_Master"]."秒";  
  52.         $data["info"] = $data["info"] . "Seconds_Behind_Master = ".$rs_slave["Seconds_Behind_Master"]."\r\n";  
  53.      }  
  54.     if($rs_threads["Value"] > 60)  
  55.      {  
  56.         $status=0;  
  57.         $data["abstract"] = "活动连接数多达".$rs_threads["Value"];  
  58.         $data["info"] = $data["info"] . "Threads_running = ".$rs_threads["Value"]."\r\n";  
  59.      }  
  60.   
  61.     $data["date"] = date("Y-m-d_H:i:s");  
  62.     if($status == 0)  
  63.      {  
  64.         $post = @$curl->post("http://127.0.0.1:8888/interface.php", $data);  
  65.         echo "MySQL服务器“".$data["ip"].":".$data["port"]."”发生故障!\n";  
  66.          print_r($post);        
  67.      }  
  68.     else  
  69.      {  
  70.         $data["failback"] = "active";//服务器正常,发送通知信息  
  71.         $post = @$curl->post("http://127.0.0.1:8888/interface.php", $data);  
  72.         echo "MySQL服务器“".$data["ip"].":".$data["port"]."”运行正常!\n";  
  73.          print_r($post);  
  74.      }  
  75. }  
  76.   

类别:freebsd&linux | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu