1、前言
在開始玩本次實作以前請先確定您的 SNMP 及 MRTG 已安裝並正確定設定,本次實作為利用 MRTG 圖形來了解目前 MySQL Database 負載情況。文章目錄
1、前言2、實作環境
3、安裝及設定
步驟1.安裝 mrtg-mysql-load 套件
步驟2.複製 mrtg-mysql-load 範例檔來修改
步驟3.產生檔案
步驟4.寫入排程
4、參考
5、Me FAQ
Q1.無法抓到統計數值?
2、實作環境
- FreeBSD 6.2-RELEASE-p5
- net-snmp-5.3.1_3
- mrtg-2.15.2,1
- mrtg-mysql-load-1.02_2
- perl, v5.8.8
3、安裝及設定
步驟1.安裝 mrtg-mysql-load 套件
依照如下步驟來安裝 mrtg-mysql-load 套件。# cd /usr/ports/databases/mrtg-mysql-load //切換至安裝路徑
# make install clean //安裝套件並清除暫存檔案
步驟2.複製 mrtg-mysql-load 範例檔來修改
安裝完成後我們可直接複製範例檔案來修改比較快。# cd /usr/local/etc/mrtg //切換至設定檔路徑
# cp mrtg.cfg-mysql-load.example mysql-load.cfg //複製 mrtg mysql load 範例檔
# cp mysql-load-cfg.example mysql-connect-cfg //複製欲連接至 mysql 的範例檔
步驟2-1.mysql-connect-cfg (連接至 MySQL 設定檔)
要抓取 MySQL 的值一定要有存取該 MySQL Database 的帳號、密碼,這個設定檔就是填入一些關於連接 MySQL Database 主機的相關資訊。host=192.168.11.13 //指定 MySQL 主機 IP
port=3306 //指定 MySQL 服務 Port Number
username=mrtgsql //可存取 MySQL 帳號
password=123456 //可存取 MySQL 密碼
logfile=/usr/local/www/data/mrtg/mysql-connect.log //指定 Log 存放處
因此這個檔案有存放連接 MySQL 的敏感資訊,因此要設定一下權限。
# chmod 600 mysql-connect-cfg
步驟2-2.mysql-load.cfg (畫 MRTG 圖設定檔)
本設定檔就是要畫出 MySQL Questions Load (每分鐘對 MySQL 的查詢數量)的 MRTG 設定檔,內容如下:TargetMySQL: `/usr/local/bin/mrtg-mysql-load -c /usr/local/etc/mrtg/mysql-connect-cfg`
OptionsMySQL: growright, perminute, nopercent, integer
MaxBytesMySQL: 200 //流量圖表的最大值
AbsMaxMySQL: 2000 //當每分鐘查詢超過 2000 後便忽略
TitleMySQL: MySQL Load analysis -- www.weithenn.org //網頁的 title
PageTopMySQL: <H1>MySQL Load Analysis -- www.weithenn.org</H1> //網頁標題
YLegendMySQL: Questions //流量圖的 Y 軸顯示名稱
ShortLegendMySQL: 查詢/分
Legend1MySQL: Questions
Legend2MySQL:
Legend3MySQL: Maximal # of questions per min.
Legend4MySQL: Maximal # of slow queries per min.
LegendIMySQL: # of questions:
LegendOMySQL: # of slow queries:
Language:big5 //使用語系
WorkDir:/usr/local/www/data/analysis/mrtg/ //存放產生圖檔的路徑
步驟2-3.修改 mrtg-mysql-load 執行檔內容
因為 mrtg-mysql-load 指令內容中會使用到 mysqladmin 這個指令來存取 MySQL 但此執行檔中未指定絕對路徑 (造成抓取的統計數據都是 0),後來改為絕對路徑後便可順利抓到數值了。# vi /usr/local/bin/mrtg-mysql-load
$cmd = "mysqladmin ". //預設值
$cmd = "/usr/local/bin/mysqladmin ". //修改後(絕對路徑)
步驟3.產生檔案
產生檔案,下列指令執行 2 ~ 3 次到沒錯誤訊息後就代表完成了。# /usr/local/bin/mrtg /usr/local/etc/mrtg/mysql-load.cfg
步驟4.寫入排程
將如下指令寫入排程內以便達成自動產生流量圖表 (每五分鐘執行一次)。# crontab -e
*/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mysql-load.cfg
4、參考
5、Me FAQ
Q1.無法抓到統計數值?
Error Message:當我手動執行指令 /usr/local/bin/mrtg /usr/local/etc/mrtg/mysql-load.cfg 是可抓到統計數值(查看 mysql-connect.log 可知)但編入排程內卻無法統計數值(mysql-connect.log 內容不會更新)。若能正確統計數值,則每次執行完設定檔後都會把數值寫入 mysql-connect.log 內,內容應該會如下所示(我的數值,僅供參考)。
# tail mysql-connect.log
--2007-6-2 18:15:1--
1417523 //統計啟動後, 共有 1,417,523 個查詢傳送到此伺服器
0
4 days 1 hour 16 min 58 sec
MySQL version 5.1.18-beta mrtg-mysql-load v. 1.02
--2007-6-2 18:20:1--
1418820 //統計啟動後, 共有 1,418,820 個查詢傳送到此伺服器
0
4 days 1 hour 21 min 57 sec
MySQL version 5.1.18-beta mrtg-mysql-load v. 1.02
Ans:
因為 mrtg-mysql-load 指令內容中會使用到 mysqladmin 這個指令來存取 MySQL 但此執行檔中未指定絕對路徑,後來改為絕對路徑後便可順利抓到數值了。
# vi /usr/local/bin/mrtg-mysql-load
$cmd = "mysqladmin ". //預設值
$cmd = "/usr/local/bin/mysqladmin ". //修改後(絕對路徑)