centos7 部署 open-falcon 0.2.1


===============================================

2019/4/28_第1次修改                       ccb_warlock

 

更新說明:

2019/4/29:調整防火牆的配置內容

===============================================

距離上次整理open-falcon的部署手冊(https://www.cnblogs.com/straycats/p/7199209.html)已經一年多了,當時才剛接觸linux,很多東西整理的並不是很合理(比如一些操作的描述),一些部署的內容也不是很嚴謹(比如如何實現開機自啟)。

正好最近在做監控系統的選型,open-falcon又被我拿出來作為試驗的目標。介於后來0.2.1與0.2.0的一些部署上的差異,我決定重新針對0.2.1整理一份部署手冊,供路人一起參考。

 

由於新文檔變更了之前文檔的一些部署路徑及配置內容,建議基礎能力還不是很強的同學可以忽略我17年整理的0.2.0版本的部署手冊,直接看這份手冊。

 


部署一套系統之前,首先關注整個架構,這里直接把官方的圖盜過來。

 

 


一、環境准備

操作系統:centos 7.6(www.centos.org下載的包是CentOS-7-x86_64-Minimal-1810.iso)

虛擬機IP:192.168.12.55

 

1.1 配置防火牆

# 為了方便可以選擇直接關閉防火牆

systemctl stop firewalld
systemctl disable firewalld

 

當然如果你需要開啟防火牆,那么開放幾個業務上需要開放的端口。

服務模塊 功能 端口
hbs 連接所有agent的心跳服務 6030
transfer 接收agent發送的監控數據 8433
dashboard 頁面 8081

# 開放端口6030、8433、8081,允許任意IP訪問

firewall-cmd --add-port=6030/tcp --permanent
firewall-cmd --add-port=8433/tcp --permanent
firewall-cmd --add-port=8081/tcp --permanent

# 重新加載防火牆配置

firewall-cmd --reload

 

1.2 安裝wget、vim

yum install -y wget vim

 

1.3 安裝git

yum install -y git

安裝結束后,確認是否滿足官方要求的Git >= 1.7.5

git version

 

1.4 安裝golang

# 通過fedora的epel倉庫來安裝golang

yum install -y epel-release
yum install -y golang

安裝結束后,確認是否滿足官方要求的Go >= 1.6

go version

 

1.5 安裝redis

# 通過fedora的epel倉庫來安裝redis

yum install -y epel-release
yum install -y redis

 

# 啟動、開機啟動redis

systemctl start redis
systemctl enable redis

 

1.6 安裝mysql 5.6

# 獲取repo源

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

 

# 安裝該rpm包

rpm -ivh mysql-community-release-el7-5.noarch.rpm

 

# 安裝mysql

yum install -y mysql-server

 

# 啟動mysql

systemctl start mysql

PS.通過這種方式的mysql是默認開機啟動的。

 

1.7 設置臨時變量(臨時生效的變量,換一個會話(shell終端)這個變量就沒有了)

export GOROOT=/usr/lib/golang
export GOPATH=/opt/git

 

1.8 從github上拉取后端(open-falcon)的源碼

# 創建存放源碼文件的目錄

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目錄下。

 

1.9 初始化數據庫

# 進入目錄

cd $GOPATH/src/github.com/open-falcon/falcon-plus/scripts/mysql/db_schema

 

# 執行5個腳本初始化數據庫

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沒有設置密碼,回車即可。

 

1.10 編譯后端的源碼並打包

# 進入目錄

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)。

 

PS.官方也有提供編譯好的二進制包(https://book.open-falcon.org/zh_0_2/quick_install/prepare.html),如果編譯過程不順利可以直接下載。

 


二、部署后端

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等組件。


2.1 設置臨時變量

# 設置后端工作目錄的環境變量(臨時生效的變量,換一個會話(shell終端)這個變量就沒有了)

export BACKSPACE=/opt/open-falcon/back

 

2.2 創建目錄

# 創建后端工作目錄

mkdir -p $BACKSPACE

 

2.3 解壓包

# 進入目錄

cd $GOPATH/src/github.com/open-falcon/falcon-plus

 

# 將“1.9 編譯源碼並打包”中的“open-falcon-v0.2.1.tar.gz”解壓到后端工作目錄(BACKSPACE)下。

tar -xzvf open-falcon-v0.2.1.tar.gz -C $BACKSPACE

 

2.4 修改配置文件cfg.json

如果需要每個模塊正常啟動,需要將下面每個模塊的cfg.json的數據庫信息進行修改。

根據本教程的配置,需要修改模塊如下:

模塊 配置文件所在路徑
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

 

1)編輯aggregator的配置文件cfg.json

vim /opt/open-falcon/back/aggregator/config/cfg.json

PS.我部署mysql的root密碼為空,所以不需要填“password”;若mysql的root密碼不為空,則用root密碼替換“password”。

 

2)編輯graph的配置文件cfg.json

vim /opt/open-falcon/back/graph/config/cfg.json

PS.我部署mysql的root密碼為空,所以不需要填“password”;若mysql的root密碼不為空,則用root密碼替換“password”。

 

3)編輯hbs的配置文件cfg.json

vim /opt/open-falcon/back/hbs/config/cfg.json

PS.我部署mysql的root密碼為空,所以不需要填“password”;若mysql的root密碼不為空,則用root密碼替換“password”。

 

4)編輯nodata的配置文件cfg.json

vim /opt/open-falcon/back/nodata/config/cfg.json

PS.我部署mysql的root密碼為空,所以不需要填“password”;若mysql的root密碼不為空,則用root密碼替換“password”。

 

5)編輯api的配置文件cfg.json

vim /opt/open-falcon/back/api/config/cfg.json

PS.我部署mysql的root密碼為空,所以不需要填“password”;若mysql的root密碼不為空,則用root密碼替換“password”。

 

6)編輯alarm的配置文件cfg.json

vim /opt/open-falcon/back/alarm/config/cfg.json

PS.我部署mysql的root密碼為空,所以不需要填“password”;若mysql的root密碼不為空,則用root密碼替換“password”。

 

2.5 啟動后端

# 啟動所有模塊

cd /opt/open-falcon/back
./open-falcon start

 

2.6 設置開機啟動

請參考“四、設置開機啟動”。

 

2.7 其他操作命令

open-falcon還提供了下面這些命令:

 

# 檢查所有模塊的啟動情況

cd /opt/open-falcon/back
./open-falcon check

 

# 停止所有模塊

cd /opt/open-falcon/back
./open-falcon stop

 

# 啟動指定的模塊(以alarm模塊為例)

cd /opt/open-falcon/back
./open-falcon start alarm

 

# 停止指定的模塊(以alarm模塊為例)

cd /opt/open-falcon/back
./open-falcon stop alarm

 

# 重啟指定的模塊(以alarm模塊為例)

cd /opt/open-falcon/back
./open-falcon restart alarm

 


三、部署前端

3.1 設置臨時變量

# 設置前端工作目錄的環境變量(臨時生效的變量,換一個會話(shell終端)這個變量就沒有了)

export FRONTSPACE=/opt/open-falcon/front

 

3.2 創建目錄

# 創建前端工作目錄

mkdir -p $FRONTSPACE

 

3.3 從github上拉取前端(dashboard)的源碼

cd $FRONTSPACE
git clone https://github.com/open-falcon/dashboard.git

PS.通過git clone經常龜速,所以可以通過本地獲取源碼后,將源碼文件上傳到/opt/open-falcon/front/dashboard目錄下。

 

3.4 安裝依賴

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"

 

# 通過virtualenv創建目錄env作為獨立的運行環境

cd $FRONTSPACE/dashboard
virtualenv ./env

 

# 生成 requirements.txt 並安裝依賴

./env/bin/pip install -r pip_requirements.txt

PS.官方教程中使用了下面的命令安裝依賴包(指定了安裝包的源地址)

./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple

 

3.5 修改配置

根據本教程的配置,dashboard的配置文件在/opt/open-falcon/front/dashboard/rrd/config.py

 

爬坑點:

原本不接入LDAP、數據庫root賬號密碼為空不需要修改配置,但是官方給出的配置文件在這里留了一個坑:PORTAL_DB的用戶名/密碼初始為falcon/falcon。

這個坑最終會導致dashboard登錄后的“HostGroups”、“Templates”、“Expressions”、“Nodata”,下面提供解決方案,也就是將錯誤的初始配置改過來。

 

# 編輯dashboard配置文件config.py

vim /opt/open-falcon/front/dashboard/rrd/config.py +33

將portal的數據庫用戶名改為root,密碼改為空,wq保存。

 

3.6 啟動前端

# 啟動

cd $FRONTSPACE/dashboard
bash control start

 

3.7 設置開機啟動

參考“四、設置開機啟動”。

 

3.8 其他操作命令

dashboard還提供了下面這些命令:

 

# 檢查dashboard的啟動情況

cd /opt/open-falcon/front/dashboard
bash control status

 

# 停止dashboard

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的開機啟動。

 

4.1 安裝supervisor

yum install -y python-setuptools
easy_install supervisor

 

4.2 修改配置文件supervisord.conf

# 創建目錄

mkdir -p /etc/supervisor/conf.d

 

# 創建supervisord.conf的模板文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

 

# 編輯supervisord.conf

vim /etc/supervisor/supervisord.conf

將下面的內容添加到supervisord.conf內,wq保存。

[include]
files = conf.d/*.conf

 

4.3 創建open-falcon啟動腳本

# 創建目錄

mkdir -p /opt/sh

 

# 編輯open-falcon-startup.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)啟動失敗。

 

4.4 修改需要守護的進程配置

# 編輯open-falcon-back.conf

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 ;錯誤日志文件備份數

 

# 編輯open-falcon-front.conf

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 ;錯誤日志文件備份數

 

4.5 創建supervisor的service文件

# 編輯supervisord.service

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

 

4.6 啟動、開機啟動supervisor

systemctl start supervisord
systemctl enable supervisord

 

4.7 查看supervisor啟動程序的狀態

supervisorctl status

這里open-falcon-front狀態為FATAL可能是因為啟動比較快導致,實際上dashboard已經成功啟動了。

 


五、使用open-falcon

5.1 訪問open-falcon的頁面

由於手冊部署用的虛擬機IP為192.168.12.55,故瀏覽器訪問http://192.168.12.55:8081

 

5.2 創建超級管理員(root)

dashboard沒有默認創建任何賬號(包括管理員賬號),需要通過頁面進行注冊賬號。

注冊用戶名為root的賬號(第一個帳號名稱為root的用戶,會被自動設置為超級管理員)。

1)點擊“sign up”

 

2)填寫用戶名、中文名、email、密碼后,點擊“sign up”創建root賬號

 

5.3 關閉注冊功能

注冊賬號能夠被任何打開dashboard頁面的人注冊,有時候我們不允許任何人都可以隨便訪問監控數據。所以當創建完root賬號(系統管理員)后,可以關閉注冊賬號功能。沒有接入LDAP的話,可以通過root賬號增加用戶賬號。

 

根據本教程的配置,api的配置文件所在路徑如下:

模塊 配置文件所在路徑
api /opt/open-falcon/back/api/config/cfg.json

 

# 編輯api的配置文件cfg.json

vim /opt/open-falcon/back/api/config/cfg.json

將signup_disable配置項修改為true,wq保存。

 

# 重啟api模塊

cd /opt/open-falcon/back
./open-falcon restart api

 

5.4 創建普通用戶

  • 沒有接入LDAP,允許用戶自由創建賬號登錄,將“4.3 關閉注冊功能”的配置改回來;

  • 沒有接入LDAP,不允許用戶隨意創建賬號登錄,讓管理員用root賬號創建用戶賬號;

  • 接入LDAP,直接使用LDAP賬號登錄;

 


參考資料

1.https://book.open-falcon.org/zh_0_2/quick_install/index.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM