云服务器内容精选

  • OPS06-02 定义可观测对象 风险等级 高 关键策略 客户可感知的观测对象分类如下: 可观测分层 功能 / 主要指标 IT 资源监控 IT 资源监控对 IT 资源的性能和容量进行监视和报告,确保您的业务稳定可靠运行 应用监控 应用监控基于应用资源管理对资源实行从应用、业务组件、到环境的分层监控,每一层对应的观测指标均不同。在应用层,主要监控业务层、应用层、中间件层以及基础设施层告警信息,同时通过绑定当前应用的仪表盘,以图表的形式展示指标源、日志源以及系统图表信息。主要关注:WAITING 状态线程数、TIMED_WAITING 状态线程数、可使用内存等指标 进程监控 进程监控是针对主机内活跃进程进行的监控,默认采集活跃进程消耗的 CPU、内存,以及打开的文件数量等信息。当您配置了自定义进程监控,还会监控包含关键字的进程个数。主要关注:运行中进程数、空闲进程数、僵死进程数等指标 日志监控 配置日志服务从日志中提取指定的关键词,便于您使用监控服务对日志中的关键指标进行监控及告警。主要关注:访问日志数量、错误日志数量、日志大小等指标 自定义监控 自定义监控展示用户所有自主定义上报的监控指标。用户可以针对自己关心的业务指标进行监控,将采集的监控数据通过使用简单的 API 请求上报至监控服务进行处理和展示 中间件监控 提供快捷安装配置各类型中间件插件的功能,并提供开箱即用的专属监控大盘,目前支持的中间件插件有以下几种: MYSQL、REDIS、MONGODB、NGINX、NODE、HAPROXY、COMP_EXPORTER、COMP_REDIS_EXPORTER、COMP_MYSQL_EXPORTER 主机监控 主机监控提供了包括基础监控和操作系统监控两种不同监控粒度层次的监控。基础监控为 E CS 自动上报的监控指标,操作系统监控通过在ECS中安装Agent插件,为用户提供服务器的系统级、主动式、细颗粒度监控服务。主要关注:CPU_UTIL、DISK_READ_BYTES_RATE、带外网络流入速率等指标 用户线下 组件监控 对用户的线下组件统一监控,主要支持:线下 Grafana 对接、线下自建 Prometheus 对接、业务监控、应用监控、线下 IDC 监控和线下中间件监控 网络性能 管理监控 功能:对客户端 - 网 - 边 - 云全链路网络进行监控,帮助用户及时发现网络故障,全面掌握网络的实时状况。主要关注:应用响应时间、DNS 解析时间、TCP 建连时间、访问流量等指标 父主题: OPS06 可观测性体系
  • OPS06-04 规范化应用日志 日志是随时间推移发生的不可变、记录时间戳的离散事件。系统需要记录关键事件和故障,以帮助诊断问题和解决故障。 风险等级 高 关键策略 对于一个系统来说,日志是非常重要的。它可以记录在系统中发生的一切,包括成功的操作、错误的操作、警告信息等等。因此,日志记录是可观测性设计中最基本的需求之一。通过将事件和错误信息记录到日志文件或数据库中,可以方便地进行故障排除和问题诊断。但是,仅仅记录日志并不足够,还需要对日志进行有效的管理和分析。如果日志太多,将会成为一个负担,因为它们需要占用存储空间,并且需要花费很长时间来查找有用的信息。因此,需要对日志进行过滤和归档,以便更好地管理它们。 设计建议 可参考LTS最佳实践 父主题: OPS06 可观测性体系
  • PERF04-06 建立性能可观测性体系 风险等级 中 关键策略 可观测性体系是指在云原生架构中通过使用各种工具和技术来实现对应用程序和基础设施的监控告警、日志、故障排除等功能的一套完整的解决方案。性能可观测体系在此基础上突出了性能指标,通过收集和分析性能数据,可以识别系统瓶颈、优化资源分配等,找到性能优化方向。 性能监控对象:服务器、操作系统、数据库、应用程序、网络设备、云服务。 常见性能指标:包括资源CPU、内存,硬盘等,及程序的响应时间、吞吐量、并发数等。 父主题: 建立性能可观测性体系
  • 监控与日志 AOM 应用运维管理 (Application Operations Management,简称AOM)是云上应用的一站式立体化运维管理平台,实时监控您的应用及相关云资源,分析应用健康状态,提供灵活丰富的 数据可视化 功能,帮助您及时发现故障,全面掌握应用、资源及业务的实时运行状况。 LTS: 云日志 服务(Log Tank Service,简称LTS),用于收集来自主机和云服务的日志数据,通过海量日志数据的分析与处理,可以将云服务和应用程序的可用性和性能最大化,为您提供实时、高效、安全的日志处理能力,帮助您快速高效地进行实时决策分析、设备运维管理、用户业务趋势分析等。
  • 云原生观测 CCE云原生观测相关的功能包括健康中心、监控中心、日志中心、告警中心等。以下分别介绍CCE云原生观测的主要功能。 健康中心 集群健康诊断基于容器运维专家经验对集群健康状况进行全面检查,能够及时发现集群故障与潜在风险并给出修复建议。 监控中心 监控中心提供不同维度的数据洞察、仪表盘等功能。监控中心提供容器视角的可视化视图,支持集群、节点、工作负载和Pod等多种维度的监控视图,支持多级下钻与关联分析。仪表盘功能内置常见的容器监控大盘,如Kubernetes APIServer组件监控、CoreDNS组件监控和PVC监控等。 日志中心 CCE日志中心集成了 云日志服务LTS 。启用日志采集与管理,您可以快速采集CCE控制面组件日志(kube-apiserver、kube-controller-manager、kube-scheduler)、kubernetes审计日志、Kubernetes事件和容器日志(容器的标准输出、容器内的文本文件、节点日志)。 告警中心 告警中心集成应用运维管理服务AOM2.0的告警功能,提供容器告警一键开启能力,覆盖集群和容器常见故障场景。
  • 索引 如何关闭日志中心? 插件中除log-operator外组件均未就绪 log-operator标准输出报错 节点容器引擎为docker时采集不到容器文件日志 日志无法上报,otel组件标准输出报错:log's quota has full 采集容器内日志,且采集目录配置了通配符,日志无法采集 fluent-bit容器组一直重启 节点OS为Ubuntu 18.04时出现日志无法采集 采集Job日志时出现日志无法采集 云原生日志采集插件运行正常,部分日志策略未生效 log-agent-otel-collector组件出现OOM 节点负载过多,采集日志时缺少部分Pod信息 如何修改集群日志中心的日志存储时间?
  • log-operator标准输出报错 问题现象: 2023/05/05 12:17:20.799 [E] call 3 times failed, resion: create group failed, projectID: xxx, groupName: k8s-log-xxx, err: create groups status code: 400, response: {"error_code":"LTS.0104","error_msg":"Failed to create log group, the number of log groups exceeds the quota"}, url: https://lts.cn-north-4.myhuaweicloud.com/v2/xxx/groups, process will retry after 45s 解决方案:LTS日志组有配额限制,如果出现该报错,请前往LTS下删除部分无用的日志组。限制详情见:日志组。
  • 采集容器内日志,且采集目录配置了通配符,日志无法采集 排查方法:请检查工作负载配置中Volume挂载情况,如果业务容器的数据目录是通过数据卷(Volume)挂载的,插件不支持采集它的父目录,需设置采集目录为完整的数据目录。例如/var/log/service目录是数据卷挂载的路径,则设置采集目录为/var/log或/var/log/*将采集不到该目录下的日志,需设置采集目录为/var/log/service。 解决方案:若日志生成目录为/application/logs/{应用名}/*.log,建议工作负载挂载Volume时,直接挂载/application/logs,日志策略中配置采集路径为/application/logs/*/*.log
  • 节点容器引擎为docker时采集不到容器文件日志 问题现象: 配置了容器文件路径采集,采集的目录不是挂载到容器内的,且节点容器引擎为docker,采集不到日志。 解决方案: 请检查工作负载所在节点的容器存储模式是否为Device Mapper,Device Mapper不支持采集容器内日志(创建日志策略时已提示此限制)。检查方法如下: 进入业务工作负载所在节点。 执行docker info | grep "Storage Driver"。 若返回的Storage Driver值为Device Mapper,则该日志无法采集。 图4 创建日志策略
  • 插件中除log-operator外组件均未就绪 问题现象:插件中除log-operator外组件均未就绪,且出现异常事件“实例挂卷失败”。 解决方案:请查看log-operator日志,安装插件时,其余组件所需的配置文件需要log-operator生成,log-operator生成配置出错,会导致所有组件无法正常启动。 日志信息如下: MountVolume.SetUp failed for volume "otel-collector-config-vol":configmap "log-agent-otel-collector-config" not found
  • log-agent-otel-collector组件出现OOM 排查方法: 查看log-agent-otel-collector组件标准输出,查看近期是否有错误日志。 kubectl logs -n monitoring log-agent-otel-collector-xxx 若存在报错请优先处理报错,确认日志恢复正常采集。 若日志近期没有报错,且仍然出现OOM,则参考以下步骤进行处理: 进入“日志中心”,单击“展开日志条数统计图”查看日志统计图。若上报的日志组日志流不是默认日志组日志流,则单击“全局日志查询”页签,选择上报的日志组和日志流后进行查看。 图10 查看日志统计 根据统计图中的柱状图,计算每秒上报的日志量,检查是否超过当前规格的日志采集性能。 若超过当前规格的日志采集性能,可尝试增加log-agent-otel-collector副本数或提高log-agent-otel-collector的内存上限。 若CPU使用率超过90%,则需要提高log-agent-otel-collector的CPU上限。
  • 通过监控中心查看Master节点组件指标 云原生监控中心已支持对Master节点的kube-apiserver组件进行监控,您在集群中开通云原生监控中心后(安装云原生监控插件版本为3.5.0及以上),可以查看仪表盘中的APIServer视图,监控API指标。 如需对kube-controller、kube-scheduler、etcd-server组件进行监控,请参考以下步骤。 此3个组件监控指标不在容器基础指标范围,监控中心将该类指标上报至AOM后会进行收费,因此监控中心会默认屏蔽采集该类指标。 登录CCE控制台,单击集群名称进入集群详情页。 在左侧导航栏中选择“配置与密钥”,并切换至“monitoring”命名空间,找到名为“persistent-user-config”的配置项。 单击“更新”,对配置数据进行编辑,并在serviceMonitorDisable字段下删除以下配置。 serviceMonitorDisable: - monitoring/kube-controller - monitoring/kube-scheduler - monitoring/etcd-server - monitoring/log-operator 图1 删除配置 单击“确定”。 等待5分钟后,您可前往AOM控制台,在“指标浏览”中找到集群上报的AOM实例,查看上述组件的指标。 图2 查看指标
  • 可观测性(监控中心、日志中心、告警中心)如何收费? 免费场景 监控中心自身免费使用,监控中心所使用的指标都上报并存储在AOM服务,其中在AOM范畴内的基础指标不收费,存储时长15天(暂不支持修改)。详情请参见基础指标。 日志中心自身免费使用,集群内产生的日志都上报并存储在LTS服务,云日志服务的计费项由日志读写流量、日志索引流量、日志存储量的费用组成(有500MB/月的免费额度)。 告警中心自身免费使用,集群内产生的告警由 SMN 消息通知服务进行推送,在短信数量小于100/条/月、邮件数量小于1000/封/月的,推送免费。其中短信条数计算规则请参见短信内容长度计算规则。 收费场景 监控中心:集群内配置的除基础指标以外的自定义指标(基础指标不收费)会根据AOM的收费规则进行收费。详情请参见计费项。 日志中心:对超出每月免费限额(500MB/月)的日志读写、日志索引流量、日志存储量进行收费。详情请参见LTS服务的收费标准。 告警中心:告警中心依赖SMN 消息通知 服务对告警进行推送,联系组当前只支持短信和邮件,超过SMN免费范围(短信数量小于100/条/月、邮件数量小于1000/封/月的,推送免费)的将会收费。详情请参见SMN计费说明。
  • 方法一:配置Pod Annotations监控自定义指标 当Pod的Annotations配置符合Prometheus采集规范的规则后,Prometheus会自动采集这些Pod暴露的指标。 如上所述的nginx:exporter提供的监控数据,其数据格式并不满足Prometheus的要求,需要将其转换成Prometheus需要的格式,可以使用nginx-prometheus-exporter来转换Nginx的指标,将nginx:exporter和nginx-prometheus-exporter部署到同一个Pod,并在部署时添加如下Annotations就可以自动被Prometheus采集监控指标。 kind: Deployment apiVersion: apps/v1 metadata: name: nginx-exporter namespace: default spec: replicas: 1 selector: matchLabels: app: nginx-exporter template: metadata: labels: app: nginx-exporter annotations: prometheus.io/scrape: "true" prometheus.io/port: "9113" prometheus.io/path: "/metrics" prometheus.io/scheme: "http" spec: containers: - name: container-0 image: 'nginx:exporter' # 替换为您上传到SWR的镜像地址 resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi - name: container-1 image: 'nginx/nginx-prometheus-exporter:0.9.0' command: - nginx-prometheus-exporter args: - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status' imagePullSecrets: - name: default-secret 其中 prometheus.io/scrape:表示是否需要prometheus采集Pod的监控数据,取值为true。 prometheus.io/port:表示采集监控数据接口的端口,由需要采集的应用决定。本示例中采集端口为9113。 prometheus.io/path:表示采集监控数据接口的URL,如不配置则默认为“/metrics”。 prometheus.io/scheme:表示采集的协议,值可以填写http或https。 应用部署成功后,访问云原生监控插件,查询自定义监控指标。 图1 访问云原生监控插件 可以查询到nginx相关的自定义监控指标,通过job名称可以判断出是根据Pod配置上报的。 nginx_connections_accepted{cluster="2048c170-8359-11ee-9527-0255ac1000cf", cluster_category="CCE", cluster_name="cce-test", container="container-0", instance="10.0.0.46:9113", job="monitoring/kubernetes-pods", kubernetes_namespace="default", kubernetes_pod="nginx-exporter-77bf4d4948-zsb59", namespace="default", pod="nginx-exporter-77bf4d4948-zsb59", prometheus="monitoring/server"} 图2 查看监控指标
  • 方法二:配置Service Annotations监控自定义指标 当Service的Annotations配置符合Prometheus采集规范的规则后,Prometheus会自动采集这些Service暴露的指标。 Service Annotations使用方法和Pod Annotations基本相同,主要是采集的指标的适用场景不同,Pod Annotations更关注Pod的资源使用情况,Service Annotations侧重于对该业务的请求等指标。 部署示例应用如下: kind: Deployment apiVersion: apps/v1 metadata: name: nginx-test namespace: default spec: replicas: 1 selector: matchLabels: app: nginx-test template: metadata: labels: app: nginx-test spec: containers: - name: container-0 image: 'nginx:exporter' # 替换为您上传到SWR的镜像地址 resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi - name: container-1 image: 'nginx/nginx-prometheus-exporter:0.9.0' command: - nginx-prometheus-exporter args: - '-nginx.scrape-uri=http://127.0.0.1:8080/stub_status' imagePullSecrets: - name: default-secret 部署示例Service如下: apiVersion: v1 kind: Service metadata: name: nginx-test labels: app: nginx-test namespace: default annotations: prometheus.io/scrape: "true" # 配置为 true 表示开启服务发现 prometheus.io/port: "9113" # 配置为采集指标暴露的端口号 prometheus.io/path: "/metrics" # 填写指标暴露的 URI 路径,一般是 /metrics spec: selector: app: nginx-test externalTrafficPolicy: Cluster ports: - name: cce-service-0 targetPort: 80 nodePort: 0 port: 8080 protocol: TCP - name: cce-service-1 protocol: TCP port: 9113 targetPort: 9113 type: NodePort 查看指标,通过Service名称可以判断出该指标是根据Service配置上报的。 nginx_connections_accepted{app="nginx-test", cluster="2048c170-8359-11ee-9527-0255ac1000cf", cluster_category="CCE", cluster_name="cce-test", instance="10.0.0.38:9113", job="nginx-test", kubernetes_namespace="default", kubernetes_service="nginx-test", namespace="default", pod="nginx-test-78cfb65889-gtv7z", prometheus="monitoring/server", service="nginx-test"} 图3 查看监控指标