云服务器内容精选

  • 事件 事件搜索 事件页面的主要功能是展示按照一定条件搜索出的指定资源的事件信息,包括Normal/Warning事件趋势和详情。这样,用户可以更加方便地查看与该资源相关的事件信息。 您可以按照如下几种方式进行事件搜索。 在输入框里输入要搜索的事件名称,选择命名空间或者事件类型,单击“搜索”按钮进行搜索。 单击“高级搜索”,按照工作负载、节点、Pod名称、事件内容、资源类型或者资源名称进行搜索。 也可以在左上角选择事件发生的时间范围,包括近1小时、近1天、近1周和自定义。 图4 搜索事件 事件列表 您可以在列表中查看满足搜索条件的事件详情,包括最近发生时间、事件名称、资源类型、资源名称、事件内容、事件类型和发生次数。单击操作列的“历史事件”,在弹出的对话框中将展示当前资源类型和资源名称下的所有事件。 图5 事件列表
  • 概览 “概览”页面默认展示集群中所有命名空间的事件统计信息,您也可以在右上角的下拉框中切换命名空间,以查看指定命名空间下的事件数据。 根据图1的事件统计数据,您可以清晰地了解到Normal和Warning事件的数量分布情况,呈现为一个圆环图;Warning事件资源维度TOP5指的是排名前五的Warning事件数量所对应的资源信息;Warning事件环比指近24小时Warning事件数与前24小时之间的比较。 图1 事件统计 通过图2中的柱状图,您可以观察24小时内Normal事件和Warning事件的数量变化趋势。 图2 Warning/Normal事件趋势 图3展示了24小时内事件数量排名前十的事件名称。 图3 24小时事件数量TOP 10
  • 监控 在此处,您可以方便地查看节点在近1小时、近8小时、近24小时以及自定义时间段内各维度资源的使用情况。如需查看更多监控信息,请单击“查看全部仪表盘”,跳转至“仪表盘”页面,相应指导请参见使用仪表盘。 图5 节点监控 CPU相关指标 CPU使用率:节点的CPU非空闲时间所占的平均比例。 CPU分配率:节点上所有容器对CPU的Request之和除以节点的CPU总核数。 节点CPU单核使用率:节点上每个CPU核非空闲时间各自所占的比例。 内存相关指标 内存使用率:节点的内存使用量除以节点的内存总量。 内存分配率:节点上所有容器对内存的 Request 之和占节点的内存总量的比例。 网络相关指标 网络流出速率:节点上的物理网卡在不同的时间段的每秒钟发送的字节数。 网络流入速率:节点上的物理网卡在不同的时间段的每秒钟接收的字节数。 网络发送丢包率:节点的物理网卡网络发送丢包速率。 网络接收丢包率:节点的物理网卡网络接收丢包率。 磁盘相关指标 磁盘读取速率:节点上的每个文件系统在不同的时间段的每秒钟读取的字节数。 磁盘写入速率:节点上的每个文件系统在不同的时间段的每秒钟写入的字节数。 磁盘使用率:节点上的每个文件系统在不同的时间段已使用的空间所占各自总空间的比例。 Pod相关指标 Pod CPU使用率:节点上每个Pod在不同的时间段的CPU使用量占它们的CPU Limit量的比例。 Pod内存使用率:节点上每个Pod在不同的时间段的内存使用量占它们的内存Limit量的比例。 Pod状态数量趋势:节点上在不同的时间段分别处于不可用、未就绪、运行中、已完成或其他的状态 Pod 数量之和。 Pod数量变化趋势:节点上所有的 Pod 在不同的时间段的数量。 其他指标 节点平均负载:节点的平均负载是指在一定时间内,节点上正在运行的进程数量的平均值。即节点上正在运行的进程数量是否过多,是否超出了节点的处理能力。通常情况下,节点平均负载应该保持在一个合理的范围内,以确保节点的稳定性和可靠性。 Iptables 连接数:连接跟踪表的最大条目数和当前已分配的条目数。
  • 概览 单击节点名称,您可以方便地查看资源健康概况,包括节点状态、Pod数量以及异常事件。此外,还可以浏览近一小时的监控概览,其中包括CPU使用率、内存使用率和网络流入/流出速率这些常见的监控指标。 图2 资源概况和监控概览 同时,概览页面还提供了Pod使用趋势功能,您可以从中了解节点中各Pod的CPU使用率、CPU使用量、内存使用率和内存使用量(在图表右上角切换对应指标),并且支持查看降序Top5和升序Top5数据(在图表左上角进行切换)。 图3 Pod使用趋势 如需了解更多指标,请前往监控页面查看。
  • 节点列表 节点列表中包含节点名称、状态、IP地址、Pod(已分配/总额度)、CPU申请率/限制率/使用率,以及内存申请率/限制率/使用率等信息。 图1 节点列表 您可以通过在列表上方按照节点名称、状态、私有地址和公网地址进行筛选,快速找到需要的节点。您也可以单击“导出”按钮导出全部节点数据,或者选择部分节点进行导出,此时仅导出所选中的数据。导出的文件为“.xlsx”格式,文件命名中包含时间戳。 当节点的CPU限制率或内存限制率超过100%时,意味着节点资源超分,节点上的负载限制值(可使用的最大值)之和已经超过了节点规格。如果负载占用资源过高,可能会导致业务负载互相抢占资源,引发业务异常乃至节点异常。
  • Pod列表 Pod列表中包含了Pod名称、状态、命名空间、Pod IP、所在节点、重启次数、CPU申请/限制、内存申请/限制,以及CPU和内存使用量、使用率等详细信息。 图4 Pod列表 您可以通过在列表上方按照Pod名称、状态、命名空间、Pod IP和所在节点进行筛选,快速找到需要的Pod。您也可以单击“导出”按钮来导出全部Pod数据,或者选择部分Pod进行导出,此时仅导出所选中的数据。导出的文件为“.xlsx”格式,文件命名中包含时间戳。 单击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调用链埋点。
  • 解决方案 方案一:推荐使用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监控。
  • 更多进程发现规则操作 进程发现规则添加完成后,您还可以执行表2中的操作。 表2 相关操作 操作 说明 启/停规则 启用/停用一个发现规则:单击“状态”列的切换启/停规则。停用后,监控中心将不采集进程的指标数据。 启用/停用多个发现规则:选中多个发现规则前的复选框,在弹出框中单击“批量启用”或“批量停用”。 删除规则 删除一个发现规则:单击“操作”列的。 删除多个发现规则:选中多个发现规则前的复选框,在弹出框中单击“批量删除”。 说明: 内置发现规则不支持删除操作。 修改规则 单击“操作”列的。 说明: 内置发现规则不支持修改操作。
  • 过滤规则 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发现。
  • 内置发现规则 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