Docker监控厂商系列介绍
Docker 技术社区与其他诸如微服务、DevOps等等在过去的一年里碰撞出了炫目的火花,但是系统的稳定性永远都是成熟应用的首要考虑因素,因此,国内外围绕Docker监控涌现出了很多优秀的厂商,为整个Docker生态提供了坚实可靠的工具与服务。我们会以一个系列的文章来介绍这些Docker监控厂商,分析对比各个厂商在监控方面的侧重点与优势,让更多的开发者能够根据自己的业务需求做出合适的选择。
今天介绍的产品是 Sysdig
Sysdig 介绍
Sysdig is open source, system-level exploration: capture system state and activity from a running Linux instance, then save, filter and analyze.
Sysdig is a simple tool for deep system visibility, with native support for containers.
Sysdig 本身是一个比较好用的 开源监控命令行工具集,不仅提供了系统层级的监控命令行功能,还原生支持docker的监控,所以开发者或者运维人员可以直接在宿主机上 安装 Sysdig 来做监控。Sysdig提供了 Csysdig,一个在命令行环境中可交互的、易用的、可视化监控信息查看界面。
Sysdig Command Line Interface —— 灵巧的瑞士军刀
命令行工具永远是程序员与运维人员最便捷的、必不可少的辅助工具,在Linux操作系统中安装Sysdig 以后可以直接执行 csysdig
命令,会默认展示出进程监控信息,如下图所示:
直接按下F2 按键,可以看到各种菜单项,其中一个就是容器相关的监控面板。
选择进入容器视图,查看当前运行在VM上面的各个容器的各种监控信息,如下图:
总体而言,直接使用 Csysdig 比较方便,交互非常友好而且支持各种搜索和分析。同时Sysdig也提供了各种命令,正如Sysdig官网介绍一样,可以把 Sysdig 视作 “要你命3000” 的杀手级监控工具。
Think of sysdig as strace + tcpdump + htop + iftop + lsof + awesome sauce
Sysdig的命令行工具涵盖了以下几个方面:
- Networking
- Containers
- Application
- Disk I/O
- Processes and CPU usage
- Performance and Errors
- Security
我们用 容器 方面举例,可以使用以下命令查看某个容器内进程所占用的CPU百分比:
sudo sysdig -pc -c topprocs_cpu container.name=shenzhentest_redis_1
我们这里使用命令查看了redis容器,如下图所示:
还有更多的命令可以帮助开发者更便捷地监控系统各项指标与容器各项指标,大家可以参考文档 Sysdig Quick Reference Guide 做更详细的了解。
Sysdig Cloud, Container-Native Monitoring —— 正规军作战必要的解决方案
如果仅仅是提供一些命令行工具来服务于广大的开发者,“瑞士军刀”功能再多,都无法满足生产环境的大规模监控与调度。好在Sysdig 提供了 Sysdig Cloud, 一个致力于为基于容器的信息化基础设施提供监控、报警、分析功能的解决方案。
Sysdig Cloud is the first and only monitoring, alerting, and troubleshooting solution designed from the ground up to provide unprecedented visibility into containerized infrastructures
Sysdig Cloud 开放免费试用,所以有兴趣的开发者可以在正式使用之前先免费体验一下。
整个注册过程都比较简单,有非常明确的用户引导来协助用户完成注册、下载监控客户端、上报监控数据的过程,所以我们这里略过这部分,直接介绍产品本身。
在注册完成后,按照提示信息在自己的宿主机上运行以下命令来安装 Sysdig的监控容器客户端:
docker run --name sysdig-agent --privileged --net host --pid host -e ACCESS_KEY=your-key-auto-replaced-here -e TAGS=exampleTag:exampleTagValue -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro sysdig/agent
注意:上面的docker run 命令中,ACCESS_KEY部分在注册成功以后Sysdig 提供的操作引导中自动替换为注册者自己的ACCESS_KEY,我们这里做演示,所以展示的是占位符文字;同时,Sysdig 的agent 允许开发者自己定义tag,这里可以根据实际需求替换为有具体业务含义的标签对,方便在Sysdig Cloud 的控制台中做区分筛选查看。
如果本机是第一次安装的话,会先下载镜像到本地。docker run 命令执行结果如图所示:
看到上图的数据上报log以后就可以去 Sysdig Cloud的控制台查看各种监控数据了。
对于我们 阿里云容器服务的用户来说,采用这种登陆到服务器上面依次执行docker run的命令就略显笨拙了,因为使用阿里云容器服务的客户大多数都维护多个集群,每个集群内有多台ECS的实例,显然不能使用该方式做人肉运维。
为了方便阿里云容器服务客户无痛使用Sysdig,这里我们为客户提供了一个写好的compose模板,如下所示:
agent:
image: 'sysdig/agent:latest'
privileged: true
net: host
pid: host
volumes:
- '/var/run/docker.sock:/host/var/run/docker.sock'
- '/dev:/host/dev'
- '/proc/:/host/proc/:ro'
- '/boot:/host/boot:ro'
- '/lib/modules:/host/lib/modules:ro'
- '/usr:/host/usr:ro'
environment:
- ACCESS_KEY=${SYSDIG_ACCESS_KEY}
- TAGS=role:aliyuncs
labels:
aliyun.global: 'true'
restart: always
开发者只需要登录容器服务控制台,在对应的集群中创建应用即可,如下图所示:
创建 Sysdig-agent 应用,填写好各种信息以后,选择 【使用编排模板创建】:
粘贴上面为大家提供的compose模板,
点击创建应用时,系统会分析模板中的变量,弹框提示用户输入变量值,这样模板可以重复使用并且不需要担心模板中的敏感信息随着模板的传递而泄露。填写模板中的 SYSDIG_ACCESS_KEY 变量的值,该值可以在注册Sysdig Cloud 用户以后拿到,点击确定:
完成创建应用。
注意,以上我们提供的compose模板中,有一个label :aliyun.global:'true',意味着使用这个模板部署的应用会在VM集群内每一个ECS实例上部署一个该应用,这样就利用阿里云容器服务的应用创建功能实现了集群内的Sysdig agent的批量快速部署。
当完成以上操作,登录监控控制台以后,从产品直观映像可以了解到,整个Sysdig Cloud 依赖安装在目标环境的 监控客户端容器,整个客户端监控容器收集系统层面的监控指标,同时也分析了部署在容器内的各种应用。Sysdig Cloud做的比较出众的点,就是提供了大量内置的监控模板,不论是常见的应用,还是容器监控本身从各个维度给开发者提供了快速监控容器集群的可能性。同时还提供了多账号、事件、告警等功能,其中告警部分默认内置了一些禁用状态的告警规则,方面用户使用。而且Sysdig Cloud 和 AWS 的 Amazon CloudWatch 做了深度集成,也是非常吸引开发者的一个点。
我们进入Overview 页面以后,可以看到概览的监控数据,会有各维度的TOP5对比监控图表,如下图所示:
在 Explore页面,我们可以看到右侧以用户自定义的容器label作为筛选展示维度列出的多个信息,这里我们使用阿里云容器服务的serviceId作为展示维度,列出服务内的容器监控信息。依据label进行聚合给用户提供了极大的使用上的灵活性。
告警页面:
除了以上其他各种功能以外,Dashboard 部分有很多内置的非常让人惊艳的模板,如下图,缩略图:
将图放大以后,会展示出容器内部各个应用之间的关系图,并且根据指标展示出监控指标的值,我们这里展示了网络流量,下面第二幅图展示了CPU。
这些可视化的分析图可以通过新建 一个 Dashboard 然后选择已有的模板即可完成,如下图:
总结
在了解完Sysdig 提供的Docker监控产品以后,我们会发现它不但提供了单兵作战的利器——Sysdig 命令行工具集,还给出了业内相对而言比较完善的监控解决方案 Sysdig Cloud,而且使用非常方便,甚至与 AWS的 Amazon CloudWatch 有极为方便的集成,所以总体而言开发者使用 Sysdig Cloud 是可以很快速地完成在生产环境监控容器服务的需求。
后续我们还会在该系列文章中陆续介绍其他几家Docker监控服务厂商的产品,最终会有一个各厂家监控产品的横向对比和分析,敬请期待。