文主要是針對Hygieia的基本組件的搭建過程,包括源碼編譯環境的搭建、源碼編譯成jar包、服務打包成docker鏡像、運行DB、API、UI服務,如下全部操做本人均已驗證,若有問題歡迎指正,謝謝!(本文運行環境爲安裝了docker的centos 7。)java
一、準備環境(Centos7)
1.1 安裝JDK
(1) 下載JDK安裝包,我這裏直接到Oricle下載Centos7版本的RPM包便可:node
wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u171-linux-x64.rpm
(2) 安裝JDK:linux
rpm –ivh jdk-8u171-linux-x64.rpm
安裝完以後,使用「java –version」命令可打印出java的版本:nginx
(3) 配置環境變量:git
環境變量主要是要配置JAVA_HOME和CLASSPATH(雖然rpm安裝的java會自動添加java環境變量,可是在編譯hygieia的時候,會報找不到tools.jar的異常,因此提早添加這兩個),編輯/etc/profile文件,在文件底部添加如下兩行:github
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
而後執行「source /etc/profile」命令,使環境變量當即生效。mongodb
(4) 驗證:docker
執行「echo $JAVA_HOME」和「echo $CLASSPATH」能夠打印出配置的內容便可。數據庫
1.2 安裝Maven
(1) 下載maven的安裝包,我這裏下載的是3.3.9版本:apache
wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
(2) 解壓:
tar xzvf apache-maven-3.3.9-bin.tar.gz
(3) 將解壓的包移動到「/usr/local」目錄
mv apache-maven-3.3.9-bin /usr/local/ maven3
(4) 配置maven環境變量
編輯/etc/profile文件,添加maven的信息:
export M2_HOME=/usr/local/maven3 export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
執行「source /etc/profile」,使環境變量生效
(5) 驗證:
執行「mvn –v」顯示maven的信息:
maven安裝完成。
1.3 安裝git
git安裝比較簡單,直接使用yum安裝便可,不須要額外的配置,操做以下:
yum install –y git
安裝結束以後,驗證git:
1.4 安裝node.js
(1) 下載node.js
wget https://nodejs.org/dist/v8.11.3/node-v8.11.3-linux-x64.tar.xz
(2) 解壓node壓縮包:下載完成以後本地會保存一份node-v8.11.3-linux-x64.tar.xz文件
tar -xvf node-v8.11.3-linux-x64.tar.xz
(3) 移動node文件夾到/usr/local目錄:
mv node-v8.11.3-linux-x64 /usr/local/node
(4) 配置node環境變量:
編輯/etc/profile文件,添加如下內容(PATH直接追加,且放到最後一行):
export NODE_HOME=/usr/local/node export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin:$NODE_HOME/bin
(5) 驗證node安裝,執行node –v和npm –v,可獲得node和npm的版本信息:執行source /etc/profile,使環境變量生效。
能打印出以上信息,表示node正常安裝。
(6) 更新npm到最新版本:
npm i npm@latest -g
(7) 安裝bower:
使用npm命令安裝bower:
npm install -g bower
執行bower –v查看其版本信息:
二、代碼編譯、打包鏡像
2.1 克隆Hygieia代碼到本地
使用git克隆hygieia的代碼到本地:
git clone https://github.com/capitalone/Hygieia.git
2.2 編譯Hygieia代碼爲jar包
(1) 將使用git克隆到的代碼備份一份。
(2) 若是當前登陸用戶爲root用戶,須要修改Hygieia/UI/pom.xml文件,在99行左右的install後面添加容許「--allow-root」,以容許root用戶執行編譯:
(3) 進入代碼目錄,執行編譯命令:
cd Hygieia mvn clean install package
(4) 可能出錯緣由:在編譯過程當中須要下載大量的文件,時間比較長,差很少3小時左右,請耐心等待……
① 期間可能會由於網絡的緣由形成失敗,若是在編譯日誌日看到downloading某個包等待很長時間,而後直接失敗了,而沒有其餘錯誤緣由,能夠直接重複執行「mvn clean install package」編譯命令。
② 若是出現「update failed」,截圖以下,則是權限問題:
根據提示,執行「sudo chown -R $USER:$(id -gn $USER) /home/$USER/.config」命令,再重複執行編譯命令。
③ 出現「bower ESUDO Cannot be run with sudo」,以下內容:
此錯誤是在編譯UI項目出現的錯誤,緣由是執行編譯的用戶爲root用戶,而沒有在UI/pom.xml文件中添加「--allow-root」以容許root用戶執行編譯。解決辦法:
- 切換到非root用戶執行編譯(這時候不建議這麼作,又得從新下載,編譯,很耗時)
- 參考編譯的第一條給UI/pom.xml添加「--allow-root」,再從新編譯。
在編譯過程當中出現任何錯誤,在解決出錯以後,都選擇從新編譯,在全部項目都編譯完成以後,建議從新拷貝一份編譯前的代碼,從新編譯一次,這時候通常能夠一次性編譯經過,並且所依賴的包都已經下載到了本地,不會耗太多時間。這樣能夠防止斷斷續續的編譯可能會存在什麼問題。
(5) 查看全部編譯好的項目:
工程的主要目標文件:
生成的collectors目標文件:
2.3 將服務打包成docker鏡像
在jar包編譯成功的基礎上,能夠構建docker 鏡像,使用容器部署。執行命令:
mvn docker:build
鏡像構建完成以後,會產生以下鏡像,可用「docker images」查看
三、啓動基礎服務
3.1 編寫啓動服務的docker-compose.yml文件:
我使用docker-compose來運行服務,能夠便捷的啓動你要要的服務,首先須要編寫一個docker-compose.yml文件:
db: image: mongo:latest volumes: - ./data/mongodb_master/db:/data/db environment: - MONGODB_USERNAME=dashboarduser - MONGODB_DATABASE=dashboarddb - MONGODB_PASSWORD=dbpassword ports: - "27017:27017" api: image: hygieia-api volumes: - ./logs:/hygieia/logs - ./conf:/hygieia/config ports: - "8080:8080" environment: - jasypt.encryptor.password=hygieiasecret - SPRING_DATA_MONGODB_DATABASE=dashboarddb - SPRING_DATA_MONGODB_HOST=db - SPRING_DATA_MONGODB_PORT=27017 - SPRING_DATA_MONGODB_USERNAME=dashboarduser - SPRING_DATA_MONGODB_PASSWORD=dbpassword - FEATURE_DYNAMIC_PIPELINE=enabled - AUTH_EXPIRATION_TIME=3600000 - AUTH_SECRET=secret - SKIP_PROPERTIES_BUILDER=false links: - db ui: image: hygieia-ui container_name: hygieia-ui ports: - "18088:80" environment: - API_HOST=api - API_PORT=8080 volumes: - ./conf/hygieia-ui/:/etc/nginx/conf.d links: - api
目前只配置了DB、API和UI的內容,其餘服務後面再續上。
3.2 啓動與配置服務
(1)、首先啓動mongoDB服務:
docker-compose up -d db
(2)、進入運行的容器,進行數據庫初始配置:
# 1、進入啓動的DB容器命令行(hygieiacluster_db_1是容器的名稱,根據本身的場景肯定) docker exec -it hygieiacluster_db_1 bash # 2、進入mongoDB的命令行界面 mongo 127.0.0.1/admin # 3、選擇使用的數據庫 use dashboarddb # 4、建立hygieia鏈接MongoDB時使用的用戶名及密碼 db.createUser({user: "dashboarduser", pwd: "dbpassword", roles: [{role: "readWrite", db: "dashboarddb"}]})
(3)、啓動API服務:
docker-compose up -d api
(4)、啓動UI服務:
docker-compose up -d ui
3.3 服務檢查
(1)、可以使用「docker ps」命令查看當前運行的container狀況:
(2)、還能夠經過docker logs查看具體服務的啓動狀況:
(3)、首次登陸UI界面,能夠看到服務的運行狀況(docker-compose.yml文件裏有配置UI服務對外映射的端口爲18088):
顯示「API Connectivity」顯示爲表示鏈接API服務正常,則能夠進行下一步操做,接着須要用戶本身註冊用戶名和密碼 , 點擊Sign Up,建立本身的帳戶:
建立完成以後,用該帳戶登陸進來以後,配置本身的DashBoard,進來以後,以下界面(由於我什麼都沒有對接,因此展現的什麼都沒有……):
至此,Hygieia基礎組件部署完成。