1. 概述
主机监控主要从CPU、内存、磁盘、网络等资源的指标进行描述,并描述监控指标来源与性能分析语义。
2. CPU
2.1 PMM指标
• PMM -> OS / CPU Utilization Details-> Overall CPU Utilization
关注:user\system\steal\iowait指标。
• PMM -> OS / Node Summary
关注:Max CPU Core Utilization
关注:Interrupts、Context Switches。
2.2 Linux命令
• top 总体负载,关注%CPU,TIME+
• top -H -p进程号 查看线程CPU负载
• pidstat -u 关注进程的CPU占用。
• docker stats 查看宿主机内存与CPU。
• kubectl top node查看容器宿主机内存与CPU。
• kubectl top pod查看Pod实例内存与CPU。
2.3 gPaaS容器监控
• 金蝶云苍穹云基础平台->监控服务->服务监控->容器监控
关注总CPU利用率。
关注Pod的CPU利用率。持续超过90%,则需要分析占用原因。
关注Pod的实例CPU使用量(核)—上图左,应该持续小于实例CPU总量(核)—上图右。持续接近上限则提示CPU高负载。
2.4 指标解释
• User 用户态CPU利用率, 是主要负载,持续超过70%提示高负载。
• System 内核态CPU利用率,持续超过15%提示系统调用频繁。
• Steal 窃取CPU利用率,指的是一个虚拟 CPU 核心必须等待物理 CPU 的时间百分比,通常发生在共享主机上。持续超过10%则提示共享主机存在CPU资源争夺。
• Iowait,CPU等待队列的线程在等待IO完成的空闲时间百分比,持续超过10%则提示IO瓶颈。
• Max CPU Core Utilization 抽样期间的所有CPU核的最大CPU利用率。
• Interrupts,中断次数,其绝对值无意义,需要关注时间段的增长趋势,持续高企则提示程序执行流被硬件事件、CPU事件中断执行。
• Context Switches,上下文切换次数,其绝对值无意义,需要关注时间段的增长趋势,持续高企则提示CPU忙于切换线程。
• %CPU进程CPU利用率%。正常值<= CPU总核数*100*75%,如果持续超过该阈值则提示该进程高负载。
• Load average,总体负载,应该持续小于CPU核心数,超过CPU核心数则提示高负载。
• TIME+,进程已分配的CPU时间片时间,常用于确定占用CPU最多的Java线程。
3. 内存
3.1 PMM指标
• PMM -> OS / Memory Details-> Memory Usage
关注:total、used。
• PMM -> OS / Memory Details-> Memory Usage Types
关注:辅助帮助分析内存OOM问题,关注内存的主要组成部分。
• PMM -> OS / Memory Details-> Committed Memory
关注:CommitLimit是内存分配上限;
Committed_AS是已经分配的内存大小。
3.2 Linux命令
• top 关注VIRT、RES、SHR、%MEM列。
• free 关注used、free
• pidstat –r 关注minflt/s、majflt/s等缺页指标。
• cat /proc/meminfo 是占用内存的最明细占用。
• docker stats 查看宿主机内存与CPU。
• kubectl top node查看容器宿主机内存与CPU。
• kubectl top pod查看Pod实例内存与CPU。
3.3 gPaaS容器监控
• 金蝶云苍穹云基础平台->监控服务->服务监控->容器监控
关注总内存的占用率。
左图为内存利用率,右图为上限。
3.4 指标解释
• Used 整机全部进程使用的内存总量。
• 数据库服务中,应该<=75%,需要预留部分文件缓存。需要特别关注内存的释放
• 容器宿主机服务中,应该<=80%,需要预留内存用于系统软件和Linux,例如K8s、Docker、监控软件等。
• 应用容器Pod中,Pod内存使用量应该小于90%,超过95%则提示容器存在OOM风险,需要通过增大容器内存规格或者修改调低JVM_OPTS内存参数来将内存使用量限定在适当范围。
4. 磁盘
4.1 PMM指标
• PMM -> OS /Disk Details -> Mountpoint Usage
关注:核心数据存储挂载点的磁盘利用率。
• PMM -> OS /Disk Details -> Disk Latency
关注:读写延时
• PMM -> OS /Disk Details -> Disk Bandwidth
关注:读写的最大带宽、平均带宽
• PMM -> OS /Disk Details -> Disk Utilization
关注:读写带宽利用率。
4.2 Linux命令
• iostat
• pidstat –d 可以监控进程的IO的使用率
• iotop 读写速度与线程损耗百分比
4.3 gPaaS容器监控
• 金蝶云苍穹云基础平台->监控服务->服务监控->容器监控
4.4 指标解释
• Disk IO Utilization持续超过90%则提示IO负载高,对于数据库服务需要使用FIO等专业测试后做出存储是否达标的判断。
• 一般地,容器Pod的IO极少有性能瓶颈。
• IO瓶颈需要与top的iowait指标联合进行判断。
5. 网络
5.1 PMM指标
• PMM -> OS / Network Details -> Network Traffic
关注:出入的流量
• PMM -> OS / Network Details -> TCP Retransmission
关注:重传的次数和比率
5.2 Linux命令
• iftop TX RX的 peak值,与某个IP的流量带宽。
关注:iftop TX RX的 peak值,与某个IP的流量带宽。
• ifconfig 关注丢包率
• ifstat
• sar –n DEV 2 间隔2秒输出一次收发包的个数和流量
• cat /proc/net/dev 输出网卡统计信息
5.3 gPaaS容器监控
• 金蝶云苍穹云基础平台->监控服务->服务监控->容器监控
除激增流量外,很少关注此指标。
5.4 指标解释
• Network Traffic中,主要关注Outbound/Inbound的最大值,如果持续达到内部流量的峰值,则提示网络带宽瓶颈。例如,千兆网的出入流量持续达到120-125MB/s,则提示带宽到达峰值。