云服务器内容精选

  • 数据面监控 此处默认统计近1小时、近8小时和近24小时的各维度资源用量。如需查看更多监控信息,请单击“查看全部监控”,跳转至“仪表盘”页面,相应指导请参见使用仪表盘。 您可以将鼠标悬停在图表上,以便查看每分钟的监控数据。 CPU:单位时间内集群CPU使用情况的统计。 内存:单位时间内集群内存使用情况的统计。 PVC存储状态:PVC和PV的绑定情况。 Pod数量状态趋势:实时监控集群Pod的状态。 Pod总重启次数趋势:近5分钟的集群的Pod重启次数总和。 节点状态趋势:实时监控集群节点的状态。
  • 健康概况 资源健康概况 资源健康概况涵盖了节点、工作负载和Pod三类资源中异常资源所占比例,以及命名空间的总数,以便及时发现和解决业务异常。 控制面健康概况 除了控制面组件和Master节点的异常占比,控制面资源概况中还提供了API Server的总QPS和请求错误率指标。作为集群的API服务提供者,控制面API Server的异常可能会导致整个集群无法访问,同时也会影响依赖API Server的工作负载的正常运行,QPS和请求错误率可以帮助您快速识别和修复问题。 图2 健康概况
  • 资源消耗Top统计 在资源消耗Top统计中,CCE服务会将CPU使用率和内存使用率排名前五的节点、无状态负载、有状态负载和Pod纳入统计范围,以帮助您识别资源消耗“大户”。如果您需要查看全部数据,可前往节点、工作负载或Pod页面。 图3 资源消耗Top统计 监控名词解释: CPU使用率 节点CPU使用率 = 节点的CPU非空闲时间所占的平均比例。 工作负载CPU使用率 = 工作负载各个Pod中CPU使用率的平均值 Pod CPU使用率 = Pod实际使用的CPU核数 / 业务容器CPU核数限制值之和(未配置限制值时采用节点总量) 内存使用率 节点内存使用率 = 节点的内存使用量除以节点的内存总量。 工作负载内存使用率 = 工作负载各个Pod中内存使用率的平均值 Pod内存使用率 = Pod实际使用的物理内存 / 业务容器物理内存限制值之和(未配置限制值时采用节点总量)
  • 如何使用Istio调用链埋点 Header信息包括如下内容,更多关于调用链的信息请参见https://istio.io/docs/tasks/telemetry/distributed-tracing/。 x-request-id x-b3-traceid x-b3-spanid x-b3-parentspanid x-b3-sampled x-b3-flags x-ot-span-context 下面以一个典型的例子来说明如何在接收和发送请求时,通过修改代码来传递调用链相关Header信息。 Python代码示例 服务接收端在处理请求时,从请求端解析相关Header。在调用后端请求时,传递Trace相关的header。 def getForwardHeaders(request): headers = {} if 'user' in session: headers['end-user'] = session['user'] incoming_headers = ['x-request-id', 'x-b3-traceid', 'x-b3-spanid', 'x-b3-parentspanid', 'x-b3-sampled', 'x-b3-flags', 'x-ot-span-context' ] return headers @ app.route('/productpage') def front(): product_id = 0# TODO: replace default value headers = getForwardHeaders(request) user = session.get('user', '') product = getProduct(product_id) detailsStatus, details = getProductDetails(product_id, headers) reviewsStatus, reviews = getProductReviews(product_id, headers) return render_template( 'productpage.html', detailsStatus = detailsStatus, reviewsStatus = reviewsStatus, product = product, details = details, reviews = reviews, user = user) Java代码示例 在java Rest接口上除了解析一般业务参数外,需要从header中解析trace相关信息。同样在调用下一个服务时传递该header信息。 @GET @Path("/reviews/{productId}") public Response bookReviewsById(@PathParam("productId") int productId, @HeaderParam("end-user") String user, @HeaderParam("x-request-id") String xreq, @HeaderParam("x-b3-traceid") String xtraceid, @HeaderParam("x-b3-spanid") String xspanid, @HeaderParam("x-b3-parentspanid") String xparentspanid, @HeaderParam("x-b3-sampled") String xsampled, @HeaderParam("x-b3-flags") String xflags, @HeaderParam("x-ot-span-context") String xotspan) { int starsReviewer1 = -1; int starsReviewer2 = -1; if (ratings_enabled) { JsonObject ratingsResponse = getRatings(Integer.toString(productId), user, xreq, xtraceid, xspanid, xparentspanid, xsampled, xflags, xotspan); if (ratingsResponse != null) { if (ratingsResponse.containsKey("ratings")) { JsonObject ratings = ratingsResponse.getJsonObject("ratings"); if (ratings.containsKey("Reviewer1")){ starsReviewer1 = ratings.getint("Reviewer1"); } if (ratings.containsKey("Reviewer2")){ starsReviewer2 = ratings.getint("Reviewer2"); } } } } String jsonResStr = getJsonResponse(Integer.toString(productId), starsReviewer1, starsReviewer2); return Response.ok().type(MediaType.APPLICATION_JSON).entity(jsonResStr).build(); } }
  • 查看流量监控情况 登录应用服务网格控制台,单击已对接APM的服务网格名称进入详情页面。 在左侧导航栏中选择“监控中心”-“流量监控”。 查看整个系统的监控情况。 拓扑图中显示了系统处于运行中和未就绪的应用数量。 图1 流量拓扑 查看某个组件的监控情况。 选择服务网格、集群及命名空间,单击拓扑图上的组件,进入组件监控详情页面,如图2所示。 图2 流量监控详情页 其中, 流量概况:展示了应用详细的流量信息,包含请求总数、错误计数、平均时延、最大时延等。 部署信息:显示了组件内的所有实例状态及信息。 调用链:通过时间维度和组件版本来查看调用情况,支持使用高级搜索中的选项进行精准搜索。使用istio做服务治理时,无需在微服务代码中进行调用链埋点。但微服务代码在接收和发送请求时需要传递调用链相关的Header信息,才能构造成完整的调用链路,详情请参见如何使用Istio调用链埋点。
  • 常见问题 监控中心开通失败,插件状态异常。 解决方案:请前往“插件管理”页面查看已安装插件列表,单击云原生监控插件名称,展开实例列表,检查状态为异常的Pod的事件,根据界面报错信息排查异常原因。 成功进入监控中心页面,但页面数据为空。 解决方案: 请前往“插件中心”页面查看已安装插件列表,单击云原生监控插件名称,展开实例列表,检查Prometheus的实例是否正常运行。如果未正常运行,请查询Pod的事件,获取异常信息。 例如:报错信息为实例调度失败:0/6 nodes are available: 1 Insufficient cpu, 2 node(s) had taint {cie.manage: proxy}, that the pod didn't tolerate, 3 node(s) had taint {node.kubernetes.io/unreachable: }, that the pod didn't tolerate,说明当前集群中总共6台节点,1台节点CPU不足,剩下的5台节点标记有污点,导致Pod无法调度。 如果插件状态正常,则可以查询prometheus实例的日志,检查日志中是否存在报错日志。如果日志中含有remote_write相关的报错信息,则表示指标上报时失败,请检查指标上报的网络是否通畅。
  • 开通监控中心 购买集群时开通 登录云容器引擎控制台,购买集群。 在“插件配置”页面,启用容器监控功能,并选择对接的AOM实例。 图1 启用容器监控 如果未创建AOM实例,请先点击新建实例创建AOM实例。 集群创建完成后,在“节点管理”中创建节点。待节点创建成功后,Prometheus采集插件将自动部署至节点上。 在监控中心页面开通 在目标集群左侧导航栏选择“监控中心”。 单击“立即开通”,并选择指标上报的AOM实例。 图2 开通监控中心 开通成功后,等待3-5分钟,监控数据将上报至AOM实例,随即可以使用监控中心相关功能。 在插件管理页面开通 在目标集群左侧导航栏选择“插件中心”。 选择云原生监控插件,单击“安装”。 按需选择Agent模式或Server模式的云原生监控插件,并开启对接AOM开关,指标将上报至AOM实例。 图3 安装云原生监控插件 插件安装完成3-5分钟后,监控数据将上报至AOM实例,随即可以使用监控中心相关功能。 如需关闭监控中心,请前往CCE控制台“插件管理”页面卸载云原生监控插件,或关闭AOM对接,即可以停止使用该功能。
  • 解决方案 方案一:推荐使用Agent模式,对接AOM实例。使用AOM托管指标数据,无需管理存储。 方案二:在左侧导航栏中选择“存储”,并切换至monitoring命名空间,选中pvc-prometheus-server-0的磁盘,扩容对应的存储资源。扩容完成后前往有状态负载页面,将prometheus-server的实例重启。 图2 扩容PVC 在磁盘空间不足后已无法写入Prometheus指标,将导致数据无法采集,因此扩容完成重启后,该时段的监控数据将会丢失。
  • 添加监测点 单击【添加监测点】,输入监测点名称,选择节点类型,单击【确定】完成监测点的添加。叶子节点为最下层节点,需要关联设备参数,非叶子节点不需要关联设备参数。 图1 添加监测点 鼠标单击监测点右侧,非叶子节点出现【添加同级监测点】、【添加子级监测点】、【编辑】、【删除】按钮。子叶子节点出现【添加同级监测点】、【编辑】、【删除】按钮。 图2 监测点配置 图3 添加同级监测点 单击【添加同级监测点】添加相同层级监测点,两个监测点无上下层级关系; 单击【添加子级监测点】为该监测点增加下层监测点; 图4 添加监测点 单击【编辑】可修改监测点名称和节点类型; 图5 编辑监测点 单击【删除】删除当前监测点 图6 删除监测点
  • Prometheus监控 Prometheus已经成为了当前云原生可观测性的最常见工具,其强大的监控能力和活跃的社区生态,使其成功CNCF最活跃的托管项目之一。当前CCE插件市场提供了云原生监控插件用于Kubernetes集群的监控。 云原生监控插件具有轻量级Agent模式和兼容开源社区原生的Server模式可供选择。Agent模式提供了轻量级的指标采集器,用于监控指标的采集。Server模式下提供了基于thanos的高可用部署模式,保证Prometheus能够在单点故障的场景下正常运行。 华为云AOM云服务基于Prometheus监控生态,提供了托管式的Prometheus实例 for CCE,适合需要对容器服务集群及其上面运行的应用进行一体化监控场景。AOM实例默认提供对容器服务CCE集群的云原生监控插件的集成,监控中心开通后,指标将自动上报指标到指定的AOM实例。详情请参见Prometheus监控。
  • 权限列表 开通监控中心前,用户需要完成对CCE及其依赖服务的委托授权,具体授予的权限如下表。 授权类型 权限名称 描述 CCE IAM ReadOnlyAccess 监控中心、告警助手获得该权限后,支持子用户访问监控中心与告警助手,因此需要获得该权限。 CCE Tenant Guest 监控中心、告警助手支持对集群关联的OBS、DNS等全局资源配置进行检查,提前发现配置问题,因此需要获得该权限。 CCE CCE Administrator 监控中心、告警助手在运行过程中需要访问CCE获取集群、节点、工作负载等信息,以此来检测对应资源的健康状态,因此需要获得该权限。 CCE SWR Administrator 监控中心、告警助手在运行过程中需要访问SWR获取镜像信息,因此需要获得该权限。 CCE SMN Administrator 监控中心、告警助手在运行过程中需要访问SMN获取联系组信息,因此需要获得该权限。 CCE AOM Administrator 监控中心、告警助手在运行过程中需要访问AOM获取监控指标信息,因此需要获得该权限。 CCE LTS Administrator 监控中心、告警助手在运行过程中需要访问LTS获取日志信息,因此需要获得该权限。 AOM DMS UserAccess AOM支持用户通过DMS获取数据订阅的功能,因此需要获得该权限。 AOM ECS CommonOperations AOM支持通过在ECS上安装UniAgent和ICAgent获取系统指标、日志数据,因此需要获得该权限。 AOM CES ReadOnlyAccess AOM支持从CES同步监控指标数据,因此需要获得该权限。 AOM CCE FullAccess AOM支持从CCE同步容器监控指标数据,因此需要获得访问权限。 AOM RMS ReadOnlyAccess AOM的CMDB支持管理云服务实例数据,因此需要获得该权限。 AOM ECS ReadOnlyAccess AOM支持通过在ECS上安装UniAgent和ICAgent获取系统指标、日志数据,因此需要获得该权限。 AOM LTS FullAccess AOM支持访问LTS数据,因此需要获得该权限。 AOM CCI FullAccess AOM支持从CCI同步容器监控指标数据,因此需要获得该权限。
  • 更多进程发现规则操作 进程发现规则添加完成后,您还可以执行表2中的操作。 表2 相关操作 操作 说明 启/停规则 启用/停用一个发现规则:单击“状态”列的切换启/停规则。停用后,监控中心将不采集进程的指标数据。 启用/停用多个发现规则:选中多个发现规则前的复选框,在弹出框中单击“批量启用”或“批量停用”。 删除规则 删除一个发现规则:单击“操作”列的。 删除多个发现规则:选中多个发现规则前的复选框,在弹出框中单击“批量删除”。 说明: 内置发现规则不支持删除操作。 修改规则 单击“操作”列的。 说明: 内置发现规则不支持修改操作。
  • 内置发现规则 AOM提供了Sys_Rule发现规则,内置的发现规则会在所有主机上执行,包括后续新增的主机。规则内容如下: Sys_Rule(不能停用) 使用Sys_Rule规则的场景下,组件名和应用名配对使用,必须同时设置组件名和应用名信息,取值优先级如下: 应用名称取值优先级: 取进程的启动命令中“Dapm_application”字段的值。 如果1为空,则取环境变量“JAVA_TOOL_OPTIONS”中“Dapm_application”字段的值。 如果2为空,则取环境变量“PAAS_MONITORING_GROUP”的值。 如果3为空,则取进程的启动命令中“DAOM.APPN”字段的值。 组件名称取值优先级: 取进程的启动命令中“DAOM.PROCN”字段的值,如果为空则取“Dapm_tier”字段的值。 如果1为空,则取环境变量“JAVA_TOOL_OPTIONS”中“Dapm_tier”字段的值。 如果2为空,则取环境变量“PAAS_APP_NAME”的值。 如下示例所示,则组件名为atps-demo,应用名为atpd-test。 PAAS_MONITORING_GROUP=atpd-testPAAS_APP_NAME=atps-demoJAVA_TOOL_OPTIONS=-javaagent:/opt/oss/servicemgr/ICAgent/pinpoint/pinpoint-bootstrap.jar -Dapm_application=atpd-test -Dapm_tier=atps-demo
  • 过滤规则 ICAgent会在目标主机上进行周期性探测,类似ps -e -o pid,comm,lstart,cmd | grep -v defunct命令的效果,查出目标主机的所有进程。然后将每一个进程分别与过滤规则(过滤规则详见表1)进行匹配。如果进程满足过滤规则,则进程会被过滤掉,不会被AOM发现;如果进程不满足过滤规则,则进程不会被过滤,会被AOM发现。 探测结果类似如下回显信息: PID COMMAND STARTED CMD 1 systemd Tue Oct 2 21:12:06 2018 /usr/lib/systemd/systemd --switched-root --system --deserialize 20 2 kthreadd Tue Oct 2 21:12:06 2018 [kthreadd] 3 ksoftirqd/0 Tue Oct 2 21:12:06 2018 (ksoftirqd/0) 1140 tuned Tue Oct 2 21:12:27 2018 /usr/bin/python -Es /usr/sbin/tuned -l -P 1144 sshd Tue Oct 2 21:12:27 2018 /usr/sbin/sshd -D 1148 agetty Tue Oct 2 21:12:27 2018 /sbin/agetty --keep-baud 115200 38400 9600 hvc0 vt220 1154 docker-containe Tue Oct 2 21:12:29 2018 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc --metrics-interval=0 表1 过滤规则 过滤规则 举例 如果进程的“COMMAND”列的值为“docker-containe”、“vi”、“vim”、“pause”、“sshd”、“ps”、“sleep”、“grep”、“tailf”、“tail”或“systemd-udevd”,且为非容器内的进程,则该类进程会被过滤掉,不会被AOM发现。 例如,上面信息中“PID”为“1154”的进程,因为其“COMMAND”列的值为“docker-containe”,所以该进程不会被AOM发现。 如果进程的“CMD”列的值以“[”开头,且以“]”结尾,则该类进程会被过滤掉,不会被AOM发现。 例如,上面信息中“PID”为“2”的进程,因为其“CMD”列的值为“[kthreadd]”,所以该进程不会被AOM发现。 如果进程的“CMD”列的值以“(”开头,且以“)”结尾,则该类进程会被过滤掉,不会被AOM发现。 例如,上面信息中“PID”为“3”的进程,因为其“CMD”列的值为“(ksoftirqd/0)”,所以该进程不会被AOM发现。 如果进程的“CMD”列的值以“/sbin/”开头,则该类进程会被过滤掉,不会被AOM发现。 例如,上面信息中“PID”为“1148”的进程,因为其“CMD”列的值以“/sbin/”开头,所以该进程不会被AOM发现。