云服务器内容精选
-
SDK使能 引入依赖模块。 import { APM SDK } from "apm_harmony_sdk"; 启动及自定义参数设置。 // 启动SDK,在onCrate函数中添加以下代码: APMSDK.start(this.context.getApplicationContext()); // 设置自定义ID APMSDK.setUid(自定义ID); // 设置自定义标签 APMSDK.addTag(自定义标签);
-
版本更新说明 sdk如何处理个人信息请参考华为云应用性能分析服务数据采集SDK隐私声明。 您集成和使用华为的sdk时需要遵从个人信息保护基本要求,详情请参考华为云应用性能分析服务数据采集SDK开发者合规指南。 表1 版本更新说明 版本号 SDK下载地址 更新说明 系统 2.0.3 SDK下载 添加参数校验; 添加调试日志。 API 12 及以上 2.0.2 SDK下载 解除SDK中对其他包的依赖。 API 12 及以上 2.0.1 SDK下载 提供采集上报App启动性能、崩溃、卡顿、错误、网络请求、终端设备、自定义上报等应用监控能力。 API 12 及以上
-
智能采样算法 APM系统会采用智能采样算法,决定是否对请求进行调用链跟踪。 如果决定要跟踪,那么就会生成一个TraceID,拦截A下面的一些重要方法(一般具有树结构父子关系)的详细信息(称为event),同时APM会将TraceID透传到B,B也会拦截下面的重要方法,同时透传TraceID到C,C也跟B和A类似。每个节点分别上报event信息,通过TraceID形成关联,这样通过TraceID就可以查看整个请求的调用详情。 如果决定不跟踪,那么就不会生成TraceID,B服务由于没有收到TraceID,自身也会产生跟A服务一样的算法,决定是否要进行调用链跟踪。 数据上报后,APM系统除了会存储所有event详情,同时会将每个服务的根event(称为span)信息额外存储起来,用于后续调用链搜索。用户一般是先搜索到span信息,然后根据span信息上附带的TraceID获取到总体调用链详情。 调用链采样策略系统默认是智能采样,url分为错误url、慢url(默认800ms、用户自定义配置)、正常url三种url,每种url调用链数据的采样率单独计算。APM的统计数据是一分钟采集上报一次,第一个采集周期所有url调用链数据都按正常url采样。第二个采集周期时,根据上一个采集周期的统计数据,将url分类为错误url、慢url、正常url三种url。 错误url的采样率:cpu小于30%每分钟采集100条,cpu大于或等于30%小于60%每分钟采集50条,cpu大于或等于60%每分钟采集10条,每条url至少采集2条。 慢url的采样率:cpu小于30%每分钟采集100条,cpu大于或等于30%小于60%每分钟采集50条,cpu大于或等于60%每分钟采集10条,每条url至少采集2条。 正常url的采样率:cpu小于30%每分钟采集20条,cpu大于或等于30%小于60%每分钟采集10条,cpu大于或等于60%每分钟采集5条,每条url至少采集1条。 上述调用链算法优点是,一旦决定产生调用链信息,那么链路是完整的,帮用户做正确决策。对于大量调用的url,可能会采集不到异常请求,可以通过异常监控的指标采集等其他方式来定位系统中的异常。
-
查看调用链详情 根据搜索条件查询出来的调用链列表可以查看调用链的基本信息 在查询后的调用链列表中,单击待查看的调用链前的,查看该调用链基本信息,如下图所示。 图1 调用链基本信息 表中标识的具体参数所代表的含义如下: 调用链的HttpMethod。 调用链的RestURL,Rest URL为restful风格的URL,URL中带有变量名称,如/apm/get/{id};单击该URL可以跳转到调用链的详情页面。 调用链的开始时间。 调用链返回的HTTP状态码。 调用链的响应时间。 调用链的TraceID。 调用链所在组件。 调用链所在环境。 调用链所在实例的主机名。 调用链所在实例的IP。 调用链的实际URL。 调用链支持“查看日志”功能。 在LTS服务侧,配置“采集配置”,详细操作参见 云日志 服务 LTS《用户指南》的E CS 接入章节。 单击“查看日志”,根据traceid跳转至LTS页面。LTS页面相关操作,请参见日志搜索。 如果未开通traceid关联日志,弹出“未关联日志服务”提示框。单击“跳转”,页面跳转至“关联日志服务”页面。“关联日志服务”详细操作,参见组件设置。 支持仅展示“请求成功”或“请求失败”调用链信息,以绿色“请求成功”按钮为例。 单击处于高亮状态的绿色“请求成功”按钮,仅展示“请求成功”的调用链信息,同时红色“请求失败”按钮置灰。 当红色“请求失败”按钮置灰时,单击处于高亮状态的绿色“请求成功”按钮,则展示所有调用链信息,同时红色“请求失败”恢复高亮。 绿色“请求成功”按钮和红色“请求失败”按钮,不支持同时置灰。 用户也可以从一些监控项视图页面,比如Url监控项的table视图,单击具体的Url跳转过来,这样就已经预先填写好搜索条件,帮助用户更快速搜索出所需要的调用链信息。 调用链详情页面可以查看调用链的完整链路信息,包含本地方法堆栈和相关远程调用的调用关系 单击调用链名称,可查看调用链详细信息,如下图所示。 上半部分为调用链完整链路的时序图,展示组件之间的完整调用关系,内部包含一次调用对应的客户端和服务器端的信息,然后线条越在下面,越晚发生调用。 下半部分为调用链详细的方法堆栈,每一行代表一个方法调用,展示了调用链内部方法的详细调用关系。默认只展示javaagent支持的组件方法,如需展示应用方法,可以在JavaMethod配置中配置需要拦截的应用方法。 图2 调用关系 表中标识的具体参数所代表的含义如下: 调用链的时序图中调用接口所属的组件和环境。 数字为接口调用的客户端响应时间,单位ms,具可将鼠标指针放置在该位置进行查看。 数字为接口调用的服务端响应时间,单位ms。 调用链方法堆栈中该方法对应的关键参数数据,如tomcat入口方法展示实际url、mysql的sql调用方法则展示具体执行sql。 调用链中调用所属的组件个数。 调用参数,单击查看调用中的参数列表。 更多信息,单击“查看”,展示对应的Spans详细信息。 时序图支持折叠,单击“收起时序图”,则时序图被折叠,不再展示。 图3 时序图折叠 单击“展开时序图”则时序图被展开,展示时序图。 单击,下载时序图图片。 单击“查看日志”,根据traceid跳转至LTS页面。详细介绍,参见“查看日志”章节。 调用链是“树”状结构,深度表示“树”状结构的层数。如图4所示。 图4 深度 调用链的时序图中,如下图。 使用不同类型探针或用户接入端接入时,图中1和2显示的内容不同,详见下表。 探针类型或用户接入的类型 显示内容 web前端 WEB 微信 WE_CHAT 百度 BAIDU 支付宝 ALIPAY 钉钉 DING_TALK 移动端App Android ANDROID 移动端App iOS IOS 其它 user
-
步骤四:启动镜像 原生docker启动命令中添加java探针所需参数,其中应用名称与服务名称根据实际调整。以vmall应用、服务名称vmall-dao-service为例。 修改docker启动脚本。 示例 原始启动命令如下: docker run -p 8080:8080 demo:latest 配置后启动命令如下: docker run -e JAVA_TOOL_OPTIONS="-javaagent:/opt/oss/servicemgr/ICAgent/pinpoint/pinpoint-bootstrap.jar -Dapm_application=vmall -Dapm_tier=vmall-dao-service -Dapm_container=true" -v /opt/apm-container:/paas-apm/collectors/pinpoint -v /opt/oss/servicemgr/ICAgent/pinpoint:/opt/oss/servicemgr/ICAgent/pinpoint -p 8080:8080 demo:latest 运行docker run命令来启动镜像,可以将镜像的应用接入APM。
-
步骤四:开启应用监控 在ECS或CCE上,配置Deployment应用的启动脚本:在yaml描述文件中增加如下示例中加粗配置。 执行如下命令编辑yaml文件: vi xxx.yaml 其中xxx为文件名称,是您在创建Deployment应用时自定义的应用描述文件。如下为示例,Deployment的详细说明请参见kubernetes官方文档。 kind: Deployment apiVersion: apps/v1 metadata: name: user-service namespace: default selfLink: /apis/apps/v1/namespaces/default/deployments/user-service uid: b231788d-9abd-11e8-80a5-fa163e3a2cc7 resourceVersion: '50972062' generation: 13 creationTimestamp: '2018-08-08T03:46:56Z' labels: app: user-service stack-name: auto-test annotations: deployment.kubernetes.io/revision: '5' description: '' enable: true spec: replicas: 1 selector: matchLabels: app: user-service template: metadata: creationTimestamp: null labels: app: user-service enable: true spec: #容器外主机上的挂载目录,包括数据输出路径、Java探针包路径 volumes: - name: paas-apm hostPath: path: /opt/apm-container - name: pinpoint-pkg hostPath: path: /opt/oss/servicemgr/ICAgent/pinpoint containers: - name: user-service image: '100.125.0.198:20202/zhyyy/user-service:v1' ports: - containerPort: 8080 protocol: TCP env: - name: PAAS_APP_NAME #工作负载名称(服务名称) value: user-service - name: PAAS_NAMESPACE #CCE集群namespace,如果非CCE集群则不填该环境变量 value: default - name: PAAS_PROJECT_ID #租户项目projectId value: d698369a975645bfb35f8437d11c5a12 - name: PAAS_CLUSTER_ID #CCE集群ID,可以在CCE界面通过f12查看,如果非CCE集群则不填该环境变量 value: 89b49857-5433-11e8-941c-0255ac101f3e - name: PAAS_POD_ID valueFrom: fieldRef: fieldPath: metadata.uid - name: PAAS_MONITORING_GROUP #应用名称(监控组),建议完成一个功能的多个服务填写相同应用名称 value: shoppingmall - name: JAVA_TOOL_OPTIONS value: -javaagent:/opt/oss/servicemgr/ICAgent/pinpoint/pinpoint-bootstrap.jar -Dapm_container=true resources: {} #挂载进容器内数据输出路径、Java探针包路径 volumeMounts: - name: paas-apm mountPath: /paas-apm/collectors/pinpoint - name: pinpoint-pkg mountPath: /opt/oss/servicemgr/ICAgent/pinpoint terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: Always restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst securityContext: {} schedulerName: default-scheduler strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 0 maxSurge: 1 revisionHistoryLimit: 10 progressDeadlineSeconds: 600 status: observedGeneration: 13 replicas: 1 updatedReplicas: 1 readyReplicas: 1 availableReplicas: 1 conditions: - type: Progressing status: 'True' lastUpdateTime: '2018-09-02T13:25:46Z' lastTransitionTime: '2018-08-08T03:46:56Z' reason: NewReplicaSetAvailable message: ReplicaSet "user-service-f584f46b7" has successfully progressed. - type: Available status: 'True' lastUpdateTime: '2018-12-21T11:01:33Z' lastTransitionTime: '2018-12-21T11:01:33Z' reason: MinimumReplicasAvailable message: Deployment has minimum availability. 使用修改后的Deployment重启应用,开启应用性能监控。
-
步骤四:在APM上管理应用 应用启动后,等待3分钟应用数据就会呈现在APM界面中,此时登录APM,您可以在APM上通过拓扑、调用链等进行应用性能优化,详细操作请参考用户指南。 (可选)如果您想访问示例应用,可以进行如下操作: 修改ECS安全组规则,配置安全组入方向80端口访问许可,以确保可以通过浏览器访问示例应用。 在浏览器中打开“http://ECS的弹性IP”,访问示例应用并进行查询商品、查看购物车等操作。
-
步骤三:开启应用监控 ICAgent安装完成后,需通过修改应用启动参数开启应用性能监控功能来加载ICAgent,否则无法正常使用APM对应用进行监控。针对示例应用,APM已经提供了修改后的脚本,所以您无需再进行修改,只需要在应用所在的ECS上执行如下命令启动修改后的脚本即可。 cd /root/testdemo chmod +x start_apminside.sh bash start_apminside.sh
-
云审计 服务支持的APM操作列表 APM通过云审计服务记录与APM服务相关的操作事件,便于日后的查询、审计和回溯。 表1 云审计服务支持的APM操作列表 操作名称 资源类型 事件名称 删除应用 APM clearApps 设置事务别名 APM setAlias 更新虚机服务分组 APM updateVirtualService 更新事务配置 APM updateTxTypeSettings 更新拓扑Apdex阈值 APM updateThresholds 设置事务分组 APM txtypeGroupOperation 删除应用配置 apm deleteAppGroup 更新采集开关配置 apm setAppPpswitcherConfig 更新智能采样配置 apm setAppCallChainConfig 更新内存检测机制配置 apm setAppMwsConfig 更新日志增加TraceID配置 apm setAppLogTransacConfig 更新SQL分析开关配置 apm setAppSqlConfig 更新忽略HTTP响应代码或忽略错误和异常配置 apm setAppIgnoreConfig 父主题: 云审计服务支持的关键操作
-
注意事项 针对 AOM 和APM,您总共可以创建不超过50个静态阈值模板,如果静态阈值模板数量已达上限50个时,请删除不需要的静态阈值模板后重新创建。APM界面只展示APM的静态阈值模板,如需查看全部模板请在AOM控制台进行查看。 设置通知策略 阈值规则的状态(正常、超限阈值)发生变化时,如需使用邮件或短信等方式发送通知,请参考下面操作在 SMN 界面设置通知策略。如不需接收邮件或短信通知,请跳过下面操作。具体操作如下: 创建一个主题,操作详见创建主题。 设置主题策略,操作详见设置主题策略。 设置主题策略时,“可发布消息的服务”必须选择“APM”,否则会导致通知发送失败。 为主题添加相关的订阅者,即通知的接收人(例如:邮件或短信),操作详见订阅主题。
-
更多静态阈值模板操作 静态阈值模板创建完成后,您还可以执行表1中的操作。 表1 相关操作 操作 说明 使用静态阈值模板创建一条批量阈值规则 单击“操作”列的“创建规则”,操作详见使用模板创建批量阈值规则。 修改静态阈值模板 单击“操作”列的“编辑”。 删除静态阈值模板 删除一个静态阈值模板:单击“操作”列的“删除”。 删除一个或多个静态阈值模板:选中一个或多个静态阈值模板前的复选框,单击页面上方的“删除”。 搜索静态阈值模板 在右上角的搜索框中输入模板名称关键字,单击后显示匹配对象。
-
注意事项 针对AOM和APM,您总共可以创建不超过1000条阈值规则,如果阈值规则数量已达上限1000条时,请删除不需要的阈值规则后重新创建。APM界面只展示APM的阈值规则,如需查看全部规则请在AOM控制台进行查看。 设置通知策略 阈值规则的状态(正常、超限阈值)发生变化时,如需使用邮件或短信等方式发送通知,请参考下面操作在SMN界面设置通知策略。如不需接收邮件或短信通知,请跳过下面操作。具体操作如下: 创建一个主题,操作详见创建主题。 设置主题策略,操作详见设置主题策略。 设置主题策略时,“可发布消息的服务”必须选择“APM”,否则会导致通知发送失败。 为主题添加相关的订阅者,即通知的接收人(例如:邮件或短信),操作详见订阅主题。
-
创建方式 阈值规则支持创建批量阈值规则,供您选择使用。 批量阈值规则(该功能仅对华北-北京一区域和华东-上海二区域生效):资源和规则是多对一的关系,当监控多个资源时,一次创建操作完成后,只生成一条规则,多个资源是通过同一条规则进行监控。 当需要集中监控多个资源时,您需使用静态阈值模板进行创建,操作详见使用模板创建批量阈值规则。静态阈值模板是为创建批量阈值规则做准备的,您需先创建一个静态阈值模板,操作详见创建静态阈值模板。
-
APM自定义策略样例 示例1:授权用户安装ICAgent权限 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "apm:icmgr:create" ] } ] } 示例2:拒绝用户卸载采集组件 拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Alow和Deny,则遵循Deny优先。 如果您给用户授予APM FullAccess的系统策略,但不希望用户拥有APM FullAccess中定义的卸载采集组件权限,您可以创建一条拒绝卸载采集组件的自定义策略,然后同时将APM FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对APM执行除了卸载采集组件外的所有操作。拒绝策略示例如下: { "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "apm:icmgr:delete" ] } ] } 示例3:多个授权项策略 一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务。多个授权语句策略描述如下: { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "aom:*:list", "aom:*:get", "apm:*:list", "apm:*:get" ] }, { "Effect": "Allow", "Action": [ "cce:cluster:get", "cce:cluster:list", "cce:node:get", "cce:node:list" ] } ] }
-
内存指标图表 如图1所示,展示设置的时间段内某个实例的总内存、堆内存、非堆内存等JVM不同内存区域的最大值、分配值和使用情况的趋势,也展示设置的时间段内某个实例的垃圾收集堆的GC时间和GC次数趋势。 图1 内存指标图 JVM内存介绍 JVM区域总体分为Heap memory和Non-Heap memory。 Heap memory:堆是Java 虚拟机运行时数据区域,分配所有实例和数组的内存。对象的堆内存由称为垃圾回收器的自动内存管理系统回收。Heap区分为Eden Space、Survivor Space和Tenured Space。 Non-Heap memory:Java 虚拟机管理堆之外的内存。Non-Heap区分为Code Cache、Permanent Space或Meta Space。 Java堆是垃圾收集器管理的主要区域,又称为Garbage Collection Heap,GC方式包括Full GC和Minor GC。 表1 内存区域说明 区 域名 称 说明 Eden Space 用于最初从线程池分配内存给大部分对象。 Survivor Space 用于保存在Eden区内存池中经过垃圾回收后没有被回收的对象。 Tenured Space 用于保持已经在Survivor区内存池中存在了一段时间的对象。 Code Cache 用于编译和保存本地代码的内存。 Permanent Space 用于保存虚拟机的静态数据,例如,类和方法对象。 Meta Space 用于保存本地化内存中类的元数据。Java 8之后Meta Space替代Permanent Space。 Direct Buffer 监控直接缓冲区的使用情况。 Full GC 当内存回收之后仍无法满足内存空间分配需求时, 对整个堆空间(新生代、老年代和永久代)进行垃圾收集。 Minor GC 当分配对象遇到内存不足时,对新生代空间(Eden区和Survivor区)进行垃圾收集。 JVM采用分代垃圾回收。在JVM的内存空间中把堆空间分为老年代和新生代。将大量(90%以上)创建后短期消亡的对象存储在新生代,而老年代中存放生命周期长久的实例对象。新生代空间分为Eden区和两个Survivor区。新对象首先分配在Eden区,Survivor区作为Eden区和Tenured区的缓冲,在Survivor区的对象经历若干次收集仍然存活的,就会被转移到老年区,如图2所示。 图2 内存区域图解 新生代共有两个Survivor区,分别用from和to指针指代,其中to指针指向空的Survivor区。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格