@JunQiu
2018-09-18T21:09:22.000000Z
字数 1528
阅读 2608
docker_Portainer、ELK
summary_2018/08
docker
tools
1、日常
1.1、docker图形化管理界面:Portainer
1.2、docker日志收集:ELK
2、技术
2.1、docker图形化管理界面:Portainer
- Portainer is a lightweight management UI which allows you to easily manage your different Docker environments (Docker hosts or Swarm clusters).(一个轻量级的、开源的docker图形化管理界面)
- 一些功能展示
- 详细文档
- 功能
- 提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足中小型单位对容器管理的全部需求。
- 简单使用
2.2、docker日志收集:ELK
2.2.1、概述
- 容器运行程序时产生的日志具有“短暂,分布,隔离”等特点,因此在架构中收集Docker日志面临很大的挑战,有待尝试一种强有力的日志收集和处理方案来解决此类复杂问题。
- ELK (Elasticsearch,Logstash和Kibana)是处理容器日志的一种方式,尽管设置ELK工作流并不容易(难度取决于环境规格),但最终可以使用Kibana的监控面板来展示Docker日志:
2.2.2、日志收集流程
- 典型的ELK日志收集流程如下图所示:
- Logstash负责从各种Docker容器和主机中提取日志,这个流程的主要优点是可以更好地用过滤器来解析日志,Logstash将日志转发到Elasticsearch进行存储,索引,Kibana分析和可视化数据。
- 当然这个流程可以有多种不同的实现方式,例如可以使用不同的日志收集和转发组件,如Fluentd或Filebeat将日志发送到Elasticsearch,或者,添加一个由Kafka或Redis容器组成的中间层,作为Logstash和Elasticsearch之间的缓冲区。上图显示了日志从Docker到ELK的基本流程。
2.2.3、组件安装
- ELK的docker镜像推荐使用docker-elk,它支持丰富的运行参数(可使用这些参数组合不同的版本)和文档, 而且完全支持最新版本的 Elasticsearch, Logstash, 和 Kibana.
- 安装方式
2.2.4、将日志导入ELK
- 不了解docker的日志可以看一下:docker的日志
- 安装组件比较简单,相比而言将Docker日志发送到ELK有点复杂,这取决于输出日志的方式。如果没有额外指定,容器的stdout和stderr输出(也称为“docker logs”)输出到JSON文件。所以,如果是一个小型Docker环境,使用Filebeat来收集日志将是不错的选择。但如果使用其他日志记录驱动程序,则可能需要考虑其他方法。
- 这里展示一些方案:
- Filebeat
- 日志驱动:Docker从1.12开始支持Logging Driver,允许将Docker日志路由到指定的第三方日志转发层,可将日志转发到AWS CloudWatch,Fluentd,GELF或NAT服务器。
- Logspout
- Logz.io
2.2.5、结语
- Docker日志记录没有完美的方案,无论选择什么解决方案,使用日志记录驱动程序,Filebeat还是SaaS监控平台,每个方案都有优缺点,需要根据自己的实际情况进行选择。
2.2.6、参考
2.2.7、一个简单的实例:(待完成)