【读书笔记】docker日志与监控

日志

docker默认的日志记录

  • 通过docker log获得
  • 缺点有:①只能处理STDOUT和STDERR,不能记录到文件;②不清理日志文件,耗损空间

docker的可选日志记录方法

  • json-file
  • syslog
  • journald
  • gelf
  • fluentd
  • none

日志汇总

多主机系统中需要将各台主机的日志汇总,方法有以下两种:
- 在所有的容器内运行多一个进程,由这个进程将日志转发到汇总服务的代理(会是镜像变大,且增加多余的进程)
- 在主机或另一个独立容器中,收集日志并转发到汇总服务

在主机中查看日志有几种方法:
- docker API 以编程接口访问(logsout)
- syslog系统日志驱动方式下,可以通过通过syslog自身的功能来转发
- 直接从docker 目录访问


日志管理

使用ELK进行日志记录

ELK
- Elasticsearch 文本搜索引擎
- Logstash 读取原始日志,然后进行解析和过滤,转发
- kibana 基于JavaScript的Elasticsearch图形界面

最佳实践
- 将ELK容器放在另一台单独的主机上,以保持不同的功能之间的清晰划分
- 使用logspout-logstash适配器将docker日志转变为logstash很容易读取的格式

使用syslog进行日志管理


监控和警报

直接获取数据

  • docker stats 能够返回资源使用情况的实时流
  • linux内核的CGroups及命名空间可以直接获取各种指标
  • 监控特定数据,可以通过runc或直接调用内核函数

cAdvisor

谷歌的cAdvisor是最常用的docker监控工具

集群解决方案

  • 谷歌的Heapster:基于cAdvisor
  • Prometheus:主要支持大型的微服务架构系统

你可能感兴趣的:(【读书笔记】)