手册
Docker 应用 和 APM

Docker 应用 和 APM

MegaEase Cloud 平台可以托管用户的服务器,支持快速部署并管理常见的软件服务和云原生应用,让用户以此获得不被平台锁定,低成本,高可用的云原生平台。

本文档介绍如何在 MegaEase Cloud 平台上部署 Docker 应用和 APM。

Docker APP 部署

安装 Docker

注:Docker是Docker APP的依赖服务,如果机器已经安装有Docker,可以忽略

左侧导航栏 -> Services -> Create Service ,点击按钮选择Docker开始创建。

填写信息:

  1. Name: 服务名称(可默认)
  2. Node count:需要安装的机器数量(可默认)
  3. Select Hosts:选择需要安装的机器(必须)
  4. Directory:数据安装、配置、存储目录(可默认)
  5. Tags:标签(可默认)

最后点击 Create 开始部署

部署 Docker APP

左侧导航栏 -> Apps -> Create App ,点击按钮选择Docker compose开始创建。

上传文件:

  1. 上传 docker-compose.yml(必选)
  2. 上传配置文件,配置文件的路径和 docker-compose.yml 中的 volumes 引用必须一致。注:该项不是必须的,如果没有可忽略。配置文件应该是能在前端编辑的文件,不能上传一些二进制大文件,上传也不会起作用。

填写信息:

  1. Zone.Domain.Name: 服务名称(可默认)
  2. Select Hosts:选择需要安装的机器(必须)
  3. Directory:数据安装、配置、存储目录(可默认)
  4. Tags:标签(可默认)

点击 Create 进行部署

部署示例:

  1. Java:https://hub.docker.com/r/megaease/java-apm-user-list-mysql-example (opens in a new tab)
  2. Go:https://hub.docker.com/r/megaease/go-apm-use-admin-redis-example (opens in a new tab)
  3. PHP:https://hub.docker.com/r/megaease/php-apm-user-list-frontend-example (opens in a new tab)
  4. .NET:https://hub.docker.com/repository/docker/megaease/net-apm-manager-example (opens in a new tab)

Docker APM 监控

填写配置时,点击 APM Agents 的开关,选择所要监控的 APM 监控类型。

Java Agent 监控

选取 APM Agents --> Java

部署示例(使用方式点链接查看):https://hub.docker.com/r/megaease/java-apm-user-list-mysql-example (opens in a new tab)

访问服务:curl http://ip:port/user/list

加入启动参数 JAVA_OPTS

在制作 Docker 镜像时,Java 的启动参数必须加上环境变量 JAVA_OPTS,如:

java ${JAVA_OPTS} -jar ./java-user-list-1.0.0.jar

配置详情:(非必要,正常情况下默认即可)

点击 JAVA 查看并修改详细配置

修改配置 和 配置文档

接入文档 (opens in a new tab):Docker APP的Java监控接入,需要在 Dockerfile 构建镜像时,启动参数中加上环境变量 $JAVA_OPTS,如:

java ${JAVA_OPTS} -jar ./java-user-list-1.0.0.jar

  1. 等APP发布成功且访问服务产生数据后,点击 See Your Data 查看当前应用的数据

Go SDK 监控

选择 APM Agents --> Go

部署用例(使用方式点链接查看):https://hub.docker.com/r/megaease/go-apm-use-admin-redis-example (opens in a new tab)

访问服务:curl http://ip:port/is_root\?name\=admin

SDK 接入:

根据文档接入SDK:左侧导航栏 -> Documents -> Go -> How to Use Go SDK (opens in a new tab)

配置详情:(非必要,正常情况下默认即可)

点击 Go 查看并修改详细配置

修改配置 和 配置文档

  1. 接入文档:Go SDK需要在代码中接入,为了方便查看接入,这里也放置了接入文
  2. 等APP发布成功且访问服务产生数据后后,点击 See Your Data 查看当前应用的数据

PHP SDK 监控

选择 APM Agents --> PHP

部署用例(使用方式点链接查看):https://hub.docker.com/r/megaease/php-apm-user-list-frontend-example (opens in a new tab)

访问服务:http://ip:port/

SDK 接入:

根据文档接入SDK:左侧导航栏 -> Documents -> PHP -> How to Use PHP SDK (opens in a new tab)

配置详情:(非必要,正常情况下默认即可)

点击 PHP 查看并修改详细配置

修改配置 和 配置文档

  1. 接入文档:PHP SDK需要在代码中接入,为了方便查看接入,这里也放置了接入文档
  2. 等APP发布成功且访问服务产生数据后后,点击 See Your Data 查看当前应用的数据

.NET SDK 监控

选择 APM Agents --> .NET

部署用例(使用方式点链接查看):https://hub.docker.com/repository/docker/megaease/net-apm-manager-example (opens in a new tab)

访问服务:http://ip:port/user?name="addName"

SDK 接入:

根据文档接入SDK:左侧导航栏 -> Documents -> .NET -> How to Use .NET SDK (opens in a new tab)

配置详情:(非必要,正常情况下默认即可)

点击 .NET 查看并修改详细配置

修改配置 和 配置文档

  1. 接入文档:.NET SDK需要在代码中接入,为了方便查看接入,这里也放置了接入文档
  2. 等APP发布成功且访问服务产生数据后后,点击 See Your Data 查看当前应用的数据

展示 APM 监控数据

两种方式导航到Tracing数据:

  1. 侧导航栏 -> Trace Records -> Service Instances 选择过滤只看PHP应用:demo/php/demo.php.user_list_frontend
  2. 左侧导航栏 -> Apps -> 应用详情 -> Configuration -> APM Agents Detail -> 点击 See Your Data

查看Topology

侧导航栏 -> Topology -> Service Instances 选择过滤只看相关应用:demo/php/demo.php.user_list_frontend

Docker App CI/CD

MegaEase Cloud 提供了 CI/CD(持续集成和持续交付)解决方案,可以在代码更新时自动构建和部署 Docker App。

启用镜像仓库

要使用 MegaEase Cloud 的 CI/CD,你必须首先启用 MegaEase Cloud 提供的镜像仓库。

请到 设置 -> 镜像仓库 -> 启用镜像仓库,然后单击按钮启用。

启用镜像仓库后,可以查看仓库的地址用户名密码

将镜像推送到仓库后,你可以在页面上查看和管理镜像。

添加 Github Action 脚本

MegaEase Cloud 提供了 Github Action 脚本执行持续集成任务,脚本会构建镜像并将其推送到上一步启用的镜像仓库中。

请将以下脚本文件添加到项目的 .github/workflow 目录:

  • megaease_ci_workflow.yml
name: MegaEase Cloud CI Workflow
on:
  push:
    branches:
      - main
      - master
 
jobs:
  megaease_cloud_ci_job:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
 
      - name: Docker meta
        id: meta
        uses: docker/metadata-action@v4
        with:
          images: |
            ${{ vars.megaease_registry_url }}/${{ vars.megaease_ci_image_name }}
          tags: |
            type=sha
            ${{ vars.megaease_ci_image_tag }}
 
      - name: Login to the registry 
        uses: docker/login-action@v2
        with:
          registry: ${{ vars.megaease_registry_url }}
          username: ${{ vars.megaease_registry_username }}
          password: ${{ secrets.megaease_registry_password }}
 
      - name: Build and push image
        uses: docker/build-push-action@v3
        with:
          context: .
          file: ${{ vars.megaease_ci_dockerfile_path}}
          push: true
          tags: ${{ steps.meta.outputs.tags }}
 

你需要将脚本中使用到的变量和 secrets 添加到 Github 的项目设置中。

Github Action 变量

  • megaease_registry_url: 你的 MegaEase Cloud 镜像仓库地址,比如 registry.megaease.cn/demo

  • megaease_registry_username: 你的 MegaEase Cloud 镜像仓库用户名。

  • megaease_ci_dockerfile_path: Dockerfile 的文件路径,Githun Action 将使用此文件路径来构建镜像。

  • megaease_ci_image_name: Github Action 构建的镜像的名称。

  • megaease_ci_image_tag: Github Action 构建的镜像的标签。请确保标签与部署的 Docker App 中的使用的标签一致。建议设置一个稳定版本的标签, 比如 latest

示例如下:

Github Action secrets

  • megaease_registry_password: 你的 MegaEase Cloud 镜像仓库的密码。

示例如下:

配置完成后,你可以在部署 Docker App 时启用 CI/CD。

 

执行 Github Action

当代码被推送到 Github 仓库时,Github Action 将被触发以执行镜像构建和推送。

镜像推送成功后,会触发 Docker App 的持续部署事件,自动部署更新 Docker App。