Centos6.10下Open-falcon的分散式安裝(虛擬機器偽分散式)和前端介面安裝
官方文件地址,還在開發階段,文件部分有點亂
https://book.open-falcon.org/zh_0_2/distributed_install/
偽分散式安裝,只有一臺虛擬機器,重在學習每個元件
1 環境準備
1.1 配置epel源
必備操作,很多軟體官方源沒有
sudo yum install -y epel-release
1.2 Redis安裝與啟動
sudo yum install -y redis
現在來建立一份自己的配置,官方的配置放在/etc/redis.conf,複製到自己喜歡的目錄
sudo mkdir /etc/redis sudo cp /etc/redis.conf /etc/redis/6379.conf
修改/etc/init.d/redis檔案,把配置的目錄REDIS_CONFIG這一項換成自己的配置檔案,然後啟動
sudo /etc/init.d/redis start
檢視一下日誌,預設目錄在/var/log/redis/redis.log,看到下面的資訊就算成功
1.3 Mysql安裝與啟動
我們用的是MariaDB,需要先解除安裝Mysql相關,再按照官網的安裝方法,在下面的頁面選擇自己的作業系統,然後新建/etc/yum.repos.d/MariaDB.repo檔案,把庫資訊填寫完畢儲存
MariaDB我沒有安裝最新版,10.3版在裝dashboard的時候,會裝不上mysql-python這個模組,提示‘MYSQL’ has no member named ‘reconnect’錯誤,所以我裝了個10.0版
sudo yum remove -y mysql* sudo vim /etc/yum.repos.d/MariaDB.repo #填寫下面的文字 #[mariadb] #name = MariaDB #baseurl = http://yum.mariadb.org/10.0/centos6-x86 #gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB #gpgcheck=1 sudo yum -y install MariaDB-server MariaDB-devel sudo service mysql start #啟動
mysql預設的root使用者沒有密碼,修改一下
sudo mysqladmin -u root password "這裡寫你的密碼"
1.4 Go安裝
cd ~
wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.11.linux-amd64.tar.gz
echo "PATH=$PATH:/usr/local/go/bin" >> .bashrc
source .bashrc
go //測試,看到幫助資訊輸出就算安裝成功
rm go1.11.linux-amd64.tar.gz
#設定一下GOROOT和GOPATH
vim ~/.bashrc
#新增
export GOROOT=/usr/local/go #go預設安裝在這個目錄
export GOPATH=/home/tuan/mygo #這個可以隨便你喜好設定,go的工作目錄
source .bashrc
1.5 Git安裝
新機器啥都沒有
sudo yum install -y git
1.6 GCC安裝
sudo yum install -y gcc
2 Open-falcon編譯
一共需要編譯三個個模組,主模組(對應falcon-plus,包括agent、judge、graph、transfer等大部分模組)、task模組(貌似可選)和agent-updater(管理agent版本的元件,可選)
2.1 falcon-plus編譯
我用了go get工具,第一次接觸go語言專案的時候還不理解為什麼要用這種src/github.com/open-falcon的目錄結構,原來是為了go get
go get github.com/open-falcon/falcon-plus #會在$GOPATH/src目錄下建立相應的目錄
cd $GOPATH/src/github.com/open-falcon/falcon-plus
make all
make pack
mkdir ~/open-falcon //建立工作目錄
tar -xzf open-falcon-v0.2.1.tar.gz -C ~/open-falcon //解壓到工作目錄,你要部署到哪裡就把這個包解壓到哪裡
順便初始化一個Mysql表結構,每次都會讓你輸入root使用者的密碼
cd scripts/mysql/db_schema/
mysql -h 127.0.0.1 -u root -p < 1_uic-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 2_portal-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 3_dashboard-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 4_graph-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 5_alarms-db-schema.sql
2.2 task編譯
編輯好之後的壓縮包就可以拿去部署了
go get https://github.com/open-falcon/task
go get https://github.com/open-falcon/common
cd $GOPATH/src/github.com/open-falcon/task
./control build
./control pack
mkdir ~/open-falcon/task //建立工作目錄
tar -xzf falcon-task-0.0.10.tar.gz -C ~/open-falcon/task //解壓到工作目錄
3 部署
cd ~/open-falcon
3.1 Agent
agent用於採集機器負載監控指標,隔60秒push給Transfer,每個元件的啟動、查詢指令都很類似
另外安裝了Agent的機器要開放1988埠,用於web頁面監控使用
#開放1988埠
sudo vi /etc/sysconfig/iptables
#在開放22埠的下一行新增如下規則
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 1988 -j ACCEPT
sudo service iptables restart
./open-falcon start agent #啟動agent
./open-falcon monitor agent #檢視日誌
./falcon-agent --check #檢視agent狀態
這個時候日誌是會報錯的,因為hbs這個元件還沒啟動,連線不上
3.2 Transfer
transfer負責資料轉發,把agent上報的資料按照雜湊規則進行分片,然後push給graph和judge等元件
./open-falcon start transfer
3.3 Graph
負責儲存繪圖資料,也處理api元件的查詢請求,返回繪圖資料
顯然他是要配置一下資料庫密碼的
./open-falcon start graph
3.4 API
提供統一的restAPI操作介面,也要修改配置檔案配置資料庫密碼
./open-falcon start api
3.5 Heartbeat Server
所有agent每分鐘向該伺服器傳送一次心跳資訊,同時上報hostname、ip、agent version、plugin等資料,HBS負責更新host表
HBS還從資料庫獲取所有報警策略,存在記憶體裡,Judge元件再從HBS獲取所有報警策略,這樣可以減少Judge元件對資料庫的訪問,減少資料庫壓力
這裡要修改一下配置檔案,配置一下資料庫的東西
#這一項的root和password改成資料庫的使用者名稱和密碼
"database": "root:[email protected](127.0.0.1:3306)/falcon_portal?loc=Local&parseTime=true", # Portal的資料庫地址
./open-falcon start hbs
3.6 Judge
告警預判,Transfer傳遞的資料通過一致性雜湊分片,傳給不同judge,每個judge的壓力不會過大
./open-falcon start judge
3.7 Alarm
處理報警event,judge產生的報警event寫入redis,alarm從redis讀取處理
已經發送的告警資訊會寫入MySQL儲存,所以alram當然也是需要配置資料庫密碼的
因為alarm對優先順序低的報警進行了報警合併,所以alarm是個單點
./open-falcon start alarm
3.8 Nodata
檢測監控資料的上報異常,輔助judge工作,要配置資料庫密碼
./open-falcon start nodata
3.9 Aggregator
叢集聚合
這個也需要修改配置檔案裡面的資料庫資訊
./open-falcon start aggregator
3.10 DashBoard
這一步要求python2.7,然而Centos6.10自帶python2.6,同時yum還是依賴python2.6的
首先把python2.6的備份為python_yum,然後開啟yum指令碼,讓其使用python2.6的直譯器
在我的系統上,/usr/bin下有python2.6的目錄,/usr/bin/python連線到這個目錄上
直接開啟yum指令碼,修改第一行為python_yum
sudo vim /usr/bin/yum
#修改第一行為#!/usr/bin/python-yum
sudo cp /usr/bin/python2.6 /usr/bin/python-yum
現在開始安裝python2.7,用的這篇部落格裡的原始碼編譯安裝https://blog.csdn.net/LoveCarpenter/article/details/74011641
#安裝依賴
sudo yum install -y zlib* openssl openssl-devel sqlite-devel
cd ~
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz
mkdir python
tar -vxzf Python-2.7.15.tgz
cd Python-2.7.15
./configure
vim ./Modules/Setup
#找到#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz這一行,去掉註釋
make
sudo make install
python #測試是否打開了python2.7.15
sudo rm /usr/bin/python
sudo ln -s /usr/local/bin/python /usr/bin/python #建立連結
#清理現場
cd ~
sudo rm -r Python-2.7.15
rm Python-2.7.15.tgz
安裝一下pip
cd ~
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py
rm get-pip.py
然後開始安裝前端
cd ~
git clone https://github.com/open-falcon/dashboard.git
#安裝各種依賴
sudo yum install -y openldap-devel
sudo yum groupinstall "Development tools"
#virtualenv官方使用yum安裝,但是yum安裝的是python2.6的版本,導致python2.7不能用,乾脆用了pip安裝
#安裝python依賴
sudo /usr/local/bin/pip install virtualenv
cd dashboard
virtualenv env
env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple #注意這一步的pip用的是env的pip
修改rrd/config.py,主要修改資料庫的密碼那兩項,分別是PORTAL_DB和ALARM_DB,然後終於可以啟動,需要暴露8081埠,修改一下防火牆設定
#開放8081埠
sudo vi /etc/sysconfig/iptables
#在開放22埠的下一行新增如下規則
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 8081 -j ACCEPT
sudo service iptables restart
#開啟前端服務,以下兩種啟動方法
.env/bin/python wsgi.py
bash control start #生產模式
然後開心地開啟瀏覽器,輸入https://ip:8081,結果
看一下輸出資訊
換成了http://ip:8081就可以開啟頁面
註冊,第一個註冊名為root的人就是管理員……進去一看UI,這個UI為何如此簡潔
我嘗試了QQ瀏覽器、火狐瀏覽器和IE瀏覽器,除了火狐瀏覽器其他渲染出來的畫面都是這麼極簡主義
火狐的倒是蠻好看的
3.11 Task
定時任務,負責index更新(圖表索引的全量更新和垃圾索引清理,暫時不理解)、falcon元件狀態資料採集和falcon自檢
cd ~/task
cp cfg.example.json cfg.json #配置檔案必須名為cfg.json
vim cfg.json #修改資料庫的密碼
bash control start #啟動服務
#開啟一下防火牆的8002埠
sudo vi /etc/sysconfig/iptables
#在開放22埠的下一行新增如下規則
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 8002 -j ACCEPT
sudo service iptables restart
可以用瀏覽器訪問一下http://ip地址:8002/health,可以看到下面這種簡潔大氣的介面
3.12 Agent-updater
管理客戶端的版本
go get github.com/open-falcon/ops-updater
4 啟停
#!/bin/bash
#啟動redis
sudo /etc/init.d/redis start
#啟動mysql
sudo /etc/init.d/mysql start #如果用的是mysql,啟動mysqld
#啟動open-falcon
cd ~/open-falcon
./open-falcon start agent
./open-falcon start transfer
./open-falcon start graph
./open-falcon start api
./open-falcon start hbs
./open-falcon start judge
./open-falcon start alarm
./open-falcon start nodata
./open-falcon start aggregator
#啟動task
cd ~/task
bash control start
#啟動dashboard
cd ~/dashboard
bash control start
5 簡單主機監控
http://IP地址:8081,開啟後可以看到一個登陸介面,先註冊一個名為root的root賬戶,然後登陸
登陸後點擊HostGroups,開始新增主機組,點選右邊那個“+”號新增,名字隨便起
然後點選operation那裡的hosts,開始新增主機,輸入IP地址,點選Add Host即可
新增完成點選Back返回,直接點選hostname,就可以跳轉到主機監控頁面
6 後續
請參考本人其他關於Open-falcon的博文
Centos6.10下Open-falcon微信、郵件告警安裝、配置及使用
Centos6.10下Open-falcon學習記錄(零)——主機監控、Nodata元件、叢集監控
Centos6.10下Open-falcon學習記錄(一)——自定義資料採集、歷史查詢、程序監控