Hygieia


文主要是針對Hygieia的基本組件的搭建過程,包括源碼編譯環境的搭建、源碼編譯成jar包、服務打包成docker鏡像、運行DB、API、UI服務,以下所有操作本人均已驗證,如有問題歡迎指正,謝謝!(本文運行環境為安裝了dockercentos 7。)

1、准備環境(Centos7)

1.1 安裝JDK 

(1) 下載JDK安裝包,我這里直接到Oricle下載Centos7版本的RPM包即可:

wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u171-linux-x64.rpm

(2) 安裝JDK

rpm –ivh jdk-8u171-linux-x64.rpm

安裝完之后,使用java –version命令可打印出java的版本:

(3) 配置環境變量:

  環境變量主要是要配置JAVA_HOMECLASSPATH(雖然rpm安裝的java會自動添加java環境變量,但是在編譯hygieia的時候,會報找不到tools.jar的異常,所以提前添加這兩個),編輯/etc/profile文件,在文件底部添加以下兩行:

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”命令,使環境變量立即生效。

(4) 驗證:

執行“echo $JAVA_HOME”和“echo $CLASSPATH”可以打印出配置的內容即可。

 

1.2 安裝Maven 

 (1)  下載maven的安裝包,我這里下載的是3.3.9版本

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、代碼編譯、打包鏡像

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、啟動基礎服務

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基礎組件部署完成。

 


免責聲明!

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



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