使用docker run命令在Prometheus中获取cAdvisor的指标

首先

在研究 Kubernetes 监控时,我觉得可能需要用到 cAdvisor,但由于对 cAdvisor 不太了解,我一直以为它是与 Kubernetes 一起启动的东西。为了解决这个问题,我开始从 cAdvisor 的使用方法进行了调查。在这里,我们将至少配置 cAdvisor,以便在 Prometheus(+ Grafana)中获取指标。

cAdvisor是什么

logo.jpg

启动cAdvisor

由于cAdvisor以docker容器镜像提供,因此可以使用docker命令或配置管理文件来启动。这里介绍使用docker run直接启动的方法。

执行环境

请从这个页面上查看有关Prometheus和Grafana的用法等类似的文章。

操作系统:CentOS7
Kubernetes版本:1.13.1
用户:以下操作都是以root用户执行的。

执行 Docker run 命令

我在参考GitHub上的页面后,按照以下方式输入命令,启动了容器。

[root@k8s-master ~]# docker run --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest
20fea528ac6bca0f2dd7b0d71a077920cdc770634af34a3da0e6f898938a9617
[root@k8s-master ~]# docker ps --filter "name=cadvisor"
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
20fea528ac6b        google/cadvisor:latest   "/usr/bin/cadvisor..."   17 minutes ago      Up 17 minutes       0.0.0.0:8080->8080/tcp   cadvisor
[root@k8s-master ~]# 
cadvisor-prometheus-2.jpg

从Prometheus(+Grafana)获取指标

由于 cAdvisor 已启动,我们可以从 Prometheus 获取度量信息。在 Prometheus 的官方网页中有介绍如何操作。

编辑配置文件

编辑 Prometheus 的配置文件 prometheus.yml,添加一个 cAdvisor 的目标。

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

# ここからcAdvisorの部分に該当する
  - job_name: cadvisor
    scrape_interval: 5s
    static_configs:
    - targets: ['localhost:8080']

使用GUI从Prometheus进行访问。

cadvisor-prometheus-4.jpg

从GUI登录Grafana。

cadvisor-prometheus-5.jpg

总结

如果只是无思考地启动cAdvisor,可以这样简单地做。从Prometheus(+Grafana)获取指标也不是太困难。
然而,由于cAdvisor无法长时间保存数据,所以通常与InfluxDB等结合使用。此外,本次使用docker run命令进行启动,但也可以通过创建yaml文件来启动。官方页面介绍了使用kustomize进行部署的方法。

请提供参考链接。

使用cAdvisor监控Docker容器的方法 [第1部分]
使用cAdvisor监控Docker容器的方法 [第2部分]

广告
将在 10 秒后关闭
bannerAds