標籤:
最近,自己業務進行上線,上線後,需要考慮的是對各種服務進行監控,包括(httpd服務,mysqld服務等),現在想以mysqld服務為例總結下那種方式的指令碼最為專業和合理:
(1).根據mysql的連接埠號碼來監控mysql的服務。(常見於監控mysql的本地服務)
比較常見的一個指令碼:
1 netstat -natup|grep mysqld|awk -F‘[ :]+‘ ‘{print $5}‘
上面是將mysqld的連接埠號碼進行了過濾,這個方法的缺點是:有可能是連接埠在,但是服務可能是不正常的。例如:系統負載很高,cpu的負載也很高,串連數滿了,這個是其存在的問題之一。
(2).根據mysql的進程監控mysql的服務:
比較常見的一個指令碼:
1 ps -aux |grep mysqld |grep -v grep|wc -l
這種方式的缺點也是和上面的一樣:有可能是連接埠在,但是服務可能是不正常的。例如:系統負載很高,cpu的負載也很高,串連數滿了,這個是其存在的問題之一。
(3). 通過mysql用戶端的命令以及用賬戶串連mysql,然後根據確定返回的命令狀態或者返回的內容來確定mysql是否正常(本地或者是遠端串連狀態)。
比較常見的一個判斷指令碼(只是其中的一些個核心內容):
1 mysql -uroot -p1234 -e‘select version();‘>&/dev/null2 echo $?
如果上面的$?是0 的話,說明是能夠正常串連的,如果為1的話,則說明是串連失敗的。
這種方式的缺點是,需要有mysql的串連用戶端,要有資料的帳號和密碼,以及串連資料庫主機的授權。
(4).通過php/java的方式直接連接mysql的方式來監控mysql的服務狀態。
比較常見的一個指令碼,也是比較簡單的:
1 <?php2 $conn = mysql_connect(‘root‘,‘1234‘,‘locahost‘,3306) or die(‘mysql coulc not connect‘.mysql_error());3 4 ?>
這種方式是最接近使用者的訪問方式,效果是最好的,因為上面的這種方式儘管就算是連接埠存在,但是只要伺服器的cpu負載很高,那使用者的訪問肯定是不正常的。
所以警示的最佳方式不是服務的警示是否開啟了,而是網站的使用者訪問是否還是正常。這才是最佳的警示原則和方式。 我們應該從使用者的角度出發考慮問題,而不是說從營運的角度來考慮問題。 所以應該在工作中使用這個方式。
關於mysql監控指令碼怎麼寫會比較好的記錄