关于docker容器的监控
1 docker inspect [容器ID | 镜像ID]
查看容器创建时间、容器的IP、映射的端口、挂载的目录等信息。
此命令同样也能用来查看镜像的详细信息。
2 docker stats 容器ID
用来查看容器的资源使用情况,如:CPU、内存、网络、I/O
另外,在docker的配置文件中添加如下的参数之后,可以采用curl来调用stats API接口
DOCKER_OPTS="-H tcp://127.0.0.1:2375"
curl的使用命令如下:
curl http://127.0.0.1:2375/containers/容器ID/stats
返回的是json格式的字符流信息,使用ctrl+c中断
3 docker events
查看主机上发生的容器的创建、停止、销毁等容器生命周期相关的事件信息
可以结合以下选项参数执行命令:
–since 时间戳
–until 时间戳
提示:当前时间戳可以通过 date +”%s”命令查看
4 docker logs 容器ID
当进程在容器中是以前台运行的方式运行的时候,可以在宿主机上用这个命令来查看容器内运行的日志。
如果希望持续监控日志的化,可以使用-f选项:
docker logs -f 容器ID
注意:docker logs是否可用还要看当前配置的log driver。默认的json-file日志驱动和journald日志驱动支持docker logs命令查看。
另外,可以使用[docker top 容器ID]命令来查看容器内运行的进程信息。
5 关于日志收集
1)配置log driver进行日志收集
在启动容器的时候,可以通过–log-driver选项来指定日志驱动。通过日志驱动,可以将日志传给syslog、journald、fluentd等。
2)通过logspout收集容器日志
logspout可以收集主机上所有容器的日志,并将它们转到其它主机。logspout以容器的方式运行,并且是无状态的。可以通过logspout将日志转发到syslog或logstash。
详细用法可参考: https://github.com/gliderlabs/logspout
6 监控容器的资源使用
cAdvisor项目是google创建的,用来监控容器的资源使用和性能。cAdvisor以容器的方式运行,可以监控所在主机上的所有容器;提供web UI界面;支持REST API;可以将数据流保存到influxdb。
详细参考: https://github.com/google/cadvisor
另外,除了cAdvisor,collectd( https://collectd.org/)也可以用来监控容器的资源指标。
7 使用InfluxDB,Grafana和cAdvisor监控容器指标
ELK之外的另一种选择方案。cAdvisor收集容器指标信息后,将数据存到时序数据库influxdb,Grafana从influxdb获取数据并展示。
8 使用ELK来存储和可视化容器日志
前面说到的logspout可以用来将各主机上的容器日志传给远程的logstash,再将日志存储到Elasticsearch,通过kibana来查询Elasticsearch索引,进行可视化展示。
9 weave scope工具将容器的布局/关联可视化
weave scope在github上的地址为:
https://github.com/weaveworks/scope
weave scope可以实时生成容器的相互调用的拓扑图,有助于直观的理解、监控和控制容器应用
参考资料:Docker Cookbook