Docker單機容器監(jiān)控接入
本文介紹如何監(jiān)控Docker單機容器,以幫助企業(yè)更好地管理和維護容器化應(yīng)用。
前提條件
已開通可觀測監(jiān)控Prometheus版。具體操作,請參見計費說明。
已創(chuàng)建ECS實例。具體操作,請參見通過控制臺使用ECS實例(快捷版)。
已開通阿里云資源中心。具體操作,請參見開通資源中心。
步驟一:接入Docker單機容器監(jiān)控
登錄Prometheus控制臺,在左側(cè)導航欄單擊接入中心。
單擊Docker 單機容器監(jiān)控卡片,然后根據(jù)控制臺指引完成組件接入。下面對重點配置項進行說明。
配置項
說明
cAdvisor 安裝方式
cAdvisor(Container Advisor)是Google開源的一款容器監(jiān)控工具,可以收集容器的CPU、內(nèi)存、網(wǎng)絡(luò)和磁盤等資源使用情況。
自動安裝:自動根據(jù)您提供的過濾策略對 ECS 實例進行服務(wù)發(fā)現(xiàn),并向發(fā)現(xiàn)的主機中安裝 cAdvisor 服務(wù)。
自助安裝:需要你在接入前自行在 ECS 主機上安裝 cAdvisor 服務(wù),并開放對應(yīng)的端口,開放 VPC 內(nèi)訪問。
說明ECS 白名單需要為 VPC 網(wǎng)段開放指定端口。
主機服務(wù)發(fā)現(xiàn)方式
如何選擇要監(jiān)控的ECS主機:
污點標簽選擇
ECS 污點標簽:通過ECS實例的污點標簽(反向選擇)來匹配目標的實例。
無條件(選擇當前VPC所有Linux實例)
-
標簽選擇
ECS 實例標簽:通過ECS實例的標簽來匹配目標的實例。
IP 域選擇
ECS 網(wǎng)段(IP CIDR):該方提供一個網(wǎng)段,當ECS的IP地址匹配該網(wǎng)段時,即被選中。如果填寫VPC對應(yīng)的網(wǎng)段,即代表命中當前VPC下全部的 ECS。
實例 ID
ECS 實例 ID:多個實例ID請使用英文半角逗號(,)分隔。
cAdvisor 服務(wù)端口
默認8080。
Metric 采集間隔(單位/秒)
默認15s。
自動配置安全組
開啟該功能后,如果檢查不通過會自動添加安全組規(guī)則。
自定義ECS Tag注入
可添加多個標簽。指定ECS標簽的Key,會自動將標簽的鍵值對注入到Prometheus指標中。
步驟二:查看監(jiān)控大盤
Prometheus默認內(nèi)置了很多容器監(jiān)控大盤,包括集群概覽、核心組件、Node、Pod等監(jiān)控能力,在容器服務(wù)控制臺、ARMS控制臺、Prometheus控制臺都有透出。您可以通過以下方式查看監(jiān)控大盤。
登錄Prometheus控制臺,在左側(cè)導航欄單擊接入管理。
在接入管理頁面,單擊大盤查詢頁簽。在ECS環(huán)境中選擇待查看的集群,即可查看對應(yīng)的監(jiān)控大盤。
步驟三:設(shè)置告警
登錄Prometheus控制臺,在左側(cè)導航欄單擊接入管理。
在接入管理頁面,單擊已接入環(huán)境頁簽。選擇ECS環(huán)境,然后單擊目標環(huán)境名稱,進入ECS環(huán)境詳情頁面。
在組件管理頁簽,查看Prometheus內(nèi)置的告警通知。
內(nèi)置的告警規(guī)則會產(chǎn)生告警事件,但是不會進行告警通知。如果您希望將告警通知發(fā)送到郵件或其他平臺,可以單擊編輯配置通知方式。
在告警配置頁面,您也可以自定義告警閾值、持續(xù)時間、告警內(nèi)容等,告警詳細配置,請參見創(chuàng)建Prometheus告警規(guī)則。
采集指標說明
指標 | 類型 | 指標描述 |
container_blkio_device_usage_total | COUNTER | 塊 IO 設(shè)備字節(jié)使用量 |
container_cpu_cfs_periods_total | COUNTER | 經(jīng)過的強制執(zhí)行周期間隔數(shù) |
container_cpu_cfs_throttled_periods_total | COUNTER | 限制的周期間隔數(shù)目 |
container_cpu_cfs_throttled_seconds_total | COUNTER | 容器限制的總持續(xù)時間 |
container_cpu_load_average_10s | GAUGE | 過去10秒鐘的容器 CPU 平均負載值 |
container_cpu_schedstat_run_periods_total | COUNTER | cgroup 進程在 CPU 上運行的次數(shù) |
container_cpu_schedstat_runqueue_seconds_total | COUNTER | 容器進程在運行隊列上等待總時長 |
container_cpu_schedstat_run_seconds_total | COUNTER | 容器進程在 CPU 上運行總時長 |
container_cpu_system_seconds_total | COUNTER | 累計系統(tǒng) CPU 消耗時間 |
container_cpu_usage_seconds_total | COUNTER | 累計 CPU 消耗時間 |
container_cpu_user_seconds_total | COUNTER | 累計用戶 CPU 消耗時間 |
container_file_descriptors | GAUGE | 容器打開的文件描述符數(shù)量 |
container_fs_inodes_free | GAUGE | 可用的 Inodes 數(shù)量 |
container_fs_inodes_total | GAUGE | 總的 Inodes 數(shù)量 |
container_fs_io_current | GAUGE | 當前正在進行的 I/O 數(shù)量 |
container_fs_io_time_seconds_total | COUNTER | 累計 I/O 消耗的秒數(shù) |
container_fs_io_time_weighted_seconds_total | COUNTER | 累計加權(quán)的 I/O 時間 |
container_fs_limit_bytes | GAUGE | 容器在該文件系統(tǒng)上可以消耗的字節(jié)數(shù) |
container_fs_read_seconds_total | COUNTER | 累計讀取消耗的秒數(shù) |
container_fs_reads_bytes_total | COUNTER | 累計讀取的字節(jié)數(shù) |
container_fs_reads_merged_total | COUNTER | 累計合并的讀取次數(shù) |
container_fs_reads_total | COUNTER | 累計完成的讀取次數(shù) |
container_fs_sector_reads_total | COUNTER | 累計完成的扇區(qū)讀取次數(shù) |
container_fs_sector_writes_total | COUNTER | 累計完成的扇區(qū)寫入次數(shù) |
container_fs_usage_bytes | GAUGE | 容器在該文件系統(tǒng)上已使用的字節(jié)數(shù) |
container_fs_write_seconds_total | COUNTER | 累計寫入消耗的秒數(shù) |
container_fs_writes_bytes_total | COUNTER | 累計寫入的字節(jié)數(shù) |
container_fs_writes_merged_total | COUNTER | 累計合并的寫入次數(shù) |
container_fs_writes_total | COUNTER | 累計完成的寫入次數(shù) |
container_hugetlb_failcnt | COUNTER | hugepage 使用次數(shù)達到限制的次數(shù) |
container_hugetlb_max_usage_bytes | GAUGE | 記錄的 hugepage 最大使用量 |
container_hugetlb_usage_bytes | GAUGE | 當前的 hugepage 的使用量 |
container_last_seen | GAUGE | 最后看到容器的時間 |
container_llc_occupancy_bytes | GAUGE | 利用 RDT 內(nèi)存帶寬監(jiān)控(MBM)統(tǒng)計的容器的 LLC 緩存使用情況 |
container_memory_bandwidth_bytes | GAUGE | 利用 RDT 內(nèi)存帶寬監(jiān)控(MBM)統(tǒng)計的容器的總內(nèi)存帶寬使用情況 |
container_memory_bandwidth_local_bytes | GAUGE | 利用 RDT 內(nèi)存帶寬監(jiān)控(MBM)統(tǒng)計的容器本地內(nèi)存帶寬使用情況 |
container_memory_cache | GAUGE | 總頁緩存 |
container_memory_failcnt | COUNTER | 內(nèi)存使用超過限制的次數(shù) |
container_memory_failures_total | COUNTER | 內(nèi)存分配失敗的累計次數(shù) |
container_memory_mapped_file | GAUGE | 內(nèi)存映射文件的大小 |
container_memory_max_usage_bytes | GAUGE | 最大內(nèi)存使用量 |
container_memory_migrate | GAUGE | 內(nèi)存遷移狀態(tài) |
container_memory_numa_pages | GAUGE | 每個 NUMA 節(jié)點上使用的頁面數(shù)量 |
container_memory_rss | GAUGE | RSS的大小 |
container_memory_swap | GAUGE | 容器的交換內(nèi)存使用量 |
container_memory_usage_bytes | GAUGE | 當前內(nèi)存使用量 |
container_memory_working_set_bytes | GAUGE | 當前工作集 |
container_network_advance_tcp_stats_total | GAUGE | 容器的 Advanced TCP 連接統(tǒng)計 |
container_network_receive_bytes_total | COUNTER | 累計接收的字節(jié)數(shù) |
container_network_receive_errors_total | COUNTER | 接收時遇到的錯誤累計次數(shù) |
container_network_receive_packets_dropped_total | COUNTER | 接收時丟棄的數(shù)據(jù)包累計次數(shù) |
container_network_receive_packets_total | COUNTER | 累計接收的數(shù)據(jù)包數(shù) |
container_network_tcp6_usage_total | GAUGE | 容器的 TCP6 連接統(tǒng)計 |
container_network_tcp_usage_total | GAUGE | 容器的 TCP 連接統(tǒng)計 |
container_network_transmit_bytes_total | COUNTER | 累計傳輸?shù)淖止?jié)數(shù) |
container_network_transmit_errors_total | COUNTER | 傳輸時遇到的錯誤累計次數(shù) |
container_network_transmit_packets_dropped_total | COUNTER | 傳輸時丟棄的數(shù)據(jù)包累計次數(shù) |
container_network_transmit_packets_total | COUNTER | 累計傳輸?shù)臄?shù)據(jù)包數(shù) |
container_network_udp6_usage_total | GAUGE | 容器的 UDP6 連接統(tǒng)計 |
container_network_udp_usage_total | GAUGE | 容器的 UDP 連接統(tǒng)計 |
container_oom_events_total | COUNTER | 觀察到的容器內(nèi)存溢出次數(shù) |
container_perf_events_scaling_ratio | GAUGE | perf 事件計數(shù)的縮放比例 |
container_perf_events_total | COUNTER | perf 核心事件的縮放計數(shù) |
container_perf_uncore_events_scaling_ratio | GAUGE | perf 非核心事件的縮放比例(事件可以通過事件標簽來識別,PMU和socket標簽表示測量事件的PMU和CPU socket) |
container_perf_uncore_events_total | COUNTER | perf 非核心事件的縮放計數(shù)(事件可以通過事件標簽來識別,PMU和socket標簽表示測量事件的PMU和CPU socket) |
container_processes | GAUGE | 容器內(nèi)運行的進程數(shù)量 |
container_referenced_bytes | GAUGE | 基于 /proc/smaps 文件中的 Referenced 字段,在上一個測量周期內(nèi)容器引用的字節(jié)數(shù) |
container_sockets | GAUGE | 容器的打開套接字數(shù)量 |
container_spec_cpu_period | GAUGE | 容器的 CPU 周期 |
container_spec_cpu_quota | GAUGE | 容器的 CPU 配額 |
container_spec_cpu_shares | GAUGE | 容器的 CPU 份額 |
container_spec_memory_limit_bytes | GAUGE | 容器的內(nèi)存限制 |
container_spec_memory_reservation_limit_bytes | GAUGE | 容器的內(nèi)存保留限制 |
container_spec_memory_swap_limit_bytes | GAUGE | 容器的內(nèi)存交換限制 |
container_start_time_seconds | GAUGE | 容器自 Unix 紀元以來的啟動時間 |
container_tasks_state | GAUGE | 給定狀態(tài)中的任務(wù)數(shù)(睡眠、運行、停止、不可中斷或I/O等待) |
container_threads | GAUGE | 容器內(nèi)運行的線程數(shù)量 |
container_threads_max | GAUGE | 容器內(nèi)允許的最大線程數(shù) |
container_ulimits_soft | GAUGE | 容器根進程的 soft ulimit 值 |
machine_cpu_cache_capacity_bytes | GAUGE | 分配給 NUMA 節(jié)點和 CPU 核心的緩存大?。ㄒ宰止?jié)為單位) |
machine_cpu_cores | GAUGE | 邏輯 CPU 核心數(shù) |
machine_cpu_physical_cores | GAUGE | 物理 CPU 核心數(shù) |
machine_cpu_sockets | GAUGE | CPU 插槽數(shù) |
machine_dimm_capacity_bytes | GAUGE | 各類型內(nèi)存模塊標記的總 RAM DIMM 容量值 |
machine_dimm_count | GAUGE | 各類型內(nèi)存模塊標記的RAM DIMM數(shù)量 |
machine_memory_bytes | GAUGE | 安裝在機器上的內(nèi)存容量 |
machine_swap_bytes | GAUGE | 機器上可用的交換內(nèi)存容量 |
machine_node_distance | GAUGE | NUMA 節(jié)點和目標 NUMA 節(jié)點之間的距離 |
machine_node_hugepages_count | GAUGE | 分配給 NUMA 節(jié)點的 hugepage 數(shù)量 |
machine_node_memory_capacity_bytes | GAUGE | 分配給 NUMA 節(jié)點的內(nèi)存數(shù)量 |
machine_nvm_avg_power_budget_watts | GAUGE | NVM 平均功率預算 |
machine_nvm_capacity | GAUGE | NVM 容量值 |
machine_thread_siblings_count | GAUGE | CPU 兄弟線程的數(shù)量 |