centos7 部署 open-falcon 0.2.1

===============================================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

 

 


1、環境準備

操做系統: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、843三、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),若是編譯過程不順利能夠直接下載。

 


2、部署後端

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 設置開機啓動

請參考「4、設置開機啓動」。

 

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、部署前端

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 設置開機啓動

參考「4、設置開機啓動」。

 

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

 


4、設置開機啓動

因爲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已經成功啓動了。

 


5、使用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

相關文章
相關標籤/搜索