dba+開源工具:面向開發的MySQL圖形可視化監控


工具研發者介紹

賀春暘,凡普金科DBA團隊負責人,《MySQL管理之道:性能調優、高可用與監控》第一、二版作者,曾任職於中國移動飛信、安卓機鋒網。致力於MariaDB、MongoDB等開源技術的研究,主要負責數據庫性能調優、監控和架構設計。

工具下載:

https://github.com/hcymysql/mysql_monitor


簡介


目前常用的開源監控工具有nagios、zabbix、grafana,但這些是面向專業DBA使用的,而對於業務研發人員來說,沒有專業的MySQL理論知識,並且上述監控工具均為純英文界面,交互不直觀,那麼多的監控指標,你知道有哪些是研發最關心的嗎?


所以每次都是DBA通知研發,系統哪塊出了問題,這樣的效率其實是低下的,我希望把監控這塊東西定製化,做成開發一眼就能看懂的指標項,純中文頁面,清爽直觀,簡約而不簡單,出了問題報警信息直接第一時間推送給研發,效率會大大提升,同時也減少了DBA作為中間人傳話的作用(傳達室大爺角色)。


參考了天兔Lepus的UI風格,目前採集了數據庫連接數(具體連接了哪些應用程序IP,賬號統計)、QPS/TPS、索引使用率統計,同步複製狀態/延遲監控。可實現微信和郵件報警。


1)MySQL狀態監控


dba+開源工具:面向開發的MySQL圖形可視化監控

2)點擊活動連接數,可以查看具體的連接數統計信息


dba+開源工具:面向開發的MySQL圖形可視化監控

3)點擊圖表,可以查看歷史曲線圖


dba+開源工具:面向開發的MySQL圖形可視化監控

4)主從狀態監控


dba+開源工具:面向開發的MySQL圖形可視化監控

dba+開源工具:面向開發的MySQL圖形可視化監控

6)郵件報警

dba+開源工具:面向開發的MySQL圖形可視化監控

環境搭建


# yum install httpd mysql php-mysqlnd -y

# yum install python-simplejson -y

# service httpd start


把https://github.com/hcymysql/mysql_monitor/archive/master.zip安裝包解壓縮到/var/www/html/目錄下。

# cd /var/www/html/mysql_monitor/

# chmod 755 ./mail/sendEmail

# chmod 755 ./weixin/wechat.py


注:郵件和微信報警調用的第三方工具,所以這裡要賦予可執行權限755。


MySQL Monitor監控工具搭建


1)導入MySQL Monitor監控工具表結構(sql_db庫)


# cd /var/www/html/mysql_monitor/

# mysql -uroot -p123456 < mysql_monitor_schema.sql


2)錄入被監控主機的信息


mysql>insert into

`mysql_status_info`(`id`,`ip`,`dbname`,`user`,`pwd`,`port`,`monitor`,`send_mail`,`send_mail_to_list`,`send_weixin`,`send_weixin_to_list`,`alarm_threads_running`,`threshold_alarm_threads_running`,`alarm_repl_status`,`threshold_warning_repl_delay`)

values

(1,'127.0.0.1','sql_db','admin','hechunyang',3306,1,1,'[email protected],[email protected]',1,'hechunyang',NULL,NULL,NULL,NULL);


注:以下字段可以按照需求變更:


  • ip字段含義:輸入被監控MySQL的IP地址
  • dbname字段含義:輸入被監控MySQL的數據庫名
  • user字段含義:輸入被監控MySQL的用戶名(最好給ALL管理員權限)
  • pwd字段含義:輸入被監控MySQL的密碼
  • port字段含義:輸入被監控MySQL的端口號
  • monitor字段含義:0為關閉監控(也不採集數據,直接跳過);1為開啟監控(採集數據)
  • send_mail字段含義:0為關閉郵件報警;1為開啟郵件報警
  • send_mail_to_list字段含義:郵件人列表
  • send_weixin字段含義:0為關閉微信報警;1為開啟微信報警
  • send_weixin_to_list字段含義:微信公眾號
  • threshold_alarm_threads_running字段含義:設置連接數閥值(單位個)
  • threshold_warning_repl_delay字段含義:設置主從複製延遲閥值(單位秒)


3)修改conn.php配置文件


# vim /var/www/html/mysql_monitor/conn.php


$con = mysqli_connect("127.0.0.1","admin","hechunyang","sql_db","3306") or die("數據庫鏈接錯誤".mysql_error());


改成你的MySQL Monitor監控工具表結構(sql_db庫)連接信息。


4)修改郵件報警信息


# cd /var/www/html/mysql_monitor/mail/

# vim mail.php


system("./mail/sendEmail -f [email protected] -t '{$this->send_mail_to_list}' -ssmtp.139.com:25 -u '{$this->alarm_subject}' -o message-charset=utf8 -o message-content-type=html -m '報警信息:

color='#FF0000'>{$this->alarm_info}

/<font>' -xu [email protected] -xp'123456' -o tls=no");


改成你的發件人地址、賬號密碼,裡面的變量不用修改。



# cd /var/www/html/mysql_monitor/weixin/

# vim wechat.py


微信企業號設置移步https://github.com/X-Mars/Zabbix-Alert-WeChat/blob/master/README.md 看此教程配置。


6)定時任務每分鐘抓取一次


# crontab -l


*/1 * * * * cd /var/www/html/mysql_monitor/; /usr/bin/php/var/www/html/mysql_monitor/check_mysql_repl.php > /dev/null 2 >&1


*/1 * * * * cd /var/www/html/mysql_monitor/; /usr/bin/php/var/www/html/mysql_monitor/check_mysql_status.php > /dev/null 2 >&1


  • check_mysql_status.php(用來採集被監控端MySQL狀態信息和觸發報警)
  • check_mysql_repl.php(用來採集被監控端MySQL主從複製信息和觸發報警)


7)更改頁面自動刷新頻率


vim mysql_status_monitor.php

vim mysql_repl_monitor.php



默認頁面每600秒自動刷新一次。


8)頁面訪問


  • http://yourIP/mysql_monitor/mysql_status_monitor.php
  • http://yourIP/mysql_monitor/mysql_repl_monitor.php


加一個超鏈接,可方便地接入你們的自動化運維平臺裡。


下載方式


此工具現通過dbaplus社群免費為大家提供下載使用。若使用過程中有任何問題或建議,可隨時與我們聯繫,歡迎大家試用。


登錄以下鏈接即可下載:

https://github.com/hcymysql/mysql_monitor


更多開源工具&腳本

dba+開源工具:面向開發的MySQL圖形可視化監控

詳情及下載:http://dbaplus.cn/list-142-1.html


分享到:


相關文章: