你想了解你的Docker容器里面都发生了些什么事情么?你有没想过使用一个合适的Beat去读取Docker的指标然后把这些信息都存放到ElasticSearch?那么Dockbeat这个方案可能挺适合你的。
为了能使得资源被最大化的利用,我们会把应用部署到基于Docker的大数据基础设施里面。到了2015年,我们第一次使用ELK去监控我们整个环境,包括主机、网络、用户等等。可惜的是我们却没有特别好的办法去监控Docker容器,直到Beats项目发布之后
Beats允许我们构造一个非常轻量级的数据传输客户端,然后能够很容易的把数据传输到ElasticSearch,然后通过Kibana进行可视化分析。然后,我们就想,要不创建一个我们自己的Beat来采集Docker的信息吧
从Docker1.5开始,Docker提供了一些新的API可以帮助我们采集Docker的指标信息。这个API能够实时的收集CPU、内存、网络、磁盘IO等性能指标。所以我们就有办法基于Beats和Docker新提供的API创建出我们自己的Beat:Dockbeat了
DockBeat是如何运作的
Dockbeat是用于监控Docker的,它从Docker暴露出来的API进行指标的收集,然后把他们送到LogStash或者直接送到ES。由于它非常轻量,所以对服务器的性能影响非常小,收集完后就能在Kibana上面进行可视化分析了。DockBeat提供了五种不同类型的信息收集功能:
- Container:收集容器自己的属性
- CPU:收集容器使用的CPU指标
- Net:容器使用的网络指标
- Memory:容器使用的内存指标
- Blkio:容器的IO访问指标
如何使用Dockbeat
和其他Beat一样,把配置文件配好,直接启动就行,Beat这点倒是挺不错的
延伸
DockBeat在收集指标这个没什么特别的,反正Docker给了API调用就是了,但是对于它究竟怎么获取的日志,少年我还是比较感兴趣的。毕竟Docker自带的logdriver实在。。。太难用了(1.08),性能不好,指定文件也麻烦,多行日志什么的居然都没的配置。然后看了半天之后。。。那个log指的是收集dockbeat自己的错误日志。。那就是,并没有什么用=。=