开源的DevOps开发工具箱

jopen 10年前

  DevOps 是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。在 DevOps 的整个流程中,使用一些开源工具可以促进开发与运维之间的沟通,有利于项目的管理,甚至可以达到事半功倍的效果。

  本文作者 Richard Kraaijenhagen 是 Owlin 创始人,全栈工程师,数据科学家。他收集了 DevOps 开发可能用到的所有工具,并且把它们按照职责进行分类,本文摘取了部分工具分享给大家,这些工具也可以用于日常软件方面的开发,所以,大家直接 Mark 吧!


  包&产品管理工具

  • Chocolatey:Chocolatey 是 Windows 下一款开源的命令行包管理软件 ,简单说这就是 Windows 的 apt-get;
  • FPM:全称是 Effing package management,该死的软件包管理器,极大的缓解了多个平台构建软件包(deb,rpm,等)的痛苦;
  • Herd:是一个基于 推ter Murder 的文件分布系统;
  • Vagrant Cachier:Vagrant 的一个插件,用于缓存包方面的管理;
  • WiX Toolset:提供一组最强大的工具集来帮助你创建 Windows 安装包。该工具集从 XML 源代码构建你的 Windows 安装程序包,可以无缝集成到构建过程;
  • Boxstarter:利用 Chocolatey 包管理工具来自动化安装软件和创建可重复、脚本化的 Windows 环境;
  • Elita:Elita 是一个利用 git 和 salt 进行持续部署(部署作为服务)和 API-driven 基础设施的引擎/框架;
  • Fig:主要用来跟 Docker 一起来实现的快速隔离的开发环境;
  • Pulp:Pulp 是一个用来管理软件库以及相关内容的平台;
  • Veewee:Veewee 是一个开源工具,用来创建和配置轻量级、可再生、便捷式虚拟机环境。

日志&监控

  • AmonOne:现代化的自托管服务器监控工具;
  • Anthracite:一个事件/日志改变/管理应用程序;
  • collectd3:是一个可视化的 collectd 系统性能统计工具;
  • collectd:是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制;
  • Diamond:是一个基于 Python 的守护程序,主要用来收集系统指标,并且把它们发布到 Graphite(或其它)工具中;
  • Errbit:是一个用于收集和管理程序错误的开源工具;
  • Sensu:一个开源的监控框架;
  • Logstash:是一个应用程序日志、事件的传输、处理、管理和搜索的平台。你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计;
  • log.io:一个实时的开源日志监控工具;
  • FnordMetric:是一个基于 redis/ruby 的实时事件跟踪应用,是个收集和可视化时间序列数据的框架,用户可以在几分钟内创建漂亮的实时分析仪表盘;
  • Logster:是一个工具,读取日志文件然后创建 Graphite 或 Ganglia 可用的指标数据。比如你可能使用 logster 来图形化在你的 Web Server 日志中的 HTTP 响应发生数量;
  • Kibana:是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作;
  • Monit:是一款功能非常丰富的进程、文件、目录和设备的监测软件,用于 Unix 平台。 它可以自动修复那些已经停止运作的程序,适合处理那些由于多种原因导致的软件错误;
  • Metrics:这并不是 Java 库,而是基于 Go 的一个轻量级的检测器;
  • Graphite:是一个用于采集网站实时信息并进行统计的开源项目,可用于采集多种网站服务运行状态信息;
  • Ganglia:Ganglia 是一个跨平台可扩展的、高性能计算系统下的分布式监控系统,如集群和网格;
  • Server Density:一个跨平台的监控系统;
  • Folsom:Folsom 是一款受 Coda Hale's metrics 启发的、基于 Erlang 的度量系统;
  • CMB (Cloud Message Bus):是一个高可用、横向扩展的队列和通知服务,兼容 AWS SQS 和 SNS;
  • Glances:是一款用于 Linux、BSD 的开源命令行系统监视工具,它使用 Python 语言开发,能够监视 CPU、负载、内存、磁盘I/O、网络流量、文件系统、系统温度等信息。
  • Uptime:使用 Node.js、MongoDB 和 推ter Bootstrap 开发的远程监控系统;
  • Icinga:Nagios 的扩展版本;
  • Packetbeat: 是开源应用监控和包跟踪系统;
  • Zipkin:是 推ter 的一个开源项目,允许开发者收集 推ter 各个服务上的监控数据,并提供查询接口;
  • Dead Man’s Snitch:是一款监控 Heroku Scheduler、计划的监视工具;
  • Statsd:是一个 Node.js 的 daemon 程序,简单,轻巧。使用的 UDP 协议,可以和 Graphite 图片渲染应用结合;
  • Riemann:一个网络监控系统;
  • Puppet Dashboard:Puppet Dashboard 是一个 Web 接口,为 Puppet 提供节点分类和报告功能,是一个开源的配置管理工具;
  • jmxtrans:jmxtrans 是一款非常强大的工具,使用它可以轻易生成基于 json 的配置文章,然后再以你想要的格式输出;
  • Scales:跟踪服务器状态和统计指标,使你全面掌握服务器状态,还可以发送指标到 Graphite 来图像呈现或者向文件写入崩溃信息;
  • Zabbix:是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案;
  • Graylog 2:Graylog2 是一个用来将系统日志 syslog 保存到 MongoDB 中的工具。

  进程管理

  • Bouncy:可以作为 HTTP 路由主机;
  • Supervisor:是一个客户端服务器系统,允许用户监控和控制类 Unix 操作系统上的进程数;
  • God:由 Ruby 实现的进程监控框架。

  服务发现 

  • Consul:简化了分布式环境中的服务的注册和发现流程,通过 HTTP 或者 DNS 接口发现。支持外部 SaaS 提供者等;
  • etcd:是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现;
  • Apache ZooKeeper:是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题;
  • Weave:创建一个虚拟网络并连接到部署在多个主机上的 Docker 容器。

  持续集成和交付

  • Buildbot:是一个系统的自动化编译/测试周期最需要的软件,以验证代码的变化。通过自动重建和测试每次发生了变化的东西,在建设迅速查明之前,减少不必要的失败;
  • Cabot:是一个开源,自我托管的监控工具;
  • Jenkins:是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作;
  • Hubot:基于脚本具有很高的灵活性,任何人都可以编写自己的脚本来扩展基本功能;
  • Hudson:是一个可扩展的持续集成引擎,主要用于:持续、自动地构建/测试软件项目、监控一些定时执行的任务;
  • CruiseControl.rb:是一个持续集成服务器,它可以让团队里的每个人随时了解项目的健康状况和进度;
  • OpsBot:是一个开源的、可插入的改善通信的机器人。

  希望这些工具能够给开发者带来实实在在的帮助,想要查看更多工具,大家可以 访问原文,原文中的工具列表会持续更新。

  最后,再跟大家分享一个 DevOps BookMarks,这里面涉及了 DevOps 方方面面的工具和内容,有兴趣的同学可以前去学习。

  本文来自: ZEEF、编译:CSDN