本文介紹如何監控Docker單機容器,以協助企業更好地管理和維護容器化應用。
前提條件
已開通可觀測監控Prometheus版。具體操作,請參見計費說明。
已建立ECS執行個體。具體操作,請參見通過控制台使用ECS執行個體(快捷版)。
已開通阿里雲資源中心。具體操作,請參見開通資源中心。
步驟一:接入Docker單機容器監控
登入Prometheus控制台,在左側導覽列單擊接入中心。
單擊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等監控能力,在Container Service控制台、ARMS控制台、Prometheus控制台都有透出。您可以通過以下方式查看監控大盤。
登入Prometheus控制台,在左側導覽列單擊接入管理。
在接入管理頁面,單擊大盤查詢頁簽。在ECS環境中選擇待查看的叢集,即可查看對應的監控大盤。


步驟三:設定警示
登入Prometheus控制台,在左側導覽列單擊接入管理。
在接入管理頁面,單擊已接入環境頁簽。選擇ECS環境,然後單擊目標環境名稱,進入ECS環境詳情頁面。
在組件管理頁簽,查看Prometheus內建的警示通知。

內建的警示規則會產生警示事件,但是不會進行警示通知。如果您希望將警示通知發送到郵件或其他平台,可以單擊編輯配置通知方式。
在警示配置頁面,您也可以自訂警示閾值、期間、警示內容等,警示詳細配置,請參見建立Prometheus警示規則。

採集指標說明
指標 | 類型 | 指標描述 |
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 兄弟線程的數量 |