[10.14 上海 WorkShop] 通过 ARMS 实现应用监控
应用实时监控服务 ARMS(Application Real-Time Monitoring Service)是一款阿里云应用性能管理(APM)类监控产品。只要为部署在容器服务 Kubernetes 版中的 Java/PHP 应用安装 ARMS 应用监控组件,您无需修改任何代码,就能借助 ARMS 对应用进行全方位监控,实现自动发现应用拓扑、自动发现并监控接口、捕获异常事务和慢事务等功能,以便您更快速地定位出错接口和慢接口、重现调用参数、检测内存泄漏、发现系统瓶颈,从而大幅提升线上问题诊断问题的效率。ARMS 应用监控的详细信息请参见应用监控概述。
前提条件
- 创建Kubernetes集群
- 开通 ARMS
操作步骤
步骤一:安装 ARMS 应用监控组件
首先需要安装 ARMS 应用监控组件 ack-arms-pilot。
(福利推荐:阿里云、腾讯云、华为云服务器最新限时优惠活动,云服务器1核2G仅88元/年、2核4G仅698元/3年,点击这里立即抢购>>>)
- 登录容器服务 Kubernetes 版控制台。
- 在左侧导航栏选择市场 > 应用目录,在右侧选中 ack-arms-pilot。
- 在应用目录 – ack-arms-pilot 页面上,在右侧的创建面板中选择前提条件中创建的集群和命名空间,并单击创建。
步骤二:为容器服务授予访问权限
为容器服务 Kubernetes 版授予 ARMS 资源的访问权限。
- 使用主账号登录容器服务 Kubernetes 版控制台。
- 在左侧导航栏选择集群 > 集群,在目标集群右侧操作列单击管理。
- 在目标集群的基本信息页面上,单击集群资源区域的 Worker RAM 角色链接。
- 在 RAM 访问控制控制台的 RAM 角色管理页面上,单击权限管理页签上的目标权限策略名称链接。
-
在策略内容页签上单击修改策略内容,并在右侧的修改策略内容面板将以下内容添加到策略内容中,最后单击确认。
{ "Action": "arms:*", "Resource": "*", "Effect": "Allow" }
步骤三:为 Java 应用开启 ARMS 应用监控
以下步骤分别对应创建新应用和已有应用这两种情况。
如需在创建新应用的同时开启 ARMS 应用监控,请按以下步骤操作。
- 在容器服务管理控制台左侧导航栏选择应用 > 无状态。
- 在无状态(Deployment)页面右上角单击使用模板创建。
-
在使用模板创建页面上选择集群、命名空间和示例模板,并在模板(YAML 格式)中将以下
annotations
添加到 spec > template > metadata 层级下。说明: 请将
<your-deployment-name>
替换为您的应用名称。annotations: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>"
创建一个无状态(Deployment)应用并开启 ARMS 应用监控的完整 YAML 示例模板如下:
注意:如果您的环境无法访问公网,请将镜像地址替换为 vpc 地址,如:
将 registry.cn-hangzhou.aliyuncs.com/containerdemo/arms-springboot-demo:v0.1
修改:
registry-vpc.cn-hangzhou.aliyuncs.com/containerdemo/arms-springboot-demo:v0.1
apiVersion: v1 kind: Namespace metadata: name: arms-demo --- apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: arms-springboot-demo namespace: arms-demo labels: app: arms-springboot-demo spec: replicas: 2 selector: matchLabels: app: arms-springboot-demo template: metadata: annotations: armsPilotAutoEnable: "on" armsPilotCreateAppName: "arms-k8s-demo" labels: app: arms-springboot-demo spec: containers: - resources: limits: cpu: 0.5 image: registry.cn-hangzhou.aliyuncs.com/containerdemo/arms-springboot-demo:v0.1 imagePullPolicy: Always name: arms-springboot-demo env: - name: SELF_INVOKE_SWITCH value: "true" - name: COMPONENT_HOST value: "arms-demo-component" - name: COMPONENT_PORT value: "6666" - name: MYSQL_SERVICE_HOST value: "arms-demo-mysql" - name: MYSQL_SERVICE_PORT value: "3306" --- apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: arms-springboot-demo-subcomponent namespace: arms-demo labels: app: arms-springboot-demo-subcomponent spec: replicas: 2 selector: matchLabels: app: arms-springboot-demo-subcomponent template: metadata: annotations: armsPilotAutoEnable: "on" armsPilotCreateAppName: "arms-k8s-demo-subcomponent" labels: app: arms-springboot-demo-subcomponent spec: containers: - resources: limits: cpu: 0.5 image: registry.cn-hangzhou.aliyuncs.com/containerdemo/arms-springboot-demo:v0.1 imagePullPolicy: Always name: arms-springboot-demo-subcomponent env: - name: SELF_INVOKE_SWITCH value: "false" - name: MYSQL_SERVICE_HOST value: "arms-demo-mysql" - name: MYSQL_SERVICE_PORT value: "3306" --- apiVersion: v1 kind: Service metadata: labels: name: arms-demo-component name: arms-demo-component namespace: arms-demo spec: ports: # the port that this service should serve on - name: arms-demo-component-svc port: 6666 targetPort: 8888 # label keys and values that must match in order to receive traffic for this service selector: app: arms-springboot-demo-subcomponent --- apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: arms-demo-mysql namespace: arms-demo labels: app: mysql spec: replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - resources: limits: cpu: 0.5 image: registry.cn-hangzhou.aliyuncs.com/containerdemo/arms-demo-mysql:v0.1 name: mysql ports: - containerPort: 3306 name: mysql --- apiVersion: v1 kind: Service metadata: labels: name: mysql name: arms-demo-mysql namespace: arms-demo spec: ports: # the port that this service should serve on - name: arms-mysql-svc port: 3306 targetPort: 3306 # label keys and values that must match in order to receive traffic for this service selector: app: mysql ---
如需为现有应用开启 ARMS 应用监控,请按以下步骤操作。
- 在容器服务管理控制台左侧导航栏选择应用 > 无状态或应用 > 有状态。
- 在无状态(Deployment)或有状态(StatefulSet)页面上,选择集群和命名空间,并在目标应用右侧操作列中选择更多 > 查看 Yaml。
-
在编辑 YAML 对话框中将以下
annotations
添加到 spec > template > metadata 层级下,并单击更新。说明: 请将
<your-deployment-name>
替换为您的应用名称。annotations: armsPilotAutoEnable: "on" armsPilotCreateAppName: "<your-deployment-name>"
后续步骤
完成上述步骤后,您就为部署在容器服务 Kubernetes 版中的应用开启了 ARMS 应用监控。在目标应用的操作列中单击 ARMS 控制台,将进入 ARMS 控制台的应用监控页面。ARMS 应用监控具备以下能力:
- 展示应用总体性能关键指标,自动发现应用拓扑。
- 3D 拓扑图能立体展示应用、服务和主机的健康状况,以及应用的上下游依赖关系,帮助您快速定位诱发故障的服务、被故障影响的应用和关联的主机等,全方位地诊断故障根源,从而快速排除故障。
- 捕获异常事务和慢事务,获取接口的慢 SQL、MQ 堆积分析报表或者异常分类报表,对错、慢等常见问题进行更细致的分析。
- 自动发现和监控应用代码中常见的 Web 框架和 RPC 框架,并自动统计 Web 接口和 RPC 接口的调用量、响应时间、错误数等指标。
你还在原价购买阿里云、腾讯云、华为云、天翼云产品?那就亏大啦!现在申请成为四大品牌云厂商VIP用户,可以3折优惠价购买云服务器等云产品,并且可享四大云服务商产品终身VIP优惠价,还等什么?赶紧点击下面对应链接免费申请VIP客户吧:
相关文章
- Jenkins Android APP 持续集成体系建设二—自动部署、执行测试任务,关联打包任务
- Jenkins Android APP 持续集成体系建设一—源码编译、打包、输出APK包、邮件通知
- 性能调优之iostat命令详解
- 移动端自动化测试-Mac-IOS-Appium环境搭建
- 移动端自动化测试-Windows-Android-Appium环境搭建
- Android开发——adb连接夜神模拟器
- Android项目刮刮奖详解扩展篇——开源刮刮奖View的制作
- Android项目刮刮奖详解(四)
- Android项目刮刮奖详解(三)
- Android项目刮刮奖详解(二)
- Android项目刮刮奖详解(一)
- Android开发——Drawable与Bitmap知识
- Android开发——绘图基础
- Android破解学习之路(八)—— 进化之地内购破解
- Android破解学习之路(九)—— 练手破解游戏集合
- Android开发——使用自带图标
- 教我徒弟Android开发入门(四)
- Android安全–加强版Smali Log注入
- Android APK 签名文件MANIFEST.MF、CERT.SF、CERT.RSA分析
- Android安全–检测是否为Android模拟器