首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQLMTOP 監控平台部署全攻略:Python 環境、後端采集、前端展示、慢查詢分析、資源監控

     編輯:MySQL 資料庫相關知識

前言

MySQLMTOP 是一套基於 Python + MySQL + PHP 的開源 MySQL 監控系統,支援實時效能指標、慢查詢分析、大表檢測、命中率監控、連接數監控、OS 資源監控(CPU/記憶體/磁碟/網路)。本文記錄 CentOS 6.2 環境下的完整部署流程。

一、環境需求

組件版本要求用途
MySQL5.0+存儲監控數據
Apache2.2+Web 服務
PHP5.3+前端展示
Python2.7 推薦采集/告警任務
MySQLdb-Python 連接 MySQL

二、Python 2.7 編譯安裝

wget https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
tar xvzf Python-2.7.6.tgz && cd Python-2.7.6
./configure --prefix=/usr/local/python2.7 --enable-shared
make && make install
echo '/usr/local/python2.7/lib' >> /etc/ld.so.conf && /sbin/ldconfig
mv /usr/bin/python /usr/bin/python_old
ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python

# 修復 yum 依賴舊 python
vim /usr/bin/yum  # #!/usr/bin/python → #!/usr/bin/python_old

安裝依賴庫

# distribute (setuptools 前身)
wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.28.tar.gz
tar xvzf distribute-0.6.28.tar.gz && cd distribute-0.6.28
python setup.py install

# MySQLdb
wget https://github.com/farcepest/MySQLdb1/archive/MySQLdb-1.2.5.tar.gz
tar xvzf MySQLdb1-MySQLdb-1.2.5.tar.gz && cd MySQLdb1-MySQLdb-1.2.5
vim site.cfg  # mysql_config = /usr/local/mysql/bin/mysql_config
python setup.py build && python setup.py install

三、MySQLMTOP 後端部署

1. 建立監控庫並授權

mysql -uroot -e "CREATE DATABASE mysqlmtop DEFAULT CHARSET utf8;"
mysql -uroot -e "GRANT ALL ON mysqlmtop.* TO 'mtop_user'@'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;"

2. 導入表結構與初始數據

unzip mysqlmtop_v2.1.zip && cd mysqlmtop_v2.1
mysql -uroot mysqlmtop < sql/mysqlmtop.sql
mysql -uroot mysqlmtop < sql/mysqlmtop_data.sql

3. 被監控機建立采集賬號

mysql -uroot -e "GRANT SELECT, SUPER, PROCESS ON *.* TO 'monitor'@'172.18.35.29' IDENTIFIED BY 'monitor'; FLUSH PRIVILEGES;"

4. 配置 mysqlmtop

cp -a mysqlmtop /usr/local/
cp -a frontweb /data/web/data/
cd /usr/local/mysqlmtop
vim etc/config.ini  # 修改 DB 連接、監控目標 IP 等
chmod +x *.py *.sh mtopctl
ln -s /usr/local/mysqlmtop/mtopctl /usr/local/bin

# 格式轉換(關鍵!Windows 換行符會導致腳本失敗)
dos2unix *.py *.sh mtopctl

5. 測試與啟動

./test_mysql.py  # 輸出 "MySQLDB OK!"
mtopctl start

四、前端 Web 配置

cd /data/web/data/frontweb
chown -R nobody:nogroup /data/web/data/frontweb
chmod -R 750 /data/web/data/frontweb
vim application/config/database.php  # 配置監控庫連接

vim /data/web/conf/mysqlmtop.conf

  DocumentRoot /data/web/data/frontweb
  ServerName mysqlmtop.test.com
  DirectoryIndex index.php
  AddDefaultCharset UTF-8
   Order Deny,Allow; Deny from All 
   AllowOverride ALL 

service httpd graceful

本地 hosts 綁定 172.18.35.29 mysqlmtop.test.com,訪問 https://mysqlmtop.test.com(初始帳號 admin/admin)。

五、監控項配置

1. 應用與服務器註冊

Web 界面 → 管理中心 → 應用管理/服務器管理 添加

六、慢查詢分析配置

1. 被監控機安裝 Percona Toolkit 依賴

# DBI
wget https://cpan.metacpan.org/authors/id/T/TI/TIMB/DBI-1.628.tar.gz
tar xvzf DBI-1.628.tar.gz && cd DBI-1.628
perl Makefile.PL && make && make install

# DBD::mysql
wget https://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.024.tar.gz
tar xvzf DBD-mysql-4.024.tar.gz && cd DBD-mysql-4.024
perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config --with-mysql=/usr/local/mysql
make && make install

# IO::Socket::SSL
wget https://search.cpan.org/CPAN/authors/id/S/SU/SULLR/IO-Socket-SSL-1.972.tar.gz
tar xvzf IO-Socket-SSL-1.972.tar.gz && cd IO-Socket-SSL-1.972
perl Makefile.PL && make && make install

# Percona Toolkit
wget https://www.percona.com/redir/downloads/percona-toolkit/LATEST/percona-toolkit-2.2.7.tar.gz
tar xvzf percona-toolkit-2.2.7.tar.gz && cd percona-toolkit-2.2.7
perl Makefile.PL && make && make install

2. 開啟 MySQL 慢查詢日誌

slow_query_log = 1
slow_query_log_file = /data/dbdata/slow_query.log
long_query_time = 1

3. 被監控機配置 crontab 定時分析上傳

# 主機 ID=4
00 * * * * /usr/bin/pt-query-digest --user=mtop_user --password=123456 --port=3306 \
  --review h=172.18.35.29,D=mysqlmtop,t=mysql_slow_query_review_4 \
  --history h=172.18.35.29,D=mysqlmtop,t=mysql_slow_query_review_history_4 \
  --no-report --limit=0% /data/dbdata/slow_query.log >/dev/null 2>&1

# 主機 ID=5
00 * * * * /usr/bin/pt-query-digest --user=mtop_user --password=123456 --port=3306 \
  --review h=172.18.35.29,D=mysqlmtop,t=mysql_slow_query_review_5 \
  --history h=172.18.35.29,D=mysqlmtop,t=mysql_slow_query_review_history_5 \
  --no-report --limit=0% /data/dbdata/slow_query.log >/dev/null 2>&1

表名後綴對應服務器 ID:

4. Web 開啟慢查詢監控

七、工具組件監控(大表、命中率、連接數)

# 監控機 crontab
*/30 * * * * cd /usr/local/mysqlmtop; ./check_mysql_widget_bigtable.py >/dev/null 2>&1
*/1 * * * * cd /usr/local/mysqlmtop; ./check_mysql_widget_hit_rate.py >/dev/null 2>&1
*/1 * * * * cd /usr/local/mysqlmtop; ./check_mysql_widget_connect.py >/dev/null 2>&1

八、OS 資源監控(SNMP)

1. 被監控機安裝 Net-SNMP 5.3.2

wget ftp://ftp.fi.freebsd.org/pub/FreeBSD/ports/distfiles/net-snmp-5.3.2.tar.gz
tar xvzf net-snmp-5.3.2.tar.gz && cd net-snmp-5.3.2
./configure --prefix=/usr/local/snmp --enable-mfd-rewrites --with-default-snmp-version="2" \
  --with-sys-contact="lovezym5@qq.com" --with-sys-location="China" \
  --with-logfile="/var/log/snmpd.log" --with-persistent-directory="/var/net-snmp"
make && make install
cp EXAMPLE.conf /usr/local/snmp/share/snmp/snmpd.conf
vim /usr/local/snmp/share/snmp/snmpd.conf
# 關鍵配置:
com2sec notConfigUser 172.18.35.29 mysqlmtop
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view all included .1 80
access notConfigGroup "" any noauth exact all none none
/usr/local/snmp/sbin/snmpd -c /usr/local/snmp/share/snmp/snmpd.conf

2. 監控機安裝 Net-SNMP 並配置采集腳本

# 安裝同被監控機
ln -s /usr/local/snmp/bin/snmpwalk /usr/bin/snmpwalk
ln -s /usr/local/snmp/bin/snmpdf /usr/bin/snmpdf
vim /usr/local/mysqlmtop/check_linux_resource.sh  # 配置 DB 連接、目標 IP
vim /usr/local/mysqlmtop/etc/config.ini
[linux_server]
server_ip="10.160.22.14|10.160.22.47"
mtopctl stop && mtopctl start

# 修正內存獲取邏輯
vim /usr/local/mysqlmtop/check_linux_resource.sh
totalmem=`/usr/bin/snmpdf -v1 -c mysqlmtop ${ip} | awk '/Real Memory/ {print $3}'`
usedmem=`/usr/bin/snmpdf -v1 -c mysqlmtop ${ip} | awk '/Real Memory/ {print $4}'`

# crontab
*/1 * * * * cd /usr/local/mysqlmtop; ./check_linux_resource.py >/dev/null 2>&1

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved