收到新的任務研究一下 open-falcon 監控公司的服務器指標玩玩。說實話如今連要重視哪些監控指標都不知道,但在
open-falcon 中文介紹 中,就安裝這一塊,踩的坑實在好多,因此有必要寫篇文章記一下。
這篇文章主要包括:html
如何搭一個虛擬的 linux 服務器和相關配置python
按照官方的中文介紹安裝,會踩到哪些坑。mysql
目標只有一個:儘快跑起來。linux
筆者最終選擇的是 ubuntu-server 16.04 LTS 64bit。基於這款服務器,許多安裝指令和介紹中不同。具體包括git
yum 替換爲 apt-getgithub
mysql-devel 替換爲 libmysqld-dev,libmysqlclient-devgolang
等。而且 ubuntu 的源須要配置。筆者配置的是阿里雲的ubuntu 16.04 源,參考 ubuntu 16.04 國內快速更新源
這裏有幾點須要注意。redis
open-falcon 須要 64 位的操做系統以實現快速安裝,即使是源碼安裝也須要你手動調整命令區別。非熟悉者別擅自嘗試。sql
儘可能別選擇 desktop 的操做系統。卡的要死。shell
安裝以前會有一坨提示,別隨便從電腦前走開。會問你要不要安裝一些網絡服務包,記得 openssh 要裝,到時用什麼 Xshell 啊,Powershell 啊去遠程鏈接,支持文本複製到命令行和 vim 什麼的仍是很好的。固然了你到時手動裝也行。
虛擬機選擇的是Virtual Box for Windows。分配了 2G 內存和 8G 硬盤(應該夠用了吧 QAQ )。第一次啓動會提示你裝載ISO。以後須要配置設備-網絡-高級-端口轉發。以及可能須要從主機傳文件過去,一會講。
從 VirtualBox 中配置 ssh 的 22 端口轉發。記得在主機網絡鏈接裏查看主機網絡,在虛擬機中使用 ifconfig 等命令查看子系統網絡。顯示命令不存在的話是缺相應的包了。若是子系統網絡只有 ipv6 的話。。我還真不知道怎麼辦。估計本身用 ifconfig 命令重設一下 ipv4 地址?
這裏說一下我一開始爲了適配 yum 命令,選擇的是 CentOS 7 Minimal ISO。這貨下載快安裝也快,但進去以後要本身配虛擬網卡。勾選什麼的用空格。還有配網卡以前不推薦參見某些教程手撕 eth0 配置文件,網卡壞了改都改不過來。
默認的網卡名稱還不是 eth0,而是enp0s3 ,彷佛是 ipv6 鏈接的,這個會在以後端口轉發的時候有影響。
不過最慘的坑仍是CentOS 7 沒有 mysql,excuse me? 啊好吧是被換成了徹底向前兼容的子項目 mariadb 不過既然兼容 mysql 命令就先用上吧。
在安完數據庫以後照常進行配置數據庫遠程訪問以經過數據庫管理軟件諸如 Navicat (注:不便宜)進行訪問。可是在配置完成以後會發現報錯:
SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet', system error: 0
/(ㄒoㄒ)/~~
搜這個問題會有一些提示你在 mysql 的配置文件 my.inf
或 my.ini
當中在 [mysqld] 配置項加上
skip-name-resolve 的,有讓你刪掉 bind-address=127.0.0.1 的(這個的確是必要的),還有讓你重啓數據庫鏈接的?_?。
照作的時候發現問題了。mariadb 的配置文件是採用導入別的文件夾裏的配置的方式的。因爲水平所限不瞭解 mysql 配置體系,因而這個坑回來再填。
若是有小夥伴知道這裏怎麼解決還請賜教。
只好棄坑 mariadb 去從新用了 ubuntu server。到這裏其實半天已經沒了 QAQ。
redis 不必定存在這個包,能夠嘗試換成 redis-server。
建立工做目錄恐怕是必要的,保不許到時候那些腳本會不會直接調用這個 export 變量。
配置 mysql 若是要用遠程鏈接記得去配置項裏面把 bind-address 這一行註釋掉,不然不能遠程訪問的。
準備環境裏有要求下載已經編譯好的 of-release-v0.1.0.tar
組件的,這地方就有坑了。從 github 下載這個包的確巨慢,只好本身手配主機到虛擬機的傳送環境。一共是三種方法:
其中第一個須要 VirtualBox 的加強功能,我在 windows 上面由於缺乏安裝盤報了錯;第二個未驗證;第三個記得配置服務器的讀寫權限。
不厭其煩地提醒一下下好了以後解壓,命令循環解壓,若不是 root 用戶,是須要 sudo 的。安裝好以後你的文件夾裏應該是這個狀態:
接下來就是逐個根據教程安裝服務了。
在繪圖組件當中,graph 組件是要鏈接數據庫的,而且設置 root 的密碼爲空的鏈接會失敗。表現爲查看./control tail
時會發現啓動失敗,報了Access Denied for root@localhost 的相似錯誤。但比較坑的是在啓動的時候咋不給我報出來呢,啓動顯示成功查進程查不到看 log 又只有這麼點信息,由於對 golang 不熟也沒能跟蹤緣由具體是啥。查看 mysql 的 user 表會發現無密碼的登陸方式是 plugin:auth_socket,而其餘的是 mysql_native_password + authentication_string。至此萌比。
總之我是修改用戶密碼來解決問題的,爲此要變動$WORKPLACE/graph/cfg.json
:
"db": { "dsn": "root:yourpassword@tcp(127.0.0.1:3306)/graph?loc=Local&parseTime=true", "maxIdle": 4 },
一改這個配置其餘服務組件全都要改,其實這並非個優雅的解決方案。
若是有小夥伴瞭解爲什麼不用密碼鏈接會失敗,好比看個源碼啥的,請告訴我謝謝。(我可能之後會補。)
dashboard 組件是基於 python virtualenv 去搭建的。mysql-devel 會被替換爲 libmysqld-dev,除此以外還須要安裝 python-dev/python2.7-dev(取決於你的版本,應該知道 python 2 和 python 3 有很大不兼容性。),不然下一步 pip install requirements 的時候就會發現沒有 gcc 去編譯一些依賴包。
完事以後把服務一個個啓動起來就好了。查 log 的時候會報錯此時還正常,畢竟告警組件還有一堆沒安裝。
啓動以後打開錶盤,左邊輸入你的服務器機器名(ubuntu),左邊找出來以後再到右邊點查找。screen 裏面是空的應該沒有各類統計指標啥的。不要嚇着恩。
就先寫到這裏。接下來會有關於告警組件的坑,還有業務相關什麼的。