Hygieia

文主要是针对Hygieia的基本组件的搭建过程,包括源码编译环境的搭建、源码编译成jar包、服务打包成docker镜像、运行DB、API、UI服务,如下全部操做本人均已验证,若有问题欢迎指正,谢谢!(本文运行环境为安装了dockercentos 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) 安装JDKlinux

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

安装完以后,使用java –version命令可打印出java的版本:nginx

(3) 配置环境变量:git

  环境变量主要是要配置JAVA_HOMECLASSPATH(虽然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基础组件部署完成。

相关文章
相关标签/搜索