文档首页/ 云容器实例 CCI/ 开发指南/ Pod资源监控指标
更新时间:2024-02-08 GMT+08:00
分享

Pod资源监控指标

CCI支持Pod资源基础监控能力,提供CPU、内存、磁盘、网络等多种监控指标,满足对Pod资源的基本监控需求。

Pod内置系统agent,默认会以http服务的形式提供Pod和容器的监控指标。agent集成到Pod里面,会占用Pod内资源,建议您预留30MB的内存。

资源监控指标

资源基础监控包含CPU/内存/磁盘等类别,具体请参见资源监控指标

表1 资源监控指标

监控指标类

指标名称

释义

CPU

container_cpu_system_seconds_total

System CPU累积占用时间(单位:秒)

container_cpu_usage_seconds_total

容器在所有CPU内核上的累积占用时间 (单位:秒)

container_cpu_user_seconds_total

User CPU累积占用时间(单位:秒)

container_cpu_cfs_periods_total

已经执行的CPU时间周期数

container_cpu_cfs_throttled_periods_total

被限流的CPU时间周期

container_cpu_cfs_throttled_seconds_total

被限流的CPU时间(单位:秒)

文件系统/磁盘IO

container_fs_inodes_free

文件系统的可用inode数量

container_fs_usage_bytes

文件系统的使用量(单位:字节)

container_fs_inodes_total

文件系统的总计inode数量

container_fs_io_current

磁盘/文件系统当前正在进行的 I/O 数量

container_fs_io_time_seconds_total

磁盘/文件系统花费在 I/O 上的累计秒数

container_fs_io_time_weighted_seconds_total

磁盘/文件系统累积加权 I/O 时间

container_fs_limit_bytes

容器可以使用的磁盘/文件系统总量(单位:字节)

container_fs_reads_bytes_total

容器累积读取磁盘/文件系统数据的总量(单位:字节)

container_fs_read_seconds_total

容器累积读取磁盘/文件系统数据的秒数

container_fs_reads_merged_total

容器合并读取磁盘/文件系统的累积计数

container_fs_reads_total

容器已完成读取磁盘/文件系统的累积计数

container_fs_sector_reads_total

器已完成扇区读取磁盘/文件系统的累积计数

container_fs_sector_writes_total

容器已完成扇区写入磁盘/文件系统的累积计数

container_fs_writes_bytes_total

容器累积写入磁盘/文件系统数据的总量(单位:字节)

container_fs_write_seconds_total

容器累计写入磁盘/文件系统的秒数

container_fs_writes_merged_total

容器合并写入磁盘/文件系统的累积计数

container_fs_writes_total

容器已完成写入磁盘/文件系统的累积计数

container_blkio_device_usage_total

容器区分IO操作对磁盘的使用总量(单位:字节)

内存

container_memory_failures_total

容器内存分配失败的累积计数

container_memory_failcnt

容器内存使用达到限制的次数

container_memory_cache

容器总页缓存内存(单位:字节)

container_memory_mapped_file

容器内存映射文件的大小(单位:字节)

container_memory_max_usage_bytes

容器历史最大内存使用量(单位:字节)

container_memory_rss

容器常驻内存集的大小(单位:字节)

container_memory_swap

容器虚拟内存使用量(单位:字节)

container_memory_usage_bytes

容器当前的内存使用量(单位:字节)

container_memory_working_set_bytes

容器工作集内存使用量(单位:字节)

网络

container_network_receive_bytes_total

容器网络累积接收数据总量(单位:字节)

container_network_receive_errors_total

接收时遇到的错误累积计数

container_network_receive_packets_dropped_total

接收时丢弃的数据包的累积计数

container_network_receive_packets_total

接收数据包的累积计数

container_network_transmit_bytes_total

容器网络累积传输数据总量(单位:字节)

container_network_transmit_errors_total

传输时遇到的错误累积计数

container_network_transmit_packets_dropped_total

传输时丢弃的数据包的累积计数

container_network_transmit_packets_total

传输数据包的累积计数

进程

container_processes

容器当前运行的进程数

container_sockets

容器当前打开套接字的个数

container_file_descriptors

容器当前打开文件描述符的个数

container_threads

容器内当前运行的线程数

container_threads_max

容器内允许运行的最大线程数

container_ulimits_soft

容器内1号进程的软 ulimit 值。如果为-1,则无限制,优先级和nice除外

container_spec_cpu_period

容器分配的CPU周期

container_spec_cpu_shares

容器分配的CPU份额

container_spec_memory_limit_bytes

容器可以使用的总内存量限制

container_spec_memory_reservation_limit_bytes

容器可以使用的预留内存限制

container_spec_memory_swap_limit_bytes

容器可以使用的虚拟内存限制

container_start_time_seconds

容器已经运行的时间(单位:秒)

container_last_seen

最近一次监控采集器感知到容器的时间

gpu

container_accelerator_memory_used_bytes

容器正在使用的GPU加速卡内存量(单位:字节)

container_accelerator_memory_total_bytes

总GPU加速卡可用内存量(单位:字节

container_accelerator_duty_cycle

GPU加速卡实际运行时间百分比

监控指标数总计59个,与cadvisor提供的指标数一致。

指标详细含义,可参考cadvisor文档:https://github.com/google/cadvisor/blob/v0.39.0/docs/storage/prometheus.md

基础配置

以下示例介绍Pod资源监控指标的基础配置方式,提供了Pod级别特性开关和自定义端口的能力。

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nginx-exporter
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-exporter
  template:
    metadata:
      labels:
        app: nginx-exporter
      annotations:
        monitoring.cci.io/enable-pod-metrics: "true"
        monitoring.cci.io/metrics-port: "19100"
    spec:
      containers:
        - name: container-0
          image: 'nginx:alpine'
          resources:
            limits:
              cpu: 1000m
              memory: 2048Mi
            requests:
              cpu: 1000m
              memory: 2048Mi
      imagePullSecrets:
        - name: imagepull-secret
表2 参数说明

Annotation

功能

可选值

默认值

monitoring.cci.io/enable-pod-metrics

是否开启监控指标特性

true,false(不区分大小写)

true

monitoring.cci.io/metrics-port

指定pod exporter启动监听端口

合法端口(1~65535)

19100

高级配置

创建Secret

Secret是一种加密存储的资源对象,您可以将认证信息、证书、私钥等保存在密钥中,从而解决了密码、token、密钥等敏感数据的配置问题。

如下示例中定义的Secret中包含三条Key-Value。

apiVersion: v1
kind: Secret
metadata:
  name: cert
type: Opaque
data:
   ca.crt: ...
   server.crt: ...
   server.key: ...

配置tls证书

用户可以通过配置annotation指定exporter server的tls证书套件,进行加密通信,并使用文件挂载的方式,关联证书secret。示例如下:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: nginx-tls
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-tls
  template:
    metadata:
      labels:
        app: nginx-tls
      annotations:
        monitoring.cci.io/enable-pod-metrics: "true"
        monitoring.cci.io/metrics-port: "19100"
        monitoring.cci.io/metrics-tls-cert-reference: cert/server.crt
        monitoring.cci.io/metrics-tls-key-reference: cert/server.key
        monitoring.cci.io/metrics-tls-ca-reference: cert/ca.crt
        sandbox-volume.openvessel.io/volume-names: cert
    spec:
      volumes:
        - name: cert
          secret:
            secretName: cert
            defaultMode: 384
      containers:
        - name: container-0
          image: 'nginx:alpine'  
          resources:
            limits:
              cpu: 1000m
              memory: 2048Mi
            requests:
              cpu: 1000m
              memory: 2048Mi
          volumeMounts:
            - name: cert
              mountPath: /tmp/secret0
      imagePullSecrets:
        - name: imagepull-secret
表3 tls证书参数说明

Annotation

功能

可选值

默认值

monitoring.cci.io/metrics-tls-cert-reference

tls证书volume引用

${volume-name}/${volume-keyOrPath}(卷/路径)

无(使用http)

monitoring.cci.io/metrics-tls-key-reference

tls私钥volume引用

${volume-name}/${volume-keyOrPath}

无(使用http)

monitoring.cci.io/metrics-tls-ca-reference

tls CA volume引用

${volume-name}/${volume-keyOrPath}

无(使用http)

以上参数的值为tls的证书、私钥、CA文件所在存储卷的“卷名”和“路径”。

获取资源监控指标

配置完上述监控属性后,在能访问Pod IP的VPC内,通过执行如下命令获取Pod的监控数据。

curl $podIP:$port/metrics

其中<podIP>为Pod的IP地址,<port>为监听端口,例如curl 192.168.XXX.XXX:19100/metrics

相关文档