集群监控:工具与实践
1. 集群监控的重要性
在管理 Docker 集群时,仅设置好编排还远远不够,还需要对集群有全面的可见性。例如,数据检索为何缓慢,是磁盘还是网络问题?应用的 Web 服务器记录了哪些信息?应用使用了多少内存?作为管理员,需要对这些问题给出答案。
2. 容器日志记录
2.1 Docker 日志记录的挑战
Docker 中的容器设计为临时性的,经常被创建和销毁,这使得应用日志文件会随容器一起被删除,给日志管理带来了挑战。
2.2 Docker 日志插件的使用
Docker 假设所有输出到标准输出或标准错误的内容都是日志,可以通过docker logs <container name>命令查看这些日志,但这些日志仅在容器存在时有效。为解决此问题,Docker 提供了日志插件系统,允许管理员将日志发送到其他地方。
在编排环境中,建议将日志发送到日志聚合服务器。以下是一些可用的远程日志记录选项:
| 日志驱动 | 描述 | 优点 | 缺点 |
| ---- | ---- | ---- | ---- |
| syslog | Unix 和 Linux 系统中常用的远程日志记录解决方案 | 若已有远程 Syslog 基础设施,是不错的选择 | 日志未格式化,难以自动挖掘有用数据 |
| gelf | Graylog 项目开发的扩展日志格式,提供结构化日志 | 可与 NoSQL 数据库配合,自动索引和搜索 | - |
| fluentd | 进一步发展了结构化日志概念,可轻松将不同日志发送