記錄了學習過程,官方文檔位址http://book.open-falcon.org/zh_0_2/usage/getting-started.html
另外還看了Open-falcon作者的寫的設計理念的文,見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之類的,不用管
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9UlMaxmVIVmb1cVWwBnMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TO4UDNxYTN5AzNykDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
修改配置檔案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
等一會,喝喝茶聊聊天,這個資料就出來了
随便再看一個
湊合吧,研究了一周,實在不想繼續看這個元件了