Docker 应用 和 APM
MegaEase Cloud 平台可以托管用户的服务器,支持快速部署并管理常见的软件服务和云原生应用,让用户以此获得不被平台锁定,低成本,高可用的云原生平台。
本文档介绍如何在 MegaEase Cloud 平台上部署 Docker 应用和 APM。
Docker APP 部署
安装 Docker
注:Docker是Docker APP的依赖服务,如果机器已经安装有Docker,可以忽略
左侧导航栏 -> Services -> Create Service ,点击按钮选择Docker开始创建。
填写信息:
- Name: 服务名称(可默认)
- Node count:需要安装的机器数量(可默认)
- Select Hosts:选择需要安装的机器(必须)
- Directory:数据安装、配置、存储目录(可默认)
- Tags:标签(可默认)
最后点击 Create 开始部署
部署 Docker APP
左侧导航栏 -> Apps -> Create App ,点击按钮选择Docker compose开始创建。
上传文件:
- 上传
docker-compose.yml
(必选) - 上传配置文件,配置文件的路径和
docker-compose.yml
中的 volumes 引用必须一致。注:该项不是必须的,如果没有可忽略。配置文件应该是能在前端编辑的文件,不能上传一些二进制大文件,上传也不会起作用。
填写信息:
- Zone.Domain.Name: 服务名称(可默认)
- Select Hosts:选择需要安装的机器(必须)
- Directory:数据安装、配置、存储目录(可默认)
- Tags:标签(可默认)
点击 Create 进行部署
部署示例:
- Java:https://hub.docker.com/r/megaease/java-apm-user-list-mysql-example (opens in a new tab)
- Go:https://hub.docker.com/r/megaease/go-apm-use-admin-redis-example (opens in a new tab)
- PHP:https://hub.docker.com/r/megaease/php-apm-user-list-frontend-example (opens in a new tab)
- .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
- 等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 查看并修改详细配置
修改配置 和 配置文档
- 接入文档:Go SDK需要在代码中接入,为了方便查看接入,这里也放置了接入文
- 等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 查看并修改详细配置
修改配置 和 配置文档
- 接入文档:PHP SDK需要在代码中接入,为了方便查看接入,这里也放置了接入文档
- 等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 查看并修改详细配置
修改配置 和 配置文档
- 接入文档:.NET SDK需要在代码中接入,为了方便查看接入,这里也放置了接入文档
- 等APP发布成功且访问服务产生数据后后,点击 See Your Data 查看当前应用的数据
展示 APM 监控数据
两种方式导航到Tracing数据:
- 侧导航栏 -> Trace Records -> Service Instances 选择过滤只看PHP应用:demo/php/demo.php.user_list_frontend
- 左侧导航栏 -> 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。