【prometheus】-06 Kubernetes云原生监控之cAdvisor容器资源监控
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{}