1. 程式人生 > >Centos6.10下Open-falcon學習記錄(二)——Mysql監控

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”的錯誤,所以我註釋掉了,詳見我這篇博文

Mysql監控元件mymon報錯“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不匹配,摸索過程見我另一篇博文

Mysql監控元件mymon報錯“NewMySQLConnection Error: Building mysql connection failed!: unexpected EOF”問題

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

等一會,喝喝茶聊聊天,這個資料就出來了

隨便再看一個

湊合吧,研究了一週,實在不想繼續看這個元件了