DockerCon 2016 深度解读:Docker监控厂商之Sysdig

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Docker 技术社区不断升温,稳定性是成熟应用的首要考虑因素,国内外围绕Docker监控涌现出了很多优秀的厂商,为整个Docker生态提供了坚实可靠的工具与服务。我们会以一个系列的文章来介绍这些Docker监控厂商,分析对比它们在监控方面的侧重点,让开发者能够根据自己的需求做出合适的选择。

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 命令,会默认展示出进程监控信息,如下图所示:

csysdig0

直接按下F2 按键,可以看到各种菜单项,其中一个就是容器相关的监控面板。

csysdig1

选择进入容器视图,查看当前运行在VM上面的各个容器的各种监控信息,如下图:

csysdig2

总体而言,直接使用 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容器,如下图所示:

command1

还有更多的命令可以帮助开发者更便捷地监控系统各项指标与容器各项指标,大家可以参考文档 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 命令执行结果如图所示:

command2

command3

看到上图的数据上报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 应用,填写好各种信息以后,选择 【使用编排模板创建】:
acs1

粘贴上面为大家提供的compose模板,
acs2

点击创建应用时,系统会分析模板中的变量,弹框提示用户输入变量值,这样模板可以重复使用并且不需要担心模板中的敏感信息随着模板的传递而泄露。填写模板中的 SYSDIG_ACCESS_KEY 变量的值,该值可以在注册Sysdig Cloud 用户以后拿到,点击确定:

acs3

完成创建应用。
acs4

注意,以上我们提供的compose模板中,有一个label :aliyun.global:'true',意味着使用这个模板部署的应用会在VM集群内每一个ECS实例上部署一个该应用,这样就利用阿里云容器服务的应用创建功能实现了集群内的Sysdig agent的批量快速部署。

当完成以上操作,登录监控控制台以后,从产品直观映像可以了解到,整个Sysdig Cloud 依赖安装在目标环境的 监控客户端容器,整个客户端监控容器收集系统层面的监控指标,同时也分析了部署在容器内的各种应用。Sysdig Cloud做的比较出众的点,就是提供了大量内置的监控模板,不论是常见的应用,还是容器监控本身从各个维度给开发者提供了快速监控容器集群的可能性。同时还提供了多账号、事件、告警等功能,其中告警部分默认内置了一些禁用状态的告警规则,方面用户使用。而且Sysdig Cloud 和 AWS 的 Amazon CloudWatch 做了深度集成,也是非常吸引开发者的一个点。

我们进入Overview 页面以后,可以看到概览的监控数据,会有各维度的TOP5对比监控图表,如下图所示:

console1

在 Explore页面,我们可以看到右侧以用户自定义的容器label作为筛选展示维度列出的多个信息,这里我们使用阿里云容器服务的serviceId作为展示维度,列出服务内的容器监控信息。依据label进行聚合给用户提供了极大的使用上的灵活性。

console2

告警页面:

console3

除了以上其他各种功能以外,Dashboard 部分有很多内置的非常让人惊艳的模板,如下图,缩略图:

console4

将图放大以后,会展示出容器内部各个应用之间的关系图,并且根据指标展示出监控指标的值,我们这里展示了网络流量,下面第二幅图展示了CPU。

console5

console6

这些可视化的分析图可以通过新建 一个 Dashboard 然后选择已有的模板即可完成,如下图:

console7

总结

在了解完Sysdig 提供的Docker监控产品以后,我们会发现它不但提供了单兵作战的利器——Sysdig 命令行工具集,还给出了业内相对而言比较完善的监控解决方案 Sysdig Cloud,而且使用非常方便,甚至与 AWS的 Amazon CloudWatch 有极为方便的集成,所以总体而言开发者使用 Sysdig Cloud 是可以很快速地完成在生产环境监控容器服务的需求。

后续我们还会在该系列文章中陆续介绍其他几家Docker监控服务厂商的产品,最终会有一个各厂家监控产品的横向对比和分析,敬请期待。

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
2月前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
350 122
基于docker搭建监控系统&日志收集
|
6月前
|
Prometheus 监控 Cloud Native
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
除了Prometheus,还有哪些工具可以监控Docker Swarm集群的资源使用情况?
534 79
|
7月前
|
监控 Java Go
无感改造,完美监控:Docker 多阶段构建 Go 应用无侵入观测
本文将介绍一种基于 Docker 多阶段构建的无侵入 Golang 应用观测方法,通过此方法用户无需对 Golang 应用源代码或者编译指令做任何改造,即可零成本为 Golang 应用注入可观测能力。
402 85
|
4月前
|
Prometheus 监控 Cloud Native
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务实现步骤
521 0
|
10月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
162 23
|
10月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
247 25
|
10月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
285 22
下一篇
oss云网关配置