WGCLOUD介绍

WGCLOUD属于极简&高效的主机监控系统,支撑主机各种目标监测,并且支撑毛病告警信息推送,开源系统足以满足我们对测试环境机器的监控,所以用起来。

WGCLOUD基于K8S部署

官网下载v3.4.6版本tar.gz安装包

wgcloud-v3.4.6.tar.gz

新建数据库,导入数据

  1. 解压wgcloud-v3.4.6.tar.gz安装包
  2. 在解压目录下会发现wgcloud-MySQL.sql、wgcloud-Oracle.sql和wgcloud-PostgreSQL.sql三份sql文件
  3. 依据自己的需要挑选对应的sql文件导入
  4. 笔者这儿以mysql为主
  5. 修正server/config/application.yml文件的数据库衔接信息,更新为自己的数据库衔接信息及对应的驱动即可

编写server端Dockerfile

#基础镜像
FROM java:8
#作者
MAINTAINER xxx <xxx@xxx.com>
#切换镜像目录,进入usr目录
WORKDIR /wgcloud
RUN mkdir wgcloud
ADD . /wgcloud/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
CMD ["/wgcloud/wgcloud/server/start.sh"]

制作镜像

docker buld -t harbor.xxx.xxx/qa-dev/wgcloud/wgcloud:v1 .

将镜像推送至harbor库房

docker push harbor.xxx.xxx/qa-dev/wgcloud/wgcloud:v1

编写k8s yaml文件

kind: Deployment
metadata:
  name: wgcloud-deployment
  labels:
    app: wgcloud
    namespace: k8s-jenkins  #这儿依据自己的namespace做调整
spec:
  replicas: 1 #操控办理运转的pod个数
  selector:
    matchLabels:   #标签
      app: wgcloud
  template:
    metadata:
      labels:
        app: wgcloud
    spec:
      containers:
        - name: wgcloud
          image: harbor.xxx.xxx/qa-dev/wgcloud/wgcloud:v1
          imagePullPolicy: Always
          ports:
            - containerPort: 9997  #容器露出的端口号-1
            - containerPort: 9998  #容器露出的端口号-2
            - containerPort: 9999  #容器露出的端口号-3
      imagePullSecrets:
        - name: docker-harbor-slave
---
apiVersion: v1
kind: Service
metadata:
  name: wgcloud-service
spec:
  selector:
    app: wgcloud
  ports:
    - name: http-test1
      port: 9997
      protocol: TCP
      nodePort: xxx-1  #依据自己的nodePort做调整
    - name: http-test2
      port: 9998
      protocol: TCP
      nodePort: xxx-2
    - name: http-test3
      port: 9999
      protocol: TCP
      nodePort: xxx-3  #指定节点敞开的端口
  type: NodePort
  selector:
    app: wgcloud

接入jenkins,pipeline


def label = "slave-${UUID.randomUUID().toString()}"
podTemplate(label: label, serviceAccount: "xxx,具有某某个角色的账号",imagePullSecrets: [ 'xxx'  拉取镜像的暗码],  containers: [
  containerTemplate(name: 'kubectl', image: 'harbor.pwesports.net/qa-dev/kubectl:v1', command: 'cat', ttyEnabled: true)
], volumes: [
  hostPathVolume(mountPath: '/home/jenkins/.kube', hostPath: '/root/.kube'),
],yaml: '''
          spec:
            containers:
            - name: kaniko
              image: harbor.pwesports.net/qa-dev/kaniko:v2
              command:
              - /busybox/cat
              tty: true
              volumeMounts:
              - name: docker-config
                mountPath: /kaniko/.docker
            restartPolicy: Never
            volumes:
            - name: docker-config
              secret:
                secretName: docker-harbor-slave
                items:
                  - key: .dockerconfigjson
                    path: config.json
            hostAliases:
            - ip: "172.16.xxx.xxx"
              hostnames:  #代码库房地址
              - "gitlab.xxx.xxx"
            - ip: "172.16.xxx.xxx"  ###harbor地址
              hostnames:
              - "harbor.xxx.xxx"
          ''') {
  node(label) {
     stage('运转 Kubectl') {
        git credentialsId: 'xxxx-4c16-479c-8cd3-2b29f828e71b', url: 'http://gitlab.xxx.xxx/QA/xxx.git', branch: 'master'
        container('kubectl') {
             sh """
                kubectl apply -f ${workspace}/k8s-config/wgcloud.yaml
             """
        }
     }
  }
}

访问

http://nodeIP:nodePort/wgcloud/login/toLogin

K8S部署WGCLOUD运维监控系统