使用Hygieia构建端到端的Devops Dashboard

Hygieia 介绍


Hygieia 是一个开源的项目,是Capitalone 开源的DevOps利器,可以用来构建端到端的DevOps Dashboard。

使用Hygieia后,在整个软件开发周期中,用户可以选择VersionOne、gitlab或Jira进行用户故事的追踪,选择Subversion,GitHub,gitlab等作为代码仓库,选择Jenkins或Hudson进行构建,选择Selenium和SonarQube用于质量检测,以及选择uDeploy或Jenkins进行部署等等。


项目入口: https://github.com/capitalone/Hygieia

文档入口: http://capitalone.github.io/Hygieia/getting_started.html

                  http://capitalone.github.io/Hygieia/Introduction.html


Hygiea的架构图



使用Hygieia构建端到端的Devops Dashboard_第1张图片

Hygieia 示例Dashboard

使用Hygieia构建端到端的Devops Dashboard_第2张图片


Hygieia 的编译与配置

官方文档上有详细的编译和配置指导,用户可以参考。


Hygieia 的编译

本人用的编译环境: JDK 1.8.0_151 ,Maven 3.3.9

clone 代码

git clone https://github.com/capitalone/Hygieia.git

编译jar包

cd Hygieia
mvn clean install package
编译成功后,可以看到相应目录下生成对应组件的jar包

[root@vm-10-112-34-22 Hygieia]# ls
api             circle.yml  db                      Hygieia2.md             logs         mvnw      README.md       test-servers
api-audit       collectors  docker-compose.yml      hygieia-jenkins-plugin  MAINTAINERS  mvnw.cmd  release.md      UI
CHANGELOG.md    conf        docker-compose.yml.org  hygieia.json            media        pmd.xml   rev-version.sh  UI-tests
checkstyle.xml  core        features.md             LICENSE                 mongosrc.js  pom.xml   Setup.md        wrap.sh
[root@vm-10-112-34-22 Hygieia]# ls -lh */target/*.jar
-rw-r--r-- 1 root root  56M Jan 19 09:51 api-audit/target/apiaudit.jar
-rw-r--r-- 1 root root  56M Jan 19 09:51 api/target/api.jar
-rw-r--r-- 1 root root  23M Jan 19 09:51 core/target/core-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 119K Jan 19 09:53 hygieia-jenkins-plugin/target/hygieia-publisher.jar
-rw-r--r-- 1 root root 3.7K Jan 19 09:54 UI-tests/target/ui-tests.jar
[root@vm-10-112-34-22 Hygieia]# ls -lh collectors/*/*/target/*.jar
-rw-r--r-- 1 root root 47M Jan 19 09:51 collectors/artifact/artifactory/target/artifactory-artifact-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 46M Jan 19 09:51 collectors/build/bamboo/target/bamboo-build-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 47M Jan 19 09:51 collectors/build/jenkins-codequality/target/jenkins-codequality-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 46M Jan 19 09:51 collectors/build/jenkins-cucumber/target/jenkins-cucumber-test-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 46M Jan 19 09:51 collectors/build/jenkins/target/jenkins-build-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 47M Jan 19 09:51 collectors/build/sonar/target/sonar-codequality-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 67M Jan 19 09:51 collectors/cloud/aws/target/aws-cloud-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 48M Jan 19 09:52 collectors/cmdb/hpsm/target/hpsm-cmdb-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 47M Jan 19 09:51 collectors/deploy/udeploy/target/udeploy-deployment-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 47M Jan 19 09:52 collectors/deploy/xldeploy/target/xldeploy-deployment-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 55M Jan 19 09:52 collectors/feature/gitlab/target/gitlab-feature-collector.jar
-rw-r--r-- 1 root root 65M Jan 19 09:52 collectors/feature/jira/target/jira-feature-collector.jar
-rw-r--r-- 1 root root 59M Jan 19 09:52 collectors/feature/versionone/target/versionone-feature-collector.jar
-rw-r--r-- 1 root root 47M Jan 19 09:52 collectors/library-policy/nexus-iq-collector/target/nexus-iq-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 48M Jan 19 09:52 collectors/misc/chat-ops/target/chat-ops-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 48M Jan 19 09:52 collectors/performance/appdynamics/target/appdynamics-collector.jar
-rw-r--r-- 1 root root 48M Jan 19 09:52 collectors/scm/bitbucket/target/bitbucket-scm-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 48M Jan 19 09:52 collectors/scm/github-graphql/target/github-graphql-scm-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 48M Jan 19 09:52 collectors/scm/github/target/github-scm-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 48M Jan 19 09:52 collectors/scm/gitlab/target/gitlab-scm-collector-2.0.5-SNAPSHOT.jar
-rw-r--r-- 1 root root 55M Jan 19 09:52 collectors/scm/subversion/target/subversion-collector-2.0.5-SNAPSHOT.jar



编译 docker 镜像

在jar包编译成功的基础上,可以构建docker 镜像,使用容器部署。当然用户可以选择直接使用jar包启动各个组件部署,官方文档中都有详细参考。

mvn docker:build
编译成功后,镜像列表如下

[root@vm-10-112-34-22 Hygieia]# docker images |grep hygieia
hygieia-ui                                latest              8d4686b5d4fd        5 days ago          115MB
hygieia-nexus-iq-collector                latest              e936fcca4411        5 days ago          587MB
hygieia-hspm-cmdb-collector               latest              3e94e55323cd        5 days ago          588MB
hygieia-gitlab-scm-collector              latest              9e6899169390        5 days ago          588MB
hygieia-subversion-scm-collector          latest              f3ca3e3bfb67        5 days ago          595MB
hygieia-github-graphql-scm-collector      latest              0013db25be72        5 days ago          588MB
hygieia-github-scm-collector              latest              211c187c69ff        5 days ago          588MB
hygieia-bitbucket-scm-collector           latest              3f3939acc47a        5 days ago          588MB
hygieia-appdynamics-collector             latest              bf6135589d10        5 days ago          588MB
hygieia-chat-ops-collector                latest              2808bec606a9        5 days ago          588MB
hygieia-gitlab-feature-collector          latest              96794698b619        5 days ago          595MB
hygieia-versionone-collector              latest              745503f18c6f        5 days ago          599MB
hygieia-jira-feature-collector            latest              dd5672a84839        5 days ago          605MB
hygieia-xldeploy-collector                latest              df0745a3dcfe        5 days ago          587MB
hygieia-udeploy-collector                 latest              3117720ee784        5 days ago          587MB
hygieia-sonar-codequality-collector       latest              a11ce3024801        5 days ago          587MB
hygieia-jenkins-codequality-collector     latest              00eeb52567f9        5 days ago          360MB
hygieia-jenkins-cucumber-test-collector   latest              562f864560fc        5 days ago          586MB
hygieia-jenkins-build-collector           latest              e2c47f89cd70        5 days ago          586MB
hygieia-bamboo-build-collector            latest              4c9e385aede3        5 days ago          586MB
hygieia-artifactory-artifact-collector    latest              f667e6784048        5 days ago          587MB
hygieia-apiaudit                          latest              51d892ec4f2e        5 days ago          701MB
hygieia-api                               latest              f700865a0f2f        5 days ago          596MB

Hygieia 的配置与部署

组件的部署顺序

  1.  Mongodb
  2.  API
  3.  UI
  4.  collectors
特别注意的是 Mongodb的部署要事先手动创建用户,否则API无法使用。

我是使用的容器部署的Mongodb,配置如下

# Connect to MongoDB
docker exec -t -i mongodb bash

mongo 127.0.0.1/admin

# Switch to db dashbaord
use dashboarddb

# Create dashboard user
db.createUser({user: "dashoarduser", pwd: "dbpassword", roles: [{role: "readWrite", db: "dashboarddb"}]})

通过jar包部署

通过jar包部署,需要准备一个properties 配置文件,然后通过 类似如下命令启动

java -jar api.jar --spring.config.location=/path/to/api.properties -Djasypt.encryptor.password=hygieiasecret
其他组件参考官方文档

通过容器部署

构建docker镜像成功后,可以参考代码中的docker-compose.yml, 修改配置适合的组件。

然后通过docker-compose up -d 启动全部或者每个组件。



容器部署参考

配置参考

本人使用容器部署,docker-compose.yml 参考如下

mongodb:
  image: mongo:latest
  environment:
    - MONGODB_USERNAME=dashoarduser
    - MONGODB_DATABASE=dashboarddb
    - MONGODB_PASSWORD=dbpassword
  ports:
  - "27017:27017"

hygieia-api:
  image: hygieia-api:latest
  volumes:
  - ./logs:/hygieia/logs
  - ./conf:/hygieia/config
  environment:
    - jasypt.encryptor.password=hygieiasecret
    - SPRING_DATA_MONGODB_DATABASE=dashboarddb
    - SPRING_DATA_MONGODB_HOST=mongodb
    - SPRING_DATA_MONGODB_PORT=27017
    - SPRING_DATA_MONGODB_USERNAME=dashoarduser
    - SPRING_DATA_MONGODB_PASSWORD=dbpassword
    - FEATURE_DYNAMIC_PIPELINE=enabled
    - AUTH_EXPIRATION_TIME=3600000
    - AUTH_SECRET=secret
    - SKIP_PROPERTIES_BUILDER=false
  links:
  - mongodb

hygieia-ui:
  image: hygieia-ui:latest
  container_name: hygieia-ui
  ports:
  - "8088:80"
  links:
  - hygieia-api

hygieia-jenkins-build-collector:
  image: hygieia-jenkins-build-collector:latest
  container_name: hygieia-jenkins-build
  volumes:
  - ./logs:/hygieia/logs
  - ./conf:/hygieia/config
  links:
  - mongodb:mongo
  - hygieia-api
  environment:
  - JENKINS_CRON=0 */15 * * * *
  - JENKINS_MASTER=http://admin:[email protected]:9100
  - SKIP_PROPERTIES_BUILDER=false


hygieia-jenkins-cucumber-test-collector:
  image: hygieia-jenkins-cucumber-test-collector:latest
  container_name: hygieia-jenkins-cucumber
  volumes:
  - ./logs:/hygieia/logs
  - ./conf:/hygieia/config
  links:
  - mongodb:mongo
  - hygieia-api
  environment:
  - JENKINS_CRON=0 */15  * * * *
  - JENKINS_MASTER=http://10.112.34.22:9100
  - JENKINS_CUCUMBER_JSON_FILENAME=cucumber.json
  - JENKINS_USERNAME=admin
  - JENKINS_API_KEY=admin123
  - SKIP_PROPERTIES_BUILDER=false

hygieia-sonar-codequality-collector:
  image: hygieia-sonar-codequality-collector:latest
  container_name: hygieia-sonar-codequality
  volumes:
  - ./logs:/hygieia/logs
  - ./conf:/hygieia/config
  links:
  - mongodb:mongo
  - hygieia-api
  environment:
  - SONAR_URL=http://10.112.34.22:9000
  - SONAR_CRON=0 */5 * * * *
  - SKIP_PROPERTIES_BUILDER=false

hygieia-github-scm-collector:
  image: hygieia-github-scm-collector:latest
  container_name: hygieia-github
  volumes:
  - ./logs:/hygieia/logs
  - ./conf:/hygieia/config
  links:
  - mongodb:mongo
  - hygieia-api
  environment:
  - GITHUB_HOST=github.com
  - GITHUB_CRON=0 */15 * * * *
  - GITHUB_COMMIT_THRESHOLD_DAYS=60
  - GITHUB_ERROR_THRESHOLD=3
  - PERSONAL_ACCESS_TOKEN=c65a91f8ca1bb309d9be20761acfda3bf72e85b6
  - SKIP_PROPERTIES_BUILDER=false

hygieia-gitlab-scm-collector:
  image: hygieia-gitlab-scm-collector:latest
  container_name: hygieia-gitlab
  volumes:
  - ./logs:/hygieia/logs
  - ./conf:/hygieia/config
  links:
  - mongodb:mongo
  - hygieia-api
  environment:
  - GITLAB_HOST=10.127.91.51
  - GITLAB_PROTOCOL=http
  - GITLAB_PORT=6080
  - GITLAB_CRON=0 */15 * * * *
  - GITLAB_API_TOKEN=xSyYNapktsbW-7Qnywhz
  - GITLAB_COMMIT_THRESHOLD_DAYS=20
  - SKIP_PROPERTIES_BUILDER=false


hygieia-gitlab-feature-collector:
  image: hygieia-gitlab-feature-collector:latest
  container_name: hygieia-gitlab-feature
  volumes:
  - ./logs:/hygieia/logs
  - ./conf:/hygieia/config
  links:
  - mongodb:mongo
  - hygieia-api
  environment:
  - GITLAB_HOST=10.127.91.51
  - GITLAB_PROTOCOL=http
  - GITLAB_PORT=6080
  - GITLAB_CRON=0 */15 * * * *
  - GITLAB_API_TOKEN=xSyYNapktsbW-7Qnywhz
  - GITLAB_COMMIT_THRESHOLD_DAYS=20
  - SKIP_PROPERTIES_BUILDER=false

hygieia-jira-feature-collector:
  image: hygieia-jira-feature-collector:latest
  container_name: hygieia-jira-feature
  volumes:
  - ./logs:/hygieia/logs
  - ./conf:/hygieia/config
  links:
  - mongodb:mongo
  - hygieia-api
  environment:
  - JIRA_BASE_URL=http://10.112.34.22:8888
  - JIRA_CREDENTIALS=aHVhcWlhbmdsaTphZG1pbjEyMw==
  - JIRA_DELTA_START_DATE=2018-01-01T00:00:00.000000
  - JIRA_MASTER_START_DATE=2018-01-01T00:00:00.000000
  - JIRA_DELTA_COLLECTOR_ITEM_START_DATE=2018-01-01T00:00:00.000000
  - JIRA_CRON=0 */15 * * * *
  - JIRA_BOARD_AS_TEAM=true
  - SKIP_PROPERTIES_BUILDER=true

启动顺序

     1.  启动db
          docker-compose up -d mongodb
          docker exec -it hygieia_mongodb_1 bash
          mongo 127.0.0.1/admin
          use dashboarddb
          db.createUser({user: "dashoarduser", pwd: "dbpassword", roles: [{role: "readWrite", db: "dashboarddb"}]})

     2. 启动API
         docker-compose up -d hygieia-api

     3.  启动UI
         docker-compose up -d hygieia-ui

     4. 启动其他collecor
         docker-compose up -d


properties文件参考

使用容器部署成功后,properties文件通过volume 会被保存下来,可以参考一下

[root@vm-10-112-34-22 Hygieia]# ls -l conf/
total 40
-rw-r--r-- 1 root root 1265 Jan 19 10:05 hygieia-api.properties
-rw-r--r-- 1 root root 1254 Jan 19 16:19 hygieia-artifactory-artifact-collector.properties
-rw-r--r-- 1 root root  808 Jan 19 11:11 hygieia-github-scm-collector.properties
-rw-r--r-- 1 root root 1085 Jan 19 16:36 hygieia-gitlab-feature-collector.properties
-rw-r--r-- 1 root root 1062 Jan 19 11:56 hygieia-gitlab-scm-collector.properties
-rw-r--r-- 1 root root 1256 Jan 19 10:20 hygieia-jenkins-build-collector.properties
-rw-r--r-- 1 root root 1427 Jan 19 10:20 hygieia-jenkins-cucumber-test-collector.properties
-rw-r--r-- 1 root root 5028 Jan 23 16:39 hygieia-jira-feature-collector.properties
-rw-r--r-- 1 root root  773 Jan 19 10:20 hygieia-sonar-codequality-collector.properties

hygieia-api.properties 

#Database Name - default is test
dbname=dashboarddb

#Database HostName - default is localhost
dbhost=mongodb

#Database Port - default is 27017
dbport=27017

#Database Username - default is blank
dbusername=dashoarduser

#Database Password - default is blank
dbpassword=dbpassword

logRequest=false
logSplunkRequest=false

corsEnabled=false

corsWhitelist=http://domain1.com:port,http://domain2.com:port

feature.dynamicPipeline=enabled

#Authentication Settings
# JWT expiration time in milliseconds
auth.expirationTime=3600000
# Secret Key used to validate the JWT tokens
auth.secret=secret
auth.authenticationProviders=

# LDAP Server Url, including port of your LDAP server
auth.ldapServerUrl=

# If using standard ldap
# LDAP User Dn Pattern, where the username is replaced with '{0}'
auth.ldapUserDnPattern=

# If using ActiveDirectory
# This will be the domain part of your userPrincipalName
auth.adDomain=
# This will be your root dn
auth.adRootDn=
# This is your active directory url
auth.adUrl=

# Needed if you want to query ldap
auth.ldapBindUser=
auth.ldapBindPass=

#Monitor Widget proxy credentials
monitor.proxy.username=
monitor.proxy.password=

#Monitor Widget proxy information
monitor.proxy.type=http
monitor.proxy.host=
monitor.proxy.port=80


hygieia-jenkins-build-collector.properties

#Database Name
dbname=dashboarddb

#Database HostName - default is localhost
dbhost=172.17.0.4

#Database Port - default is 27017
dbport=27017

#Database Username - default is blank
dbusername=dashoarduser

#Database Password - default is blank
dbpassword=dbpassword

#Collector schedule (required)
jenkins.cron=0 */15 * * * *

#The page size
jenkins.pageSize=1000

# The folder depth - default is 10
jenkins.folderDepth=10

#Jenkins server (required) - Can provide multiple
#jenkins.servers[0]=http://jenkins.company.com
#jenkins.niceNames[0]=[YourJenkins]
#jenkins.environments[0]=[DEV,QA,INT,PERF,PROD]
#Another option: If using same username/password Jenkins auth - set username/apiKey to use HTTP Basic Auth (blank=no auth)
#jenkins.usernames[0]=user
#jenkins.apiKeys[0]=12345

jenkins.servers[0]=http://admin:[email protected]:9100
jenkins.usernames[0]=
jenkins.apiKeys[0]=
jenkins.niceNames[0]=

#Determines if build console log is collected - defaults to false
jenkins.saveLog=true

#map the entry localhost so URLS in jenkins resolve properly
# Docker NATs the real host localhost to 10.0.2.2 when running in docker
# as localhost is stored in the JSON payload from jenkins we need
# this hack to fix the addresses
jenkins.dockerLocalHostIP=



hygieia-jenkins-cucumber-test-collector.properties

#Database Name
dbname=dashboarddb

#Database HostName - default is localhost
dbhost=172.17.0.4

#Database Port - default is 27017
dbport=27017

#Database Username - default is blank
dbusername=dashoarduser

#Database Password - default is blank
dbpassword=dbpassword

#Collector schedule (required)
jenkins-cucumber.cron=0 */15  * * * *

#pattern used for finding cucumber.json files 
# note: failed builds will not be picked up, the collector looks for lastSucessfulArtifacts

#Jenkins server (required) - Can provide multiple
jenkins-cucumber.servers[0]=http://10.112.34.22:9100

#If using username/token for api authentication (required for Cloudbees Jenkins Ops Center) see sample
#jenkins-cucumber.servers[1]=http://username:[email protected]
#jenkins-cucumber.servers[1]=

#Another option: If using same username/password Jenkins auth - set username/apiKey to use HTTP Basic Auth (blank=no auth)
jenkins-cucumber.username=admin
jenkins-cucumber.apiKey=admin123

#Determines if build console log is collected - defaults to false
jenkins-cucumber.saveLog=true

#pattern to find cucubmer reports
jenkins-cucumber.cucumberJsonRegex=cucumber.json

#map the entry localhost so URLS in jenkins resolve properly
# Docker NATs the real host localhost to 10.0.2.2 when running in docker
# as localhost is stored in the JSON payload from jenkins we need
# this hack to fix the addresses
jenkins-cucumber.dockerLocalHostIP=


hygieia-sonar-codequality-collector.properties

#Database Name
dbname=dashboarddb

#Database HostName - default is localhost
dbhost=172.17.0.4

#Database Port - default is 27017
dbport=27017

#Database Username - default is blank
dbusername=dashoarduser

#Database Password - default is blank
dbpassword=dbpassword

#Collector schedule (required)
sonar.cron=0 */5 * * * *

sonar.servers[0]=http://10.112.34.22:9000

#Sonar Authentication Username - default is blank
sonar.username=

#Sonar Authentication Password - default is blank
sonar.password=

#Sonar Metrics
sonar.metrics[0]=ncloc,line_coverage,violations,critical_violations,major_violations,blocker_violations,sqale_index,test_success_density,test_failures,test_errors,tests

#Sonar Version - see above for semantics between version/metrics
sonar.versions[0]=1

hygieia-github-scm-collector.properties

#Database Name
dbname=dashboarddb

#Database HostName - default is localhost
dbhost=172.17.0.4

#Database Port - default is 27017
dbport=27017

#Database Username - default is blank
dbusername=dashoarduser

#Database Password - default is blank
dbpassword=dbpassword

#Collector schedule (required)
github.cron=0 */15 * * * *

github.host=github.com

#Maximum number of days to go back in time when fetching commits
github.commitThresholdDays=60

#Optional: Error threshold count after which collector stops collecting for a collector item. Default is 2.
github.errorThreshold=3

#This is the key generated using the Encryption class in core
github.key=

#personal access token generated from github and used for making authentiated calls
github.personalAccessToken=c65a91f8ca1bb309d9be20761acfda3bf72e85b6

hygieia-gitlab-scm-collector.properties

#Database Name
dbname=dashboarddb

#Database HostName - default is localhost
dbhost=172.17.0.4

#Database Port - default is 27017
dbport=27017

#Database Username - default is blank
dbusername=dashoarduser

#Database Password - default is blank
dbpassword=dbpassword

#Collector schedule (required)
gitlab.cron=0 */15 * * * *

#Gitlab host (optional, defaults to "gitlab.com")
gitlab.host=10.127.91.51

#Gitlab protocol (optional, defaults to "http")
gitlab.protocol=http

#Gitlab port (optional, defaults to protocol default port)
gitlab.port=6080

#Gitlab path (optional, defaults to no path)
gitlab.path=
  
#Gitlab API Token (required, access token can be retrieved through gitlab, collector will have the permissions of the user associated to the token)
gitlab.apiToken=xSyYNapktsbW-7Qnywhz

#Maximum number of days to go back in time when fetching commits
gitlab.commitThresholdDays=20

#Gitlab Instance using self signed certificate
gitlab.selfSignedCertificate=false

#Gitlab API Version (optional, defaults to current version of 4)
gitlab.apiVersion=4


hygieia-jira-feature-collector.properties

#Database Name
dbname=dashboarddb

#Database HostName - default is localhost
dbhost=172.17.0.4

#Database Port - default is 27017
dbport=27017


#Database Username - default is blank
dbusername=dashoarduser

#Database Password - default is blank
dbpassword=dbpassword

#Collector schedule (required)
feature.cron=0 */15 * * * *

#Page size for data calls (Jira maxes at 1000)
feature.pageSize=1000

#In-built folder housing prepared REST queries (required)
feature.queryFolder=jiraapi-queries

#Jira API Query file names (String template requires the files to have .st extension) (required)
feature.storyQuery=story
feature.epicQuery=epic
feature.projectQuery=projectinfo
feature.memberQuery=memberinfo
feature.sprintQuery=sprintinfo
feature.teamQuery=teaminfo
feature.trendingQuery=trendinginfo

#Jira Connection Details
feature.jiraProxyUrl=
feature.jiraProxyPort=

# Trending Query:  Number of days in a sprint (not-required)
feature.sprintDays=60

# Trending Query:  Length of sprint week (not-required)
feature.sprintEndPrior=7

#Scheduled Job prior minutes to recover data created during execution time (usually, 2 minutes is enough)
feature.scheduledPriorMin=2

#Delta change date that modulates the collector item task - should be about as far back as possible, in ISO format (required)
feature.deltaCollectorItemStartDate=2018-01-01T00:00:00.000000

#Jira Connection Details
feature.jiraBaseUrl=http://10.112.34.22:8888
feature.jiraQueryEndpoint=rest/api/2/

#64-bit encoded credentials with the pattern username:password 
#on a mac you con create them with : echo "username:password" | base64
#reference:  https://www.base64decode.org/ 
feature.jiraCredentials=aHVhcWlhbmdsaTphZG1pbjEyMw==

#OAuth2.0 token credentials (currently not supported in this version)
feature.jiraOauthAuthtoken=sdfghjkl==
feature.jiraOauthRefreshtoken=sdfagheh==
feature.jiraOauthRedirecturi=uri.this.is.test:uri
feature.jiraOauthExpiretime=234567890987

#Start dates from which to begin collector data, if no other data is present - usually, a month back is appropriate (required)
feature.deltaStartDate=2018-01-01T00:00:00.000000
feature.masterStartDate=2018-01-01T00:00:00.000000

# In Jira, general IssueType IDs are associated to various "issue"
# attributes. However, there is one attribute which this collector's
# queries rely on that change between different instantiations of Jira.
# Please provide a String Name reference to your instance's IssueType for
# the lowest level of Issues (e.g., "user story") specific to your Jira
# instance.  Note:  You can retrieve your instance's IssueType Name
# listings via the following URI:  https://[your-jira-domain-name]/rest/api/2/issuetype/
# Multiple comma-separated values can be specified.
feature.jiraIssueTypeNames=Story,Task,Sub-task

# In Jira, your instance will have its own custom field created for "sprint" or "timebox" details,
# which includes a list of information.  This field allows you to specify that data field for your
# instance of Jira. Note: You can retrieve your instance's sprint data field name
# via the following URI, and look for a package name com.atlassian.greenhopper.service.sprint.Sprint;
# your custom field name describes the values in this field:
# https://[your-jira-domain-name]/rest/api/2/issue/[some-issue-name]
feature.jiraSprintDataFieldName=customfield_10104

# In Jira, your instance will have its own custom field created for "super story" or "epic" back-end ID,
# which includes a list of information.  This field allows you to specify that data field for your instance
# of Jira.  Note:  You can retrieve your instance's epic ID field name via the following URI where your
# queried user story issue has a super issue (e.g., epic) tied to it; your custom field name describes the
# epic value you expect to see, and is the only field that does this for a given issue:
# https://[your-jira-domain-name]/rest/api/2/issue/[some-issue-name]
#feature.jiraEpicIdFieldName=customfield_10400

# In Jira, your instance will have its own custom field created for "story points"
# This field allows you to specify that data field for your instance
# of Jira.  Note:  You can retrieve your instance's storypoints ID field name via the following URI where your
# queried user story issue has story points set on it; your custom field name describes the
# story points value you expect to see:
# https://[your-jira-domain-name]/rest/api/2/issue/[some-issue-name]
#feature.jiraStoryPointsFieldName=customfield_10002

# In Jira, your instance will have its own custom field created for "team"
# This field allows you to specify that data field for your instance
# of Jira.  Note:  You can retrieve your instance's team ID field name via the following URI where your
# queried user story issue has team set on it; your custom field name describes the
# team value you expect to see:
# https://[your-jira-domain-name]/rest/api/2/issue/[some-issue-name]
feature.jiraTeamFieldName=

# Set this to true if you use boards as team
feature.jiraBoardAsTeam=false




hygieia-gitlab-feature-collector.properties 

#Database Name
dbname=dashboarddb

#Database HostName - default is localhost
dbhost=172.17.0.4

#Database Port - default is 27017
dbport=27017

#Database Username - default is blank
dbusername=dashoarduser

#Database Password - default is blank
dbpassword=dbpassword

#Collector schedule (required)
gitlab.cron=0 */15 * * * *

#Gitlab host (optional, defaults to "gitlab.com")
gitlab.host=10.127.91.51

#Gitlab protocol (optional, defaults to "http")
gitlab.protocol=http

#Gitlab port (optional, defaults to protocol default port)
gitlab.port=6080

#Gitlab path (optional, defaults to no path)
gitlab.path=
  
#Gitlab API Token (required, must be an admin account to retrieve all teams for the instance of gitlab.  If not admin, will only retrieve teams the user belongs to)
gitlab.apiToken=xSyYNapktsbW-7Qnywhz

#Gitlab selfSignedCertificate (optional, defaults to false, set to true if your instance of gitlab is running on https without a trusted certificate
gitlab.selfSignedCertificate=false

#Gitlab API Version (optional, defaults to current version of 4)
gitlab.apiVersion=4

UI 上创建Dashboard

首次登录UI界面,需要用户自己注册用户名和密码 , 点击Sign Up

使用Hygieia构建端到端的Devops Dashboard_第3张图片

登录成功后就可以配置相应的dashboard了,可以自己使用模板创建,也可以自己创建选择相应widget组件。如下是本人创建的示例dashboard

使用Hygieia构建端到端的Devops Dashboard_第4张图片

使用Hygieia构建端到端的Devops Dashboard_第5张图片
使用Hygieia构建端到端的Devops Dashboard_第6张图片

UI中还有其他更高级的Dashboard用法,后续将继续学习尝试,感兴趣的大家可以留言一起交流。



填坑参考

既然使用开源的项目,就不可避免的存在一些问题,在个人编译部署过程中需要 fix一些问题才能成功。问题的多少取决于clone代码的版本。下面是本人遇到的一些小坑,希望对大家有帮助。

1.  如果是使用root编译,需要更新 UI/pom.xml
    
[root@vm-10-112-34-22 Hygieia]# git diff --cached UI/pom.xml
diff --git a/UI/pom.xml b/UI/pom.xml
index 1c5d2d8..25814f1 100644
--- a/UI/pom.xml
+++ b/UI/pom.xml
@@ -96,7 +96,7 @@
               bower
             
             
-              install
+              install --allow-root 
             
           
2.  jira feature collector 属性文件volume问题
    
[root@vm-10-112-34-22 Hygieia]# git diff --cached collectors/feature/jira/docker/Dockerfile
diff --git a/collectors/feature/jira/docker/Dockerfile b/collectors/feature/jira/docker/Dockerfile
index dedda35..e9ba6df 100644
--- a/collectors/feature/jira/docker/Dockerfile
+++ b/collectors/feature/jira/docker/Dockerfile
@@ -13,4 +13,4 @@ WORKDIR /hygieia/
 VOLUME ["/hygieia/logs"]
 
 CMD ./jira-properties-builder.sh &&\
-        java -jar jira-feature-collector*.jar --spring.config.location=config/hygieia-jira-feature-collector.properties
+        java -jar jira-feature-collector*.jar --spring.config.location=/hygieia/config/hygieia-jira-feature-collector.properties

3. github-graphql collector问题,会覆盖github镜像,以及配置volume等问题
[root@vm-10-112-34-22 Hygieia]# git diff --cached collectors/scm/github-graphql/pom.xml
diff --git a/collectors/scm/github-graphql/pom.xml b/collectors/scm/github-graphql/pom.xml
index 9723659..f7853d3 100644
--- a/collectors/scm/github-graphql/pom.xml
+++ b/collectors/scm/github-graphql/pom.xml
@@ -45,7 +45,7 @@
         docker-maven-plugin
         
           false
-          hygieia-github-scm-collector
+          hygieia-github-graphql-scm-collector
           ${project.basedir}/docker
           
             
[root@vm-10-112-34-22 Hygieia]# git diff --cached collectors/scm/github-graphql/docker/Dockerfile
diff --git a/collectors/scm/github-graphql/docker/Dockerfile b/collectors/scm/github-graphql/docker/Dockerfile
index 5b12f9f..0139c51 100644
--- a/collectors/scm/github-graphql/docker/Dockerfile
+++ b/collectors/scm/github-graphql/docker/Dockerfile
@@ -14,5 +14,5 @@ WORKDIR /hygieia
 VOLUME ["/hygieia/logs"]
 
 CMD ./github-graphql-properties-builder.sh && \
-  java -jar github-graphql-scm-collector*.jar --spring.config.location=/hygieia/hygieia-github-graphql-scm-collector.properties
+  java -jar github-graphql-scm-collector*.jar --spring.config.location=/hygieia/config/hygieia-github-graphql-scm-collector.properties
 
[root@vm-10-112-34-22 Hygieia]# git diff --cached collectors/scm/github-graphql/docker/github-graphql-properties-builder.sh
diff --git a/collectors/scm/github-graphql/docker/github-graphql-properties-builder.sh b/collectors/scm/github-graphql/docker/github-graphql
index 017a121..bbb2e38 100755
--- a/collectors/scm/github-graphql/docker/github-graphql-properties-builder.sh
+++ b/collectors/scm/github-graphql/docker/github-graphql-properties-builder.sh
@@ -13,7 +13,7 @@ then
         #for testing locally
         PROP_FILE=application.properties
 else 
-       PROP_FILE=hygieia-github-graphql-scm-collector.properties
+       PROP_FILE=config/hygieia-github-graphql-scm-collector.properties
 fi
   
 if [ "$MONGO_PORT" != "" ]; then









 
  

你可能感兴趣的:(Hygieia)