对不起,我刚开始学习 docker。对于你们中的一些人来说,我的问题可能看起来很愚蠢。事实上,我想知道是否有办法在运行时从“CAdvisor”容器(而不是 cgroup)收集性能指标?我的意思是,从 cadvisor 设计的曲线中提取性能值,例如内存使用量或网络流量。我需要记录这些值并将它们保存在数据库中,以便我可以对这些生成的值执行统计分析(例如比较两个 docker 容器在 t=50s 时的内存消耗)。
提前致谢。
正如其他答案所提到的,cAdvisor 不提供自己的性能数据 API,而是公开指标,如果想要获得“实时”之外的性能数据,这些指标通常会在单独的数据库中处理。例如,cAdvisor 原生导出 Prometheus 指标:
http://prometheus.io/docs/instrumenting/exporters/
Prometheus 指标类型:
http://prometheus.io/docs/concepts/metric_types/
Prometheus 支持相当丰富的函数式表达语言,可用于查询和可视化:
我认为您可以为此使用https://github.com/tutumcloud/container-metrics 。基本上,这样做是使用 influxdb http://influxdb.com/作为时间序列数据存储。
这里有更多信息:http: //blog.tutum.co/2014/08/25/panamax-docker-application-template-with-cadvisor-elasticsearch-grafana-and-influxdb/
有几个人似乎正在研究 ELK 堆栈(Elastic Search、Logstash、Kibana),以便在此处可视化其中的一些数据:https ://github.com/google/cadvisor/issues/634
cAdvisor 确实提供了一个休息端点来实时获取任何统计数据。默认情况下,它保留最近两分钟的数据。您可以将其配置为保留更多或更少。它还支持存储后端以将统计信息转储到 influxdb 数据库。
REST API:
例如。/api/v1.3/containers 文档:https ://github.com/google/cadvisor/blob/master/docs/api.md
关于设置 InfluxDB 的文档: https ://github.com/google/cadvisor/blob/master/docs/influxdb.md