===============================================html
2019/4/28_第1次修改 ccb_warlock前端
更新說明:python
2019/4/29:調整防火牆的配置內容mysql
===============================================linux
距離上次整理open-falcon的部署手冊(http://www.javashuo.com/article/p-bgsnfzdw-ek.html)已經一年多了,當時纔剛接觸linux,不少東西整理的並非很合理(好比一些操做的描述),一些部署的內容也不是很嚴謹(好比如何實現開機自啓)。git
正好最近在作監控系統的選型,open-falcon又被我拿出來做爲試驗的目標。介於後來0.2.1與0.2.0的一些部署上的差別,我決定從新針對0.2.1整理一份部署手冊,供路人一塊兒參考。github
因爲新文檔變動了以前文檔的一些部署路徑及配置內容,建議基礎能力還不是很強的同窗能夠忽略我17年整理的0.2.0版本的部署手冊,直接看這份手冊。golang
部署一套系統以前,首先關注整個架構,這裏直接把官方的圖盜過來。redis
操做系統:centos 7.6(www.centos.org算法
虛擬機IP:192.168.12.55
# 爲了方即可以選擇直接關閉防火牆
systemctl stop firewalld
systemctl disable firewalld
固然若是你須要開啓防火牆,那麼開放幾個業務上須要開放的端口。
服務模塊 | 功能 | 端口 |
hbs | 鏈接全部agent的心跳服務 | 6030 |
transfer | 接收agent發送的監控數據 | 8433 |
dashboard | 頁面 | 8081 |
firewall-cmd --add-port=6030/tcp --permanent firewall-cmd --add-port=8433/tcp --permanent firewall-cmd --add-port=8081/tcp --permanent
firewall-cmd --reload
yum install -y wget vim
yum install -y git
安裝結束後,確認是否知足官方要求的Git >= 1.7.5
git version
# 經過fedora的epel倉庫來安裝golang
yum install -y epel-release
yum install -y golang
安裝結束後,確認是否知足官方要求的Go >= 1.6
go version
# 經過fedora的epel倉庫來安裝redis
yum install -y epel-release
yum install -y redis
systemctl start redis
systemctl enable redis
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install -y mysql-server
systemctl start mysql
PS.經過這種方式的mysql是默認開機啓動的。
export GOROOT=/usr/lib/golang
export GOPATH=/opt/git
mkdir -p $GOPATH/src/github.com/open-falcon
cd $GOPATH/src/github.com/open-falcon
git clone https://github.com/open-falcon/falcon-plus.git
PS.經過git clone常常龜速,因此能夠經過本地獲取源碼後,將源碼文件上傳到/opt/git/src/github.com/open-falcon/falcon-plus目錄下。
cd $GOPATH/src/github.com/open-falcon/falcon-plus/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
PS.在運行「mysql -h..................」時會提示「Enter password」,若是mysql的root沒有設置密碼,回車便可。
cd $GOPATH/src/github.com/open-falcon/falcon-plus
make all
PS.17年部署0.2.0時還須要手動獲取rrdtool工具包,如今(19年)的版本(0.2.1)試下來已經不用了.
make pack
打包完成後,/opt/git/src/github.com/open-falcon/falcon-plus/目錄下多了剛纔打的壓縮包「open-falcon-v0.2.1.tar.gz」(由於整理手冊的時候版本已經到了0.2.1)。
v0.2後端分爲下面幾個服務模塊:
功能 | |
---|---|
alarm | alarm模塊是處理報警event的,judge產生的報警event寫入redis,alarm從redis讀取處理,並進行不一樣渠道的發送。 |
agent | agent用於採集機器負載監控指標,好比cpu.idle、load.1min、disk.io.util等等,每隔60秒push給Transfer。agent與Transfer創建了長鏈接,數據發送速度比較快,agent提供了一個http接口/v1/push用於接收用戶手工push的一些數據,而後經過長鏈接迅速轉發給Transfer |
aggregator | 集羣聚合模塊。聚合某集羣下的全部機器的某個指標的值,提供一種集羣視角的監控體驗。 |
api | api模塊提供統一的restAPI操做接口。好比:api組件接收查詢請求,根據一致性哈希算法去相應的graph實例查詢不一樣metric的數據,而後彙總拿到的數據,最後統一返回給用戶。 |
gateway | 沒有遇到機房分區問題,能夠忽略此模塊。 |
graph | graph是存儲繪圖數據的組件。graph組件 接收transfer組件推送上來的監控數據,同時處理api組件的查詢請求、返回繪圖數據。 |
hbs | HBS(Heartbeat Server)心跳服務器,公司全部agent都會連到HBS,每分鐘發一次心跳請求。 |
judge | 用於告警判斷,agent將數據push給Transfer,Transfer不但會轉發給Graph組件來繪圖,還會轉發給Judge用於判斷是否觸發告警。 |
nodata | nodata用於檢測監控數據的上報異常。nodata和實時報警judge模塊協同工做,過程爲: 配置了nodata的採集項超時未上報數據,nodata生成一條默認的模擬數據;用戶配置相應的報警策略,收到mock數據就產生報警。採集項上報異常檢測,做爲judge模塊的一個必要補充,可以使judge的實時報警功能更加可靠、完善。 |
task | task是監控系統一個必要的輔助模塊。定時任務,實現了以下幾個功能:index更新(包括圖表索引的全量更新 和 垃圾索引清理)、falcon服務組件的自身狀態數據採集(採集了transfer、graph、task這三個服務的內部狀態數據)、falcon自檢控任務 |
transfer | 數據轉發服務。它接收agent上報的數據,而後按照哈希規則進行數據分片、並將分片後的數據分別push給graph&judge等組件。 |
export BACKSPACE=/opt/open-falcon/back
mkdir -p $BACKSPACE
cd $GOPATH/src/github.com/open-falcon/falcon-plus
tar -xzvf open-falcon-v0.2.1.tar.gz -C $BACKSPACE
根據本教程的配置,須要修改模塊以下:
配置文件所在路徑 | |
---|---|
aggregator | /opt/open-falcon/back/aggregator/config/cfg.json |
graph | /opt/open-falcon/back/graph/config/cfg.json |
hbs | /opt/open-falcon/back/hbs/config/cfg.json |
nodata | /opt/open-falcon/back/nodata/config/cfg.json |
api | /opt/open-falcon/back/api/config/cfg.json |
alarm | /opt/open-falcon/back/alarm/config/cfg.json |
vim /opt/open-falcon/back/aggregator/config/cfg.json
PS.我部署mysql的root密碼爲空,因此不須要填「password」;若mysql的root密碼不爲空,則用root密碼替換「password」。
vim /opt/open-falcon/back/graph/config/cfg.json
PS.我部署mysql的root密碼爲空,因此不須要填「password」;若mysql的root密碼不爲空,則用root密碼替換「password」。
vim /opt/open-falcon/back/hbs/config/cfg.json
PS.我部署mysql的root密碼爲空,因此不須要填「password」;若mysql的root密碼不爲空,則用root密碼替換「password」。
vim /opt/open-falcon/back/nodata/config/cfg.json
PS.我部署mysql的root密碼爲空,因此不須要填「password」;若mysql的root密碼不爲空,則用root密碼替換「password」。
vim /opt/open-falcon/back/api/config/cfg.json
PS.我部署mysql的root密碼爲空,因此不須要填「password」;若mysql的root密碼不爲空,則用root密碼替換「password」。
vim /opt/open-falcon/back/alarm/config/cfg.json
PS.我部署mysql的root密碼爲空,因此不須要填「password」;若mysql的root密碼不爲空,則用root密碼替換「password」。
cd /opt/open-falcon/back
./open-falcon start
請參考「4、設置開機啓動」。
open-falcon還提供了下面這些命令:
cd /opt/open-falcon/back
./open-falcon check
cd /opt/open-falcon/back
./open-falcon stop
cd /opt/open-falcon/back
./open-falcon start alarm
cd /opt/open-falcon/back
./open-falcon stop alarm
cd /opt/open-falcon/back
./open-falcon restart alarm
#
export FRONTSPACE=/opt/open-falcon/front
mkdir -p $FRONTSPACE
cd $FRONTSPACE git clone https://github.com/open-falcon/dashboard.git
PS.經過git clone常常龜速,因此能夠經過本地獲取源碼後,將源碼文件上傳到/opt/open-falcon/front/dashboard目錄下。
yum install -y python-virtualenv yum install -y python-devel yum install -y openldap-devel yum install -y mysql-devel yum groupinstall -y "Development tools"
cd $FRONTSPACE/dashboard virtualenv ./env
./env/bin/pip install -r pip_requirements.txt
PS.官方教程中使用了下面的命令安裝依賴包(指定了安裝包的源地址)
./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple
根據本教程的配置,dashboard的配置文件在/opt/open-falcon/front/dashboard/rrd/config.py
爬坑點:
本來不接入LDAP、數據庫root帳號密碼爲空不須要修改配置,可是官方給出的配置文件在這裏留了一個坑:PORTAL_DB的用戶名/密碼初始爲falcon/falcon。
這個坑最終會致使dashboard登陸後的「HostGroups」、「Templates」、「Expressions」、「Nodata」,下面提供解決方案,也就是將錯誤的初始配置改過來。
vim /opt/open-falcon/front/dashboard/rrd/config.py +33
將portal的數據庫用戶名改成root,密碼改成空,wq保存。
cd $FRONTSPACE/dashboard bash control start
cd /opt/open-falcon/front/dashboard
bash control status
cd /opt/open-falcon/front/dashboard
bash control stop
cd /opt/open-falcon/front/dashboard
./env/bin/python wsgi.py
因爲open-falcon沒有service實現開機啓動,因此須要額外找方案來解決這個問題。
這裏提供一套方案:經過進程守護服務(Supervisor)實現open-falcon的開機啓動。
yum install -y python-setuptools
easy_install supervisor
mkdir -p /etc/supervisor/conf.d
echo_supervisord_conf > /etc/supervisor/supervisord.conf
vim /etc/supervisor/supervisord.conf
將下面的內容添加到supervisord.conf內,wq保存。
[include]
files = conf.d/*.conf
mkdir -p /opt/sh
vim /opt/sh/open-falcon-startup.sh
將下面的內容添加到open-falcon-startup.sh內,wq保存。
#!/bin/bash sleep 30s && /opt/open-falcon/back/open-falcon start
PS.引入啓動腳本(延遲30s啓動)的緣由:在open-falcon啓動時,mysql沒有啓動完成,將會致使部分服務啓動失敗,而supervisord又檢測不到open-falcon每一個服務的進程,結果致使open-falcon部分服務(aggregator、agent、gateway、api、alarm)啓動失敗。
vim /etc/supervisor/conf.d/open-falcon-back.conf
將下面的內容添加到open-falcon-back.conf內,wq保存。
[program:open-falcon-back] command=/bin/bash /opt/sh/open-falcon-startup.sh ;運行程序的命令 directory=/opt/open-falcon/back ;命令執行的目錄 user=root ; 進程執行的用戶身份 autostart=true ;在supervisord啓動時運行該程序 autorestart=true ;程序異常退出後自動重啓 stdout_logfile=/var/log/open-falcon-back.out.log ;輸出日誌文件 stdout_logfile_maxbytes=10MB ;輸出日誌文件大小(10MB) stdout_logfile_backups=5 ;輸出日誌文件備份數 stderr_logfile=/var/log/open-falcon-back.err.log ;錯誤日誌文件 stderr_logfile_maxbytes=10MB ;錯誤日誌文件大小(10MB) stderr_logfile_backups=5 ;錯誤日誌文件備份數
vim /etc/supervisor/conf.d/open-falcon-front.conf
將下面的內容添加到open-falcon-front.conf內,wq保存。
[program:open-falcon-front] command=/bin/bash /opt/open-falcon/front/dashboard/control start ;運行程序的命令 directory=/opt/open-falcon/front/dashboard ;命令執行的目錄 user=root ; 進程執行的用戶身份 autostart=true ;在supervisord啓動時運行該程序 autorestart=true ;程序異常退出後自動重啓 stdout_logfile=/var/log/open-falcon-front.out.log ;輸出日誌文件 stdout_logfile_maxbytes=10MB ;輸出日誌文件大小 stdout_logfile_backups=5 ;輸出日誌文件備份數 stderr_logfile=/var/log/open-falcon-front.err.log ;錯誤日誌文件 stderr_logfile_maxbytes=10MB ;錯誤日誌文件大小 stderr_logfile_backups=5 ;錯誤日誌文件備份數
vim /usr/lib/systemd/system/supervisord.service
將下面的內容添加到supervisord.service內,wq保存。
[Unit] Description=Supervisor [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
systemctl start supervisord
systemctl enable supervisord
supervisorctl status
dashboard沒有默認建立任何帳號(包括管理員帳號),須要經過頁面進行註冊帳號。
註冊用戶名爲root的帳號(第一個賬號名稱爲root的用戶,會被自動設置爲超級管理員)。
註冊帳號可以被任何打開dashboard頁面的人註冊,有時候咱們不容許任何人均可以隨便訪問監控數據。因此當建立完root帳號(系統管理員)後,能夠關閉註冊帳號功能。沒有接入LDAP的話,能夠經過root帳號增長用戶帳號。
配置文件所在路徑 | |
---|---|
api | /opt/open-falcon/back/api/config/cfg.json |
vim /opt/open-falcon/back/api/config/cfg.json
將signup_disable配置項修改成true,wq保存。
cd /opt/open-falcon/back
./open-falcon restart api
沒有接入LDAP,不容許用戶隨意建立帳號登陸,讓管理員用root帳號建立用戶帳號;
接入LDAP,直接使用LDAP帳號登陸;
1.https://book.open-falcon.org/zh_0_2/quick_install/index.html