Centos6.10下Open-falcon學習記錄(二)——Mysql監控
記錄了學習過程,官方文件地址http://book.open-falcon.org/zh_0_2/usage/getting-started.html
另外還看了Open-falcon作者的寫的設計理念的文,見open-falcon編寫的整個腦洞歷程
1 Mysql監控
通過mymon(MySQL-Monitor)監控Mysql,mymon是一個cron,cron呢,根據百度百科的解釋是“任務在約定的時間執行已經計劃好的工作”,差不多就是定時任務,還記得Linux中的命令crontab嘛
1.1 mymon安裝
這裡需要使用go get,所以要設定好$GOPATH和$GOROOT兩個環境變數,程式碼有一個地方會導致“NewMySQLConnection Error: Building mysql connection failed!: unexpected EOF”的錯誤,所以我註釋掉了,詳見我這篇博文
export GOPATH=~/mygo #設定GOPATH,這裡就是mymon程式碼存放的位置 export GOROOT=/usr/local/go #設定GOROOT,是go的安裝路徑 #安裝mymon go get github.com/open-falcon/mymon #成功後目錄應為$GOPATH/src/github.com/open-falcon/mymon cd $GOPATH/src/github.com/open-falcon/mymon
執行go get會有警告,什麼undefined: Version之類的,不用管
修改配置檔案etc/myMon.cfg,把資料庫配好,如果喜歡的話可以一併配好endpoint那一項,然後make並執行
make
./mymon etc/Mymon.cfg
如果你成功運行了,恭喜你,可以跳過下面的修改,如果你和我一樣碰到了這種錯誤“NewMySQLConnection Error: Building mysql connection failed!: unexpected EOF”
這個錯誤我將近研究了一週的時間,終於摸索出了一些,主要是mymon這個版本使用的Mysql驅動和我的Mysql不匹配,摸索過程見我另一篇博文
1.2 程式碼修改
如果你運行了沒問題,跳過這一部分
首先把vendor目錄下那個mymysql替換為最新的版本
cd ~
sudo rm -r $GOPATH/src/github.com/open-falcon/mymon/vendor/github.com/ziutek/mymysql/native $GOPATH/src/github.com/open-falcon/mymon/vendor/github.com/ziutek/mymysql/mysql
git clone git clone https://github.com/ziutek/mymysql.git
cp -r mymysql/native $GOPATH/src/github.com/open-falcon/mymon/vendor/github.com/ziutek/mymysql/native
cp -r mymysql/mysql $GOPATH/src/github.com/open-falcon/mymon/vendor/github.com/ziutek/mymysql/mysqlcd $GOPATH/src/github.com/open-falcon/mymon
然後把show.go的181行修改一下
#修改前
row, _, err = db.QueryFirst("SELECT /*!50504 @@GLOBAL.innodb_stats_on_metadata */;")
#修改後
row, _, err = db.QueryFirst("SELECT /*!50504 */ @@GLOBAL.innodb_stats_on_metadata;")
編譯執行
make && ./mymon etc/myMon.cfg #編譯執行
看一眼myMon.log,如果出現“You are not using binary logging”,說明你的Mysql沒有開binlog
修改一下show.go的82-84行
#修改前
if err != nil {
return []*MetaData{binlogFileCounts, binlogFileSize}, err
}
#修改後
if err != nil {
Log.Warning("Binary Log is not used")
} else {
data = append(data, binaryLogStatus...)
}
再次編譯執行
make && ./mymon etc/myMon.cfg #編譯執行
去dashboard看一眼,如果etc/myMon.cfg配置了endpoint就會出現一個新主機,沒有的話可能是一個以系統hostname命名的endpoint,Counter裡面找一個mysql_alive_local的
拉出資料看看,有一個值為1的小點點
現在把mymon加入到crontab裡,目錄最好寫絕對路徑不要帶$GOPATH
crontab -e
#寫入* * * * * cd /home/tuan/mygo/src/github.com/open-falcon/mymon && ./mymon -c etc/myMon.cfg
等一會,喝喝茶聊聊天,這個資料就出來了
隨便再看一個
湊合吧,研究了一週,實在不想繼續看這個元件了