【prometheus】-06 Kubernetes云原生监控之cAdvisor容器

腾讯云   2023-03-23 18:32:11


(资料图)

Kubernetes监控接入之cAdvisor容器资源监控

概述

Kubernetes云原生集群监控主要涉及到如下三类指标:node物理节点指标、pod & container容器资源指标和Kubernetes云原生集群资源指标。针对这三类指标都有比较成熟的方案,见下图:

上节我们整理了node性能指标如何监控,这一节我们就来分析下cAdvisor性能指标监控。

cAdvisor(Container Advisor)Google开源的一个容器监控工具,可用于对容器资源的使用情况和性能进行监控。它以守护进程方式运行,用于收集、聚合、处理和导出正在运行容器的有关信息。具体来说,该组件对每个容器都会记录其资源隔离参数、历史资源使用情况、完整历史资源使用情况的直方图和网络统计信息。cAdvisor本身就对 Docker容器支持,并且还对其它类型的容器尽可能的提供支持,力求兼容与适配所有类型的容器。

由以上介绍我们可以知道,cAdvisor是用于监控容器引擎的,由于其监控的实用性,Kubernetes已经默认将其与 Kubelet融合,所以我们无需再单独部署 cAdvisor组件来暴露节点中容器运行的信息,直接使用 Kubelet组件提供的指标采集地址即可。

环境信息

本人搭建的 Kubernetes集群环境如下图,后续都是基于该集群演示:

Prometheus接入

1、访问Prometheus API方式检查:

kubectl get --raw /api/v1/nodes/${1}/proxy/metrics/cadvisor

2、创建Prometheus抓取任务job

- job_name: kubernetes-nodes-cadvisor    metrics_path: /metrics    scheme: https    kubernetes_sd_configs:    - role: node      api_server: https://apiserver.simon:6443      bearer_token_file: /tools/token.k8s      tls_config:        insecure_skip_verify: true    bearer_token_file: /tools/token.k8s    tls_config:      insecure_skip_verify: true    relabel_configs:    # 将标签(.*)作为新标签名,原有值不变    - action: labelmap      regex: __meta_kubernetes_node_label_(.*)    # 修改NodeIP:10250为APIServerIP:6443    - action: replace      regex: (.*)      source_labels: ["__address__"]      target_label: __address__      replacement: 192.168.52.151:6443 #apiserver    - action: replace      source_labels: [__meta_kubernetes_node_name]      target_label: __metrics_path__      regex: (.*)      replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor  

3、检查是否接入成功:

4、cAdvisor组件抓取指标列表:

container_fs_write_seconds_total{}container_memory_swap{}container_spec_cpu_shares{}container_ulimits_soft{}container_fs_io_current{}container_fs_reads_bytes_total{}container_fs_writes_merged_total{}container_cpu_user_seconds_total{}container_memory_failcnt{}container_memory_failures_total{}container_cpu_cfs_throttled_seconds_total{}container_cpu_usage_seconds_total{}container_fs_io_time_seconds_total{}container_network_receive_packets_total{}container_spec_memory_reservation_limit_bytes{}cadvisor_version_info{}container_cpu_cfs_periods_total{}container_fs_limit_bytes{}container_fs_sector_writes_total{}container_memory_usage_bytes{}container_memory_working_set_bytes{}container_network_receive_errors_total{}container_network_transmit_packets_dropped_total{}container_spec_cpu_period{}container_file_descriptors{}container_fs_inodes_total{}container_fs_usage_bytes{}container_network_transmit_packets_total{}container_cpu_load_average_10s{}container_fs_writes_bytes_total{}container_memory_cache{}container_spec_cpu_quota{}container_cpu_cfs_throttled_periods_total{}container_network_receive_bytes_total{}container_network_transmit_errors_total{}container_sockets{}container_spec_memory_swap_limit_bytes{}container_threads{}container_threads_max{}container_cpu_system_seconds_total{}container_fs_read_seconds_total{}container_fs_reads_merged_total{}container_fs_sector_reads_total{}container_processes{}container_spec_memory_limit_bytes{}container_fs_inodes_free{}container_network_receive_packets_dropped_total{}container_network_transmit_bytes_total{}container_fs_io_time_weighted_seconds_total{}container_fs_reads_total{}container_fs_writes_total{}container_memory_max_usage_bytes{}container_memory_rss{}container_scrape_error{}container_start_time_seconds{}container_last_seen{}container_memory_mapped_file{}container_tasks_state{}

dashboard配置

导入3125 或 13025 dashboardcAdvisor性能监控指标就展示到模板上,如下图: