编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

如何得到实时的Docker性能Metrics?

wxchong 2024-10-15 17:20:20 开源技术 11 ℃ 0 评论

Docker能够将应用程序与基础架构分开,从而可以快速交付软件。通过利用 Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

现在不少公司使用了Docker技术,它给我们带来便利的同时,也带来了挑战,比如对Docker的监控,本文介绍两种比较快捷的方法:

Docker Stats

该监控工具是Docker引擎自带的,使用起来比较方便,在shell中直接输入“docker stats”:

监控项默认包含CPU、内存、网络、硬盘和容器创建的进程或线程的数量。如果想查看指定容器使用的CPU使用情况,可以使用过滤,

aneirin@host-1:~$ docker stats --format "{{.Name}}\t{{.CPUPerc}}" coredns_coredns_1 trickster-demo_trickster_1

cAdvisor

“cAdvisor”是由Google开发的一款容器监控软件,提供内容丰富的Web UI做展示。cAdvisor不仅可以对Docker运行的容器进行监控,其他类型的“容器”也可以监控。cAdvisor运行也特别方便,但它需要访问物理机的一些目录,下面所示:

docker run \
  --rm \
  --name cadvisor \
  -p 8080:8080 \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  google/cadvisor

运行后,访问链接“http://localhost:8080”,可以查看cAdvisor的Web UI界面,如下,

如前文所讲,依赖google的“lmctfy”,cAdvisor可以监控多种类型的容器,点击指定的“Subcontainers”可以查看详情,

Prometheus

上面介绍的两种方法可以实时得到Docker的metrics,但是不方便对容器历史性能Metrics进行分析,这时需要依赖“Prometheus”的协助。

Prometheus是开源的监控和告警套件,诞生于2012年,非常适合用来存储时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据集合。Prometheus有几种获取metrics的方式,最常用是直接请求暴露Metrics的Web API。

输出Docker引擎的实时Metrics到Prometheus,这里介绍两种方法,

1,直接采集Docker引擎暴露的Metrics

Docker引擎可以使能输出Metrics(默认是关闭的),修改Docker的配置文件,

/etc/docker/daemon.json

{
  "metrics-addr" : "10.1.1.2:9323",
  "experimental" : true
}

2,通过cAdvisor采集Docker引擎的Metrics

采用这种方式,不用额外做任何配置,因为默认cAdvisor就会输出Docker引擎的各类Metrics,通过访问“http://localhost:8080/metrics”便可得到Metrics。

配置Prometheus

Prometheus访问Web API获取Metrics,因此配置文件中需要写明拉取的目标URL,示例配置文件,

global:
  scrape_interval: 15s
  scrape_timeout: 10s
  evaluation_interval: 15s
scrape_configs:
- job_name: cAdvisor
  scrape_interval: 5s
  static_configs:
  - targets:
    - cadvisor-IP:8080
- job_name: docker-deamon
  scrape_interval: 5s
  static_configs:
  - targets:
    - host-running-docker-IP:9323

容器方式运行Prometheus,

docker run \
  --rm \
  -p 9090:9090 \
  --name prometheus \
  -v ${PWD}/prometheus.yml:/etc/prometheus/prometheus.yml:ro \
  prom/prometheus --config.file=/etc/prometheus/prometheus.yml

通过上面的方式从两个不同的数据源获取Docker引擎Metrics并存储。这样就能方便的查看历史数据,配合Grafana便可以得到美观清晰的Dashboard。

总结

文章介绍了两种比较常用的获取Docker Metrics的方法,最后对Prometheus的使用做了简单介绍。

希望这篇文章能帮到正在努力的你,欢迎评论关注!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表