Docker单机容器监控接入

本文介绍如何监控Docker单机容器,以帮助企业更好地管理和维护容器化应用。

前提条件

步骤一:接入Docker单机容器监控

  1. 登录Prometheus控制台,在左侧导航栏单击接入中心

  2. 单击Docker 单机容器监控卡片,然后根据控制台指引完成组件接入。下面对重点配置项进行说明。

    配置项

    说明

    cAdvisor 安装方式

    cAdvisor(Container Advisor)是Google开源的一款容器监控工具,可以收集容器的CPU、内存、网络和磁盘等资源使用情况。

    • 自动安装:自动根据您提供的过滤策略对 ECS 实例进行服务发现,并向发现的主机中安装 cAdvisor 服务。

    • 自助安装:需要你在接入前自行在 ECS 主机上安装 cAdvisor 服务,并开放对应的端口,开放 VPC 内访问。

      说明

      ECS 白名单需要为 VPC 网段开放指定端口。

    主机服务发现方式

    如何选择要监控的ECS主机:

    污点标签选择

    ECS 污点标签:通过ECS实例的污点标签(反向选择)来匹配目标的实例。

    无条件(选择当前VPC所有Linux实例)

    -

    标签选择

    ECS 实例标签:通过ECS实例的标签来匹配目标的实例。

    IP 域选择

    ECS 网段(IP CIDR):该方提供一个网段,当ECS的IP地址匹配该网段时,即被选中。如果填写VPC对应的网段,即代表命中当前VPC下全部的 ECS。

    实例 ID

    ECS 实例 ID:多个实例ID请使用英文半角逗号(,)分隔。

    cAdvisor 服务端口

    默认8080。

    Metric 采集间隔(单位/秒)

    默认15s。

    自动配置安全组

    开启该功能后,如果检查不通过会自动添加安全组规则。

    自定义ECS Tag注入

    可添加多个标签。指定ECS标签的Key,会自动将标签的键值对注入到Prometheus指标中。

步骤二:查看监控大盘

Prometheus默认内置了很多容器监控大盘,包括集群概览、核心组件、Node、Pod等监控能力,在容器服务控制台、ARMS控制台、Prometheus控制台都有透出。您可以通过以下方式查看监控大盘。

  1. 登录Prometheus控制台,在左侧导航栏单击接入管理

  2. 接入管理页面,单击大盘查询页签。在ECS环境中选择待查看的集群,即可查看对应的监控大盘。69.jpgimage

步骤三:设置告警

  1. 登录Prometheus控制台,在左侧导航栏单击接入管理

  2. 接入管理页面,单击已接入环境页签。选择ECS环境,然后单击目标环境名称,进入ECS环境详情页面。

  3. 组件管理页签,查看Prometheus内置的告警通知。1.jpg

  4. 内置的告警规则会产生告警事件,但是不会进行告警通知。如果您希望将告警通知发送到邮件或其他平台,可以单击编辑配置通知方式。

    在告警配置页面,您也可以自定义告警阈值、持续时间、告警内容等,告警详细配置,请参见创建Prometheus告警规则

    2.jpg

采集指标说明

指标

类型

指标描述

container_blkio_device_usage_total

COUNTER

块 IO 设备字节使用量

container_cpu_cfs_periods_total

COUNTER

经过的强制执行周期间隔数

container_cpu_cfs_throttled_periods_total

COUNTER

限制的周期间隔数目

container_cpu_cfs_throttled_seconds_total

COUNTER

容器限制的总持续时间

container_cpu_load_average_10s

GAUGE

过去10秒钟的容器 CPU 平均负载值

container_cpu_schedstat_run_periods_total

COUNTER

cgroup 进程在 CPU 上运行的次数

container_cpu_schedstat_runqueue_seconds_total

COUNTER

容器进程在运行队列上等待总时长

container_cpu_schedstat_run_seconds_total

COUNTER

容器进程在 CPU 上运行总时长

container_cpu_system_seconds_total

COUNTER

累计系统 CPU 消耗时间

container_cpu_usage_seconds_total

COUNTER

累计 CPU 消耗时间

container_cpu_user_seconds_total

COUNTER

累计用户 CPU 消耗时间

container_file_descriptors

GAUGE

容器打开的文件描述符数量

container_fs_inodes_free

GAUGE

可用的 Inodes 数量

container_fs_inodes_total

GAUGE

总的 Inodes 数量

container_fs_io_current

GAUGE

当前正在进行的 I/O 数量

container_fs_io_time_seconds_total

COUNTER

累计 I/O 消耗的秒数

container_fs_io_time_weighted_seconds_total

COUNTER

累计加权的 I/O 时间

container_fs_limit_bytes

GAUGE

容器在该文件系统上可以消耗的字节数

container_fs_read_seconds_total

COUNTER

累计读取消耗的秒数

container_fs_reads_bytes_total

COUNTER

累计读取的字节数

container_fs_reads_merged_total

COUNTER

累计合并的读取次数

container_fs_reads_total

COUNTER

累计完成的读取次数

container_fs_sector_reads_total

COUNTER

累计完成的扇区读取次数

container_fs_sector_writes_total

COUNTER

累计完成的扇区写入次数

container_fs_usage_bytes

GAUGE

容器在该文件系统上已使用的字节数

container_fs_write_seconds_total

COUNTER

累计写入消耗的秒数

container_fs_writes_bytes_total

COUNTER

累计写入的字节数

container_fs_writes_merged_total

COUNTER

累计合并的写入次数

container_fs_writes_total

COUNTER

累计完成的写入次数

container_hugetlb_failcnt

COUNTER

hugepage 使用次数达到限制的次数

container_hugetlb_max_usage_bytes

GAUGE

记录的 hugepage 最大使用量

container_hugetlb_usage_bytes

GAUGE

当前的 hugepage 的使用量

container_last_seen

GAUGE

最后看到容器的时间

container_llc_occupancy_bytes

GAUGE

利用 RDT 内存带宽监控(MBM)统计的容器的 LLC 缓存使用情况

container_memory_bandwidth_bytes

GAUGE

利用 RDT 内存带宽监控(MBM)统计的容器的总内存带宽使用情况

container_memory_bandwidth_local_bytes

GAUGE

利用 RDT 内存带宽监控(MBM)统计的容器本地内存带宽使用情况

container_memory_cache

GAUGE

总页缓存

container_memory_failcnt

COUNTER

内存使用超过限制的次数

container_memory_failures_total

COUNTER

内存分配失败的累计次数

container_memory_mapped_file

GAUGE

内存映射文件的大小

container_memory_max_usage_bytes

GAUGE

最大内存使用量

container_memory_migrate

GAUGE

内存迁移状态

container_memory_numa_pages

GAUGE

每个 NUMA 节点上使用的页面数量

container_memory_rss

GAUGE

RSS的大小

container_memory_swap

GAUGE

容器的交换内存使用量

container_memory_usage_bytes

GAUGE

当前内存使用量

container_memory_working_set_bytes

GAUGE

当前工作集

container_network_advance_tcp_stats_total

GAUGE

容器的 Advanced TCP 连接统计

container_network_receive_bytes_total

COUNTER

累计接收的字节数

container_network_receive_errors_total

COUNTER

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

container_network_receive_packets_dropped_total

COUNTER

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

container_network_receive_packets_total

COUNTER

累计接收的数据包数

container_network_tcp6_usage_total

GAUGE

容器的 TCP6 连接统计

container_network_tcp_usage_total

GAUGE

容器的 TCP 连接统计

container_network_transmit_bytes_total

COUNTER

累计传输的字节数

container_network_transmit_errors_total

COUNTER

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

container_network_transmit_packets_dropped_total

COUNTER

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

container_network_transmit_packets_total

COUNTER

累计传输的数据包数

container_network_udp6_usage_total

GAUGE

容器的 UDP6 连接统计

container_network_udp_usage_total

GAUGE

容器的 UDP 连接统计

container_oom_events_total

COUNTER

观察到的容器内存溢出次数

container_perf_events_scaling_ratio

GAUGE

perf 事件计数的缩放比例

container_perf_events_total

COUNTER

perf 核心事件的缩放计数

container_perf_uncore_events_scaling_ratio

GAUGE

perf 非核心事件的缩放比例(事件可以通过事件标签来识别,PMU和socket标签表示测量事件的PMU和CPU socket)

container_perf_uncore_events_total

COUNTER

perf 非核心事件的缩放计数(事件可以通过事件标签来识别,PMU和socket标签表示测量事件的PMU和CPU socket)

container_processes

GAUGE

容器内运行的进程数量

container_referenced_bytes

GAUGE

基于 /proc/smaps 文件中的 Referenced 字段,在上一个测量周期内容器引用的字节数

container_sockets

GAUGE

容器的打开套接字数量

container_spec_cpu_period

GAUGE

容器的 CPU 周期

container_spec_cpu_quota

GAUGE

容器的 CPU 配额

container_spec_cpu_shares

GAUGE

容器的 CPU 份额

container_spec_memory_limit_bytes

GAUGE

容器的内存限制

container_spec_memory_reservation_limit_bytes

GAUGE

容器的内存保留限制

container_spec_memory_swap_limit_bytes

GAUGE

容器的内存交换限制

container_start_time_seconds

GAUGE

容器自 Unix 纪元以来的启动时间

container_tasks_state

GAUGE

给定状态中的任务数(睡眠、运行、停止、不可中断或I/O等待)

container_threads

GAUGE

容器内运行的线程数量

container_threads_max

GAUGE

容器内允许的最大线程数

container_ulimits_soft

GAUGE

容器根进程的 soft ulimit 值

machine_cpu_cache_capacity_bytes

GAUGE

分配给 NUMA 节点和 CPU 核心的缓存大小(以字节为单位)

machine_cpu_cores

GAUGE

逻辑 CPU 核心数

machine_cpu_physical_cores

GAUGE

物理 CPU 核心数

machine_cpu_sockets

GAUGE

CPU 插槽数

machine_dimm_capacity_bytes

GAUGE

各类型内存模块标记的总 RAM DIMM 容量值

machine_dimm_count

GAUGE

各类型内存模块标记的RAM DIMM数量

machine_memory_bytes

GAUGE

安装在机器上的内存容量

machine_swap_bytes

GAUGE

机器上可用的交换内存容量

machine_node_distance

GAUGE

NUMA 节点和目标 NUMA 节点之间的距离

machine_node_hugepages_count

GAUGE

分配给 NUMA 节点的 hugepage 数量

machine_node_memory_capacity_bytes

GAUGE

分配给 NUMA 节点的内存数量

machine_nvm_avg_power_budget_watts

GAUGE

NVM 平均功率预算

machine_nvm_capacity

GAUGE

NVM 容量值

machine_thread_siblings_count

GAUGE

CPU 兄弟线程的数量

相关文档

如何构建高效稳定的Docker容器监控体系