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监控服务厂商的产品,最终会有一个各厂家监控产品的横向对比和分析,敬请期待。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
3月前
|
监控 网络协议 Linux
使用Docker部署监控服务Uptime Kuma并实现无公网ip远程访问本地服务
使用Docker部署监控服务Uptime Kuma并实现无公网ip远程访问本地服务
152 0
|
9月前
|
Prometheus 监控 Cloud Native
Docker的监控-Prometheus(普罗米修斯)
Docker的监控-Prometheus(普罗米修斯)
646 0
|
7月前
|
Prometheus 监控 Cloud Native
【云原生】Docker容器命令监控+Prometheus监控平台
【云原生】Docker容器命令监控+Prometheus监控平台
225 0
【云原生】Docker容器命令监控+Prometheus监控平台
|
5月前
|
监控 Ubuntu Docker
Sentry 监控 Docker 方式部署
Sentry 监控 Docker 方式部署
146 0
|
1天前
|
Prometheus 监控 Cloud Native
构建高效稳定的Docker容器监控体系
【5月更文挑战第13天】在微服务架构和容器化部署日益普及的背景下,对Docker容器的监控变得尤为重要。本文将探讨一种构建高效稳定Docker容器监控体系的方法,通过集成Prometheus和cAdvisor工具,实现对容器资源使用情况、性能指标和运行状态的实时监控。同时,结合Grafana进行数据可视化,为运维人员提供直观的分析界面,以便及时发现和解决潜在问题,保障系统的高可用性和稳定性。
15 6
|
7天前
|
存储 运维 监控
【Docker专栏】Docker日志管理与监控的最佳方法
【5月更文挑战第7天】本文探讨了Docker容器的日志管理与监控,强调其在运维中的重要性。Docker默认使用`json-file`日志驱动,可通过`docker logs`命令查看。建议选择合适日志驱动,配置日志选项,并集成ELK Stack等工具进行高级分析。实时监控、设置警报、分析数据和审计日志是实践关键。最佳实践包括日志数据与容器数据分离、使用日志代理、保护敏感信息及遵守法规。关注新技术以提升系统稳定性和安全性。
【Docker专栏】Docker日志管理与监控的最佳方法
|
15天前
|
运维 Prometheus 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第29天】在微服务架构日益普及的当下,Docker作为轻量级容器的代表,被广泛应用于服务部署与管理。然而,随之而来的是复杂化的服务监控问题。本文旨在探讨如何构建一个高效且稳定的Docker容器监控体系,确保服务的高可用性。我们将从监控工具的选择、关键监控指标的确定,以及告警机制的设计等方面进行详细阐述,并提供一系列优化实践,以期为运维人员提供参考和指导。
|
15天前
|
Prometheus 监控 Cloud Native
构建高效的Docker容器监控体系
【4月更文挑战第28天】 在微服务架构和容器化部署日益普及的今天,对容器进行有效的性能监控成为确保系统稳定性的关键。本文将深入探讨如何构建一个高效的Docker容器监控体系,覆盖从监控指标的选择、数据采集、存储到可视化展示的全流程。我们将分析现有监控工具的优势与局限,并提出一种综合使用Prometheus、Grafana和自定义监控脚本的解决方案,旨在为运维人员提供实时、准确的容器监控数据,帮助快速定位并解决潜在问题。
17 1
|
25天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
|
1月前
|
运维 监控 安全
构建高效稳定的Docker容器监控体系
【4月更文挑战第3天】 在微服务架构和云计算的大潮中,Docker容器技术以其轻量级、快速部署和易于管理的优势成为了众多企业的选择。然而,随着容器化应用的增多,如何保障这些运行在容器中的应用稳定高效地工作,成为运维人员面临的新挑战。本文将探讨构建一个高效且稳定的Docker容器监控体系的方法和实践,以期帮助企业更好地管理其容器化环境。
16 1