部署监控

一、环境准备

1.1 安装包

下载地址:https://prometheus.io/download/

prometheus-2.22.0.linux-amd64.tar.gz

grafana-7.2.0.linux-amd64.tar.gz

node_exporter-1.0.1.linux-amd64.tar.gz

1.2 监控面板json文件

下载地址:

node-exporter-for-prometheus-dashboard-cn-v20201010_rev24.json

1.3 主机时间与系统时间同步

# crontab -l * */1 * * * /usr/sbin/ntpdate ntp1.aliyun.com

1.4 主机信息

主机名称ipcpu内存磁盘系统服务
Prometheus+grafana10.3.9.78816100Gcentos7.8Prometheus、node_exporter、Grafana服务端、被监控端

二、解压安装Prometheus

2.1 安装Prometheus

# cd /data/tools
# tar xf prometheus-2.22.0.linux-amd64.tar.gz -C /data/app/
# ln -s /data/app/prometheus-2.22.0.linux-amd64 /data/app/prometheus
# cd /data/app/prometheus
[root@localhost prometheus]# ll
总用量 161676
drwxr-xr-x 2 3434 3434       38 10月 15 22:21 console_libraries
drwxr-xr-x 2 3434 3434      173 10月 15 22:21 consoles
-rw-r--r-- 1 3434 3434    11357 10月 15 22:21 LICENSE
-rw-r--r-- 1 3434 3434     3420 10月 15 22:21 NOTICE
-rwxr-xr-x 1 3434 3434 87729971 10月 15 20:32 prometheus
-rw-r--r-- 1 3434 3434      926 10月 15 22:21 prometheus.yml
-rwxr-xr-x 1 3434 3434 77801407 10月 15 20:34 promtool
 
# mkdir /data/app/prometheus/{data,conf,logs,bin}
# cd /data/app/prometheus
# mv prometheus promtool ./bin/
# mv prometheus.yml ./conf/
# chown -R root:root /data/app/prometheus

2.2 配置环境变量

# vim /etc/profile
PATH=/data/app/prometheus/bin:$PATH:$HOME/bin
 
//环境变量生效
# source /etc/profile
 
//查看版本
# prometheus --version
prometheus, version 2.22.0 (branch: HEAD, revision: 0a7fdd3b76960808c3a91d92267c3d815c1bc354)
  build user:       root@6321101b2c50
  build date:       20201015-12:29:59
  go version:       go1.15.3
  platform:         linux/amd64

2.3 配置Prometheus系统服务

注意:安装时需要配置安装与存放数据目录

# vim /lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
  
[Service]
Type=simple
User=root
ExecStart=/data/app/prometheus/bin/prometheus --config.file=/data/app/prometheus/conf/prometheus.yml --web.enable-lifecycle --storage.tsdb.path=/data/app/prometheus/data --storage.tsdb.retention=60d
Restart=on-failure
  
[Install]
WantedBy=multi-user.target

Prometheus启动参数说明:

--config.file -- 指明prometheus的配置文件路径 --web.enable-lifecycle -- 指明prometheus配置更改后可以进行热加载 --storage.tsdb.path -- 指明监控数据存储路径 --storage.tsdb.retention --指明数据保留时间

说明: prometheus在2.0之后默认的热加载配置没有开启, 配置修改后, 需要重启prometheus server才能生效, 对于生产环境的监控是不可行的, 所以需要开启prometheus server配置的热加载功能。

在启动prometheus时加上参数 web.enable-lifecycle , 可以启用配置的热加载;配置修改后, 热加载配置: curl -X POST http://localhost:9090/-/reload

2.4 重新加载systemd系统,查看服务是否启动

# systemctl daemon-reload
# systemctl enable prometheus.service
Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus.service to /usr/lib/systemd/system/prometheus.service.
# systemctl start prometheus.service
# netstat -lntup|grep prometheus
tcp6       0      0 :::9090                 :::*                    LISTEN      55931/prometheus

2.5 Prometheus配置文件

2.5.1 打开Prometheus配置文件

# vim prometheus.yml

其大致分为四部分:

global:全局配置,其中scrape_interval表示抓取一次数据的间隔时间,

evaluation_interval 表示进行告警规则检测的间隔时间;

alerting:告警管理器(Alertmanager)的配置,目前还没有安装Alertmanager;

rule_files:告警规则有哪些;

scrape_configs:抓取监控信息的目标。

一个 job_name 就是一个目标,其 targets 就是采集信息的IP和端口。这里默认监控了Prometheus自己,可以通过修改这里来修改Prometheus的监控端口。Prometheus的每个 exporter 都会是一个目标,它们可以上报不同的监控信息,比如机器状态,或者mysql性能等等,不同语言sdk也会是一个目标,它们会上报自定义的业务监控信息。

2.5.2 Prometheus配置语法校验

# promtool check config prometheus.yml
Checking prometheus.yml
  SUCCESS: 0 rule files found

2.6 通过浏览器访问Prometheus监听界面

2.6.1 运行后,在浏览器访问 [机器IP:端口] 就可以查看Prometheus的界面了,这里的机器IP是运行Prometheus服务的机器,端口是上面配置文件中配置的监控自己的端口。打开后界面如下:http://10.3.9.78:9090

界面非常简单(所以还需要安装 Grafana ),上面标签栏中,Alerts 是告警管理器,还没安装;Graph 是查看监控项的图表,也是访问后的默认页面;Status 中可以查看一些配置、监控目标、告警规则等。

2.6.2. 在Graph页面,由于默认已经监控了Prometheus自己,所以可以直接查看一些监控图表,比如在输入框输入 “promhttp_metric_handler_requests_total” ,执行 Execute,下面的小标签中切换到 Graph 就能看到 “/metrics” 访问次数的折线图。

三、node_exporter 解压安装

3.1 被监控节点安装node_exporter

# cd /data/tools/
# tar xf node_exporter-1.0.1.linux-amd64.tar.gz -C /data/app/
# ll /data/app/
总用量 0
drwxr-xr-x 2 3434 3434  56 6月  16 2020 node_exporter-1.0.1.linux-amd64
lrwxrwxrwx 1 root root  39 2月  25 16:24 prometheus -> /data/app/prometheus-2.22.0.linux-amd64
drwxr-xr-x 8 3434 3434 123 2月  25 16:29 prometheus-2.22.0.linux-amd64
# ln -s /data/app/node_exporter-1.0.1.linux-amd64 /data/app/node_exporter
# chown -R root.root /data/app/node_exporter

3.2 配置node_exporter启动服务

# vim /lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
User=root
ExecStart=/data/app/node_exporter/node_exporter
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
//启动服务
# systemctl daemon-reload
# systemctl enable node_exporter.service
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.
# systemctl start node_exporter.service
# netstat -lntup|grep node_exporter
tcp6       0      0 :::9100                 :::*                    LISTEN      56581/node_exporter

3.3 验证安装之后的数据,访问:http://10.3.9.78:9100/metrics

3.4 node_exporter 配置

为了更好的展示,将节点的node_exporter 配置到 prometheus server中, 并通过grafana进行展示。

3.4.1 将 node_exporter 加入 prometheus.yml配置文件中

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
 
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
 
    static_configs:
    - targets: ['localhost:9090']
 
 
  - job_name: 'linux'  #命名后期在Grafana与Prometheus 上方便查看管理
    static_configs:
    - targets: ['10.3.9.78:9100']   #多节点的情况下使用,号分隔;例如:['localhost:9100','1.1.1.1:9100','2.2.2.2:9100']

3.4.2 重启Prometheus

//为了不影响正在运行的Prometheus服务,可使用以下热加载命令
# curl -X POST http://localhost:9090/-/reload
  
或
# systemctl restart prometheus

3.4.3 验证Prometheus数据采集

在标签栏的 Status --> Targets 中可以看到多了一个状态;

如果新加的 target 的 status 是 “UP” 的话,就说明监听成功了:

此时在Graph中,输入框输入node可以发现有很多node开头的监控项,都是和机器状态有关的,执行后可以看到被监控端的node_exporter数据采集的结果:

以上 node_exporter 已安装完全,并且数据采集已更新至Prometheus。

四、服务端安装配置可视化页面:Grafana

因为Prometheus的界面看起来比较简单,所以还需要Grafana这个监控展示框架。

4.1 安装 Grafana

1.安装Grafana

# cd /data/tools/
# tar -xf grafana-7.2.0.linux-amd64.tar.gz -C /data/app/
# ln -s /data/app/grafana-7.2.0 /data/app/grafana

通过log信息可以看到Grafana默认运行在3000端口,这个也可以通过配置文件进行修改:创建名为 custom.ini 的配置文件,添加到 conf 文件夹,复制 conf/defaults.ini 中定义的所有设置,然后修改想要修改的配置内容。

2. 设置系统服务

//配置环境变量
# vim /etc/profile
export GRAFANA_HOME=/data/app/grafana
export PATH=$GRAFANA_HOME/bin:$PATH
 
# source /etc/profile
 
// 查看版本
# grafana-cli --version
Grafana CLI version 7.2.0
//增加系统服务
# vim /lib/systemd/system/grafana-server.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
  
[Service]
Type=simple
User=root
ExecStart=/data/app/grafana/bin/grafana-server
Restart=on-failure
  
[Install]
WantedBy=multi-user.target
 
# systemctl daemon-reload
# systemctl enable grafana-server
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
# systemctl start grafana-server
# netstat -lntup | grep grafana
tcp6       0      0 :::3000                 :::*                    LISTEN      57357/grafana-serve

4.2 配置数据源-Prometheus

  • 浏览器访问 http://IP:3000,可打开Grafana界面;
  • 管理员 账号/密码 默认是 admin/admin,首次登录后强制修改密码;
  • 配置数据源 Data sources->Add data source -> Prometheus,输入prometheus数据源的信息,主要是输入 name 和 url 。

1. 在界面左边是一竖排选项,选择设置图标中的 Data Source,添加 Prometheus 的数据源,URL填写上面已经配置的Prometheus Server的 ip:端口,如果没修改且在本机运行的话,就是localhost:9090。

资源导航网站

测试并保存,如果此处测试没有问题则返回working,如果有问题,则排查防火墙限制和Prometheus的UI地址。

2. 查看已添加的数据源,可以点击进入修改并删除:

以上Grafana已安装完成,并已配置接入Prometheus数据源。

五、node_exporter采集与Grafana显示

配置Grafana 与Prometheus数据源模板,采集数据使用node_exporter.

5.1 导入Grafana系统服务自带的Prometheus监控模板

1.此时可以添加dashboard,也就是监控面板,在刚配好的 Prometheus Data Source 的设置中有一个标签是 dashboard,我们导入 Prometheus 2.0 Stats 这个面板,就能看到我们Prometheus的一些基本监控情况了,这其实就是导入了一个已经写好的面板配置,并且连接自己Prometheus的监控数据做展示。

2. 查看添加的监控面板效果:

5.2 导入下载的监控模板

1. 前面配置运行了node_exporter,为了更好的展现这个监控信息,左边竖排点击加号图标中的 Import,来导入已经写好的面板。

在Grafana的官方面板页面可以看到很多别人配置好的面板,面板中的每个图都是可以编辑的,也可以设置告警,找到想要的面板,比如这个node_exporter模板id:8919

https://grafana.com/api/dashboards/8919/

2. 复制面板ID,然后在 Import 界面输入ID,导入Linux监控模板的json文件,并配置数据源为Prometheus,即前面导入的数据源的name;

配置完保存后即可看到系统主机节点监控信息,包括系统运行时间, 内存和CPU的配置, CPU、内存、磁盘、网络流量等信息, 以及磁盘IO、CPU温度等信息。

3. 模板导入完成之后,会出现下图,Node_exporter的采集数据已通过prometheus数据源在grafana 显示完成:

六、扩展 —— Grafana安装插件(饼图为例)

进入到官网的插件页面中,可以选择自己需要的插件,例如,选择pieChart饼图插件,进入详情页面如下:

红框圈住的地方,就是本地安装的命令

6.1 直接安装插件

1.进入Grafana安装目录下的plugins插件目录。然后直接执行上述命令,即可完成安装;

# cd /data/app/grafana/data/plugins/
# grafana-cli plugins install grafana-piechart-panel
 
//重启Grafana
# systemctl restart grafana-server

2.然后重启Grafana就能看到新安装的插件了。

6.2 离线包安装

1. 下载最新的zip

# wget -nv https://grafana.com/api/plugins/grafana-piechart-panel/versions/latest/download -O /data/tools/grafana-piechart-panel.zip
# ll /data/tools/
总用量 190836
-rw-r--r-- 1 root root   274360 9月  17 04:09 grafana-piechart-panel.zip

提取并移动到位:

# unzip -o -q /data/tools/grafana-piechart-panel.zip -d /data/tools/
# ll /data/tools/
总用量 190836
-rw------- 1 root root 52348545 2月  25 14:38 grafana-7.2.0.linux-amd64.tar.gz
drwxr-xr-x 4 root root      277 9月  17 04:03 grafana-piechart-panel
# mv /data/tools/grafana-piechart-panel /data/app/grafana/data/plugins/
 
//重启Grafana
# systemctl restart grafana-server

2. Git克隆

  • 也可以将此仓库直接克隆到插件目录中;
  • 然后重新启动grafana-server,会自动检测并使用该插件。
# cd /data/app/grafana/data/plugins/
# git clone https://github.com/grafana/piechart-panel.git --branch release-1.3.8

3. 克隆到自主选择的目录中

如果插件被克隆到不是默认插件目录的目录,那么需要编辑grafana.ini配置文件(默认位置在/etc/grafana/grafana.ini中)并添加以下内容:

[plugin.piechart]
path = /home/your/clone/dir/piechart-panel

注意:如果将其克隆到grafana plugins目录中,则无需添加上述config选项。仅当您要将插件放置在标准plugins目录之外的目录中时。注意,grafana-server需要对该目录具有读取权限。

七、Prometheus服务发现机制

7.1 基于文件的服务发现

官方文档:https://github.com/prometheus/prometheus/tree/master/discovery

服务发现支持: endpoints,ingress,kubernetes,node,pod,service。 Prometheus也提供了服务发现功能,可以从consul,dns,kubernetes,file等等多种来源发现新的目标。 其中最简单的是从文件发现服务。

1.编写配置文件:vim prometheus.yml

scrape_configs:
  - job_name: 'centos7-node'
    # 使用基于文件服务发现
    file_sd_configs:
        # 指定服务发现的目录及配置文件
        - files: ['/data/app/prometheus/targets/node/*.yml']
          # 每过5秒动态发现服务配置
          refresh_interval: 5s

2.创建自动发现所在目录

# mkdir /data/app/prometheus/targets/node -p

3.写入配置文件

vim /data/app/prometheus/targets/node/node.yml

编写方式一:

# 添加本地主机并填入标签
- targets: ['10.3.9.78:9100']
  labels:
    idc: bj-seeyona9

编写方式二:

# 添加本地主机并填入标签
- targets:
  - '10.3.9.78:9100'
  labels:
    idc: "bj-seeyona9"

4.重启Prometheus

# systemcatl restart prometheus-server

一、服务器信息

IP配置角色端口服务安装路径
10.3.9.2524C8Gelasticsearch92009300/data/elasticsearch-7.10.1
skywalking-oap1180012800/data/apache-skywalking-8.3
skywalking-webapp8080/data/apache-skywalking-8.3

二、准备工作

centos7.8` `elasticsearch 7.10.1` `skywalking 8.3.0` `jdk 1.8.0

三、elasticsearch7部署

2.1 elasticsearch7安装前系统优化配置

# egrep -v '^#|^$' /etc/security/limits.conf
*               soft    nofile            65536
*               hard    nofile             65536
 
# vim /etc/sysctl.conf
vm.max_map_count=1048575
# sysctl -p
vm.max_map_count = 1048575

2.2 下载解压软件包

官网下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz
 
tar -xf elasticsearch-7.10.1-linux-x86_64.tar.gz -C /data
 
 
# ls /data/
elasticsearch-7.10.1

2.3 配置文件修改

# cd /data/elasticsearch-7.10.1/config
 
# egrep -v '^#|^$' elasticsearch.yml
node.name: Seeyon
network.host: 10.3.9.252
http.port: 9200
cluster.initial_master_nodes: ["Seeyon"]

2.4 启动elasticsearch

切换到elasticsearch用户,启动elasticsearch服务
su - elasticsearch
 
前台启动cd /data/elasticsearch-7.10.1/bin./elasticsearch
后台启动cd /data/elasticsearch-7.10.1/bin
 
./elasticsearch -d
 
# netstat -lntup|grep java       
tcp6       0      0 10.3.9.252:9200         :::*                    LISTEN      59574/java         
tcp6       0      0 10.3.9.252:9300         :::*                    LISTEN      59574/java

四、部署skywalking server

3.1 下载、解压

wget https://mirrors.tuna.tsinghua.edu.cn/apache/skywalking/8.3.0/apache-skywalking-apm-es7-8.3.0.tar.gz
tar -xf apache-skywalking-apm-es7-8.3.0.tar.gz -C /data
# ls /data/
apache-skywalking-8.3

3.3 修改配置文件

#  vim /data/apache-skywalking-8.3/config/application.yml
storage:
selector: ${SW_STORAGE:elasticsearch7}
elasticsearch:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}

3.4 启动服务

cd /data/apache-skywalking-8.3/bin/
./startup.sh
 
# 查看日志
# tailf ../logs/skywalking-oap-server.log
2021-01-12 20:01:55,823 - org.apache.skywalking.oap.server.core.storage.ttl.DataTTLKeeperTimer - 81 [pool-6-thread-1] INFO  [] - Beginning to remove expired metrics from the storage.
2021-01-12 20:06:55,823 - org.apache.skywalking.oap.server.core.storage.ttl.DataTTLKeeperTimer - 81 [pool-6-thread-1] INFO  [] - Beginning to remove expired metrics from the storage.
2021-01-12 20:11:55,823 - org.apache.skywalking.oap.server.core.storage.ttl.DataTTLKeeperTimer - 81 [pool-6-thread-1] INFO  [] - Beginning to remove expired metrics from the storage.
 
# netstat -lntup|grep java
tcp6       0      0 :::8080                 :::*                    LISTEN      59769/java         
tcp6       0      0 10.3.9.252:9200         :::*                    LISTEN      59574/java         
tcp6       0      0 10.3.9.252:9300         :::*                    LISTEN      59574/java         
tcp6       0      0 :::11800                :::*                    LISTEN      59750/java         
tcp6       0      0 :::12800                :::*                    LISTEN      59750/java

3.5 访问skywalking-ui

http://10.3.9.252:8080/

五、sidecar 模式挂载 agent

3.1 配置agent.conf文件

# agent存在于apache-skywalking-apm-es7-8.3.0.tar.gz压缩包内
# ls -d /data/apache-skywalking-8.3/agent
/data/apache-skywalking-8.3/agent
 
# 编写配置文件
# vim /data/apache-skywalking-8.3/agent/config/agent.config
#用户ui显示的应用名称
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
#服务器端收集器地址
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:10.3.9.252:11800}
logging.file_name=${SW_LOGGING_FILE_NAME:skywalking-api.log}
logging.level=${SW_LOGGING_LEVEL:INFO}
plugin.mount=${SW_MOUNT_FOLDERS:plugins,activations}

3.2 编写Dockerfile

FROM busybox:latest
MAINTAINER guoxinyf
#设置时区为上海
COPY zoneinfo /usr/share/zoneinfo/
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# Add a volume pointing to /tmp
RUN mkdir /sky-agent
VOLUME /sky-agent
ADD /agent //agent

3.3 打包镜像

# ll
总用量 12
drwxrwxr-x.  9 nginx 1002 4096 11月 29 15:14 agent
-rw-r--r--.  1 root  root  287 1月  12 18:28 Dockerfile
drwxr-xr-x. 20 root  root 4096 1月  12 18:28 zoneinfo
 
 
# docker build -t harbor.seeyon.com/a9/skywalking-agent-sidecar:8.3.0 ./
 
推送到harbor仓库中
# docker push harbor.seeyon.com/a9/skywalking-agent-sidecar:8.3.

六、微服务对接skywalking

后端Java服务deployment文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ${app.name}
  namespace: seeyon-${app.envType}
  labels:
    app: ${app.name}
    type: backend
spec:
  selector:
    matchLabels:
      app: ${app.name}
      type: backend
  replicas: ${app.replicas}
  template:
    metadata:
      labels:
        app: ${app.name}
        type: backend
    spec:
      volumes:
        - name: log
          nfs:
            server: 10.3.9.250  
            path: /data/NFS/v8/ci/logs/${app.volumePath}/${app.name}/${app.version}
        - name: volume
          nfs:
            server: 10.3.9.250  
            path: /data/NFS/v8/ci/volume/${app.volumePath}/${app.name}/${app.version}
        - name: sky-agent-volume
          emptyDir: {}           
      imagePullSecrets:
        - name: harbor
      initContainers:
        - name: skywalking-agent-gateway
          image: harbor.seeyon.com/a9/skywalking-agent-sidecar:8.3.0
          imagePullPolicy: Always
          command: ["cp", "-rf", "/agent", "/tmp"]
          volumeMounts:
            - name: sky-agent-volume
              mountPath: /tmp       
      containers:
        - name: ${app.name}
          image: harbor.seeyon.com/a9/${image.name}:${image.version}
          imagePullPolicy: Always
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: "4"
              memory: 1024Mi
          env:
            - name: SPRING_PROFILES_ACTIVE
              value: "${app.envType}"
            - name: server.port
              value: "${app.appport}"
            - name: seeyon.datasource.url
              value: ${app.databaseUrl}
            - name: seeyon.datasource.username
              value: ${app.databaseUsername}
            - name: seeyon.datasource.password
              value: ${app.databasePassword}
          volumeMounts:
            - name: log
              mountPath: /var/log/webapps
            - name: volume
              mountPath: /root/appdata
            - name: sky-agent-volume
              mountPath: /tmp             
          ports:
            - containerPort: ${app.appport}
              hostPort: ${app.appport}
              name: appport
          readinessProbe:
            httpGet:
              scheme: HTTP #指定协议,默认为HTTP
              path: /${app.probe}
              port: appport
            initialDelaySeconds: 30
            periodSeconds: 5
          livenessProbe:
            httpGet:
              scheme: HTTP #指定协议,默认为HTTP
              path: /${app.probe}
              port: appport
            initialDelaySeconds: 300
            periodSeconds: 50
          startupProbe:
            httpGet:
              path: /${app.probe}
              port: appport
            failureThreshold: 30
            initialDelaySeconds: 30
            periodSeconds: 10

七、修改boot pom文件,添加配置skywalking-agnt启动参数

7.1 修改boot pom文件

http://gitlab.seeyon.com/a9/code/backend/boot/blob/master/pom.xml

注:当前Java服务使用的是jib-maven-plugin插件,需要将启动参数配置到boot pom文件中

<artifactId>jib-maven-plugin</artifactId>
<version>0.10.1</version>
<configuration>
    <from>
        <!-- <image>qtsddauj.mirror.aliyuncs.com/openjdk:8u212-jre-alpine3.9</image> -->
        <!-- <image>harbor.seeyon.com/v5cloud/base-apline-jdk-1.8:v1.3</image> -->
        <image>harbor.seeyon.com/a9/base_jre:latest</image>
    </from>
    <to>
        <image>harbor.seeyon.com/a9/${image.name}</image>
        <tags>
            <tag>${project.version}</tag>
            <tag>${project.version}-${now}</tag>
        </tags>
    </to>
    <container>
        <jvmFlags>
            <jvmFlag>-javaagent:/tmp/agent/skywalking-agent.jar</jvmFlag>
            <jvmFlag>-Dskywalking.agent.service_name=${project.name}</jvmFlag>
            <jvmFlag>-Xdebug</jvmFlag>
            <jvmFlag>-Xnoagent</jvmFlag>
            <jvmFlag>-Djava.compiler=NONE</jvmFlag>
            <jvmFlag>-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888</jvmFlag>
            <jvmFlag>-Duser.timezone=Asia/Shanghai</jvmFlag>
            <jvmFlag>-Dfile.encoding=UTF-8</jvmFlag>
        </jvmFlags>
        <useCurrentTimestamp>true</useCurrentTimestamp>
    </container>

7.2 构建boot工程

http://jenkins.seeyona9.com/view/dev/job/backend-boot/

8.1 构建Java工程

http://jenkins.seeyona9.com/view/dev/job/backend-demo-customer/

8.2 进入容器内查看agent是否挂载,agent是否启用

8.3 访问skywalking-ui,查看业务调用链路

http://xxx:8080/