︿
Top

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: &nbsp;# of questions:
LegendOMySQL: &nbsp;# 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 ".    //修改後(絕對路徑)
文章標籤: