应用实时监控服务 ARMS(Application Real-Time Monitoring Service)是一款阿里云应用性能管理(APM)类监控产品。只要为部署在容器服务 Kubernetes 版中的 Java/PHP 应用安装 ARMS 应用监控组件,您无需修改任何代码,就能借助 ARMS 对应用进行全方位监控,实现自动发现应用拓扑、自动发现并监控接口、捕获异常事务和慢事务等功能,以便您更快速地定位出错接口和慢接口、重现调用参数、检测内存泄漏、发现系统瓶颈,从而大幅提升线上问题诊断问题的效率。ARMS 应用监控的详细信息请参见应用监控概述。
首先需要安装 ARMS 应用监控组件 ack-arms-pilot。
在左侧导航栏选择市场 > 应用目录,在右侧选中 ack-arms-pilot。
在应用目录 - ack-arms-pilot 页面上,在右侧的创建面板中选择前提条件中创建的集群和命名空间,并单击创建。
为容器服务 Kubernetes 版授予 ARMS 资源的访问权限。
使用主账号登录容器服务 Kubernetes 版控制台。
在左侧导航栏选择集群 > 集群,在目标集群右侧操作列单击管理。
在目标集群的基本信息页面上,单击集群资源区域的 Worker RAM 角色链接。
在 RAM 访问控制控制台的 RAM 角色管理页面上,单击权限管理页签上的目标权限策略名称链接。
在策略内容页签上单击修改策略内容,并在右侧的修改策略内容面板将以下内容添加到策略内容中,最后单击确认。
{
"Action": "arms:*",
"Resource": "*",
"Effect": "Allow"
}
以下步骤分别对应创建新应用和已有应用这两种情况。
如需在创建新应用的同时开启 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>"
以下步骤分别对应创建新应用和已有应用这两种情况。
如需在创建新应用的同时开启 ARMS 应用监控,请按以下步骤操作。
在容器服务管理控制台左侧导航栏选择应用 > 无状态。
在**无状态(Deployment)**页面右上角单击 使用模板创建。
在使用模板创建页面上选择 集群、 命名空间和 示例模板,并在 模板(YAML 格式)中将以下 annotations
添加到 spec > template > metadata 层级下。
说明: 请将 <your-deployment-name>
替换为您的应用名称。
annotations:
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "<your-deployment-name>"
armsAppType: PHP
(本步骤仅限首次安装时)请修改 arms-pilot 安装的同名命名空间下的 ConfigMap arms-php.ini,该文件内容为 php.ini 默认配置。
说明: 注意修改 extension=/usr/local/arms/arms-php-agent/arms-7.2.so,arms-7.2.so 中的 7.2 为您的 PHP 版本,可使用的值为 5.4/5.5/5.6/7.0/7.1/7.2。
挂载 arms-php.ini ConfigMap 项到 php.ini 文件 spec > template > spec > containers 下,将 mountPath 设置为您的 php.ini 文件路径。
- name: php-ini
mountPath: /etc/php/7.2/fpm/php.ini
subPath: php.ini
volumes:
- name: php-ini
configMap:
name: arms-php.ini
创建一个无状态(Deployment)应用并开启 ARMS 应用监控的完整 YAML 示例模板如下:
apiVersion: v1
kind: Namespace
metadata:
name: arms-php-demo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
namespace: arms-php-demo
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.7
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: password
ports:
- containerPort: 3306
name: mysql
---
apiVersion: v1
kind: Secret
metadata:
name: mysql-secret
namespace: arms-php-demo
type: Opaque
data:
# root base64
username: cm9vdA==
# 123456 base64
password: MTIzNDU2
---
apiVersion: v1
kind: Service
metadata:
name: mysql-service
namespace: arms-php-demo
labels:
app: mysql
spec:
ports:
- port: 3306
targetPort: 3306
selector:
app: mysql
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
namespace: arms-php-demo
data:
default.conf: |
server {
listen 80;
server_name localhost;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/public/$fastcgi_script_name;
include fastcgi_params;
}
}
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: arms-php-demo
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: php-server
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-deployment
namespace: arms-php-demo
labels:
name: php-server
spec:
replicas: 2
selector:
matchLabels:
app: php-server
template:
metadata:
labels:
app: php-server
annotations:
armsPilotAutoEnable: "on"
armsPilotCreateAppName: PHP-ACSK8S-DEMO-3
armsAppType: PHP
spec:
containers:
- name: nginx-php
image: nginx:stable
ports:
- containerPort: 80
volumeMounts:
- name: nginx-conf
mountPath: /etc/nginx/conf.d/
- name: php-server
image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-php-demo:v1
imagePullPolicy: Always
ports:
- containerPort: 9000
env:
- name: DB_HOST
value: mysql-service
volumeMounts:
- name: php-ini
mountPath: /etc/php/7.2/fpm/php.ini
subPath: php.ini
volumes:
- name: php-ini
configMap:
name: arms-php.ini
- name: nginx-conf
configMap:
name: nginx-config
如需为现有应用开启 ARMS 应用监控,请按以下步骤操作。
在容器服务管理控制台左侧导航栏选择应用 > 无状态或应用 > 有状态。
在无状态(Deployment)或有状态(StatefulSet)页面上,选择 集群和 命名空间,并在目标应用右侧 操作列中选择更多 > 查看 Yaml。
在编辑 YAML 对话框中将以下 annotations
添加到 spec > template > metadata 层级下,并单击 更新。
说明: 请将 替换为您的应用名称。
annotations:
armsPilotAutoEnable: "on"
armsPilotCreateAppName: "<your-deployment-name>"
armsAppType: PHP
挂载 arms-php.ini ConfigMap 项到 php.ini 文件 spec > template > spec > containers 下,将 mountPath 设置为您的 php.ini 文件路径。
- name: php-ini
mountPath: /etc/php/7.2/fpm/php.ini
subPath: php.ini
volumes:
- name: php-ini
configMap:
name: arms-php.ini
在无状态(Deployment)或有状态(StatefulSet)页面上,目标应用的操作列将出现 ARMS 控制台按钮。
说明: 若操作列没有出现 ARMS 控制台,请检查您是否已授权容器服务访问 ARMS 资源。
完成上述步骤后,您就为部署在容器服务 Kubernetes 版中的应用开启了 ARMS 应用监控。在目标应用的操作列中单击 ARMS 控制台,将进入 ARMS 控制台的应用监控页面。ARMS 应用监控具备以下能力:
展示应用总体性能关键指标,自动发现应用拓扑。
3D 拓扑图能立体展示应用、服务和主机的健康状况,以及应用的上下游依赖关系,帮助您快速定位诱发故障的服务、被故障影响的应用和关联的主机等,全方位地诊断故障根源,从而快速排除故障。
捕获异常事务和慢事务,获取接口的慢 SQL、MQ 堆积分析报表或者异常分类报表,对错、慢等常见问题进行更细致的分析。
自动发现和监控应用代码中常见的 Web 框架和 RPC 框架,并自动统计 Web 接口和 RPC 接口的调用量、响应时间、错误数等指标。
下列表单展示此chart的配置项与默认值,如需修改,请在参数列表中修改。
Parameter | Description | Default |
---|---|---|
controller.phpVersion |
PHP应用的PHP版本号,Java应用可忽略,支持的版本号参考 https://help.aliyun.com/document_detail/103096.html | 7.2 |