弹药库

配置管理

  • Ansible – Radically simple configuration-management, application deployment, task-execution, and multi-node orchestration engine.
  • Puppet – Puppet is an open-source configuration management tool.
  • Saltstack: Python 实现的配置管理工具
  • Chef – Ruby 实现的配置管理工具
  • Cobbler – Ansible 的作者又一力作,批量安装、初始化操作系统
  • mgmt – 非常年轻的配置管理工具,go 语言实现,标榜下一代配置管理工具,Redhat 出品。
  • ralph – allegro 搞的一款 CMDB,基于 python

数据库

  • ElasticSearch – 大名鼎鼎的 ELK 中的 E,java 实现。
  • Influxdb – 分布式时间序列数据库,go 实现。
  • Whisper – 元老级的 RRD 数据库,python 实现。
  • CockroachDB – 小强数据库,标榜跨世界的分布式数据库,具有和小强一样的不灭生命力,go 实现。
  • Druid
  • RocksDB
  • LevelDB

收集器 & 数据处理

  • Sentry – 错误日志跟踪,仅收集错误日志。
  • telegraf: Influxdb 出品的收集器
  • Beat: ElasticSearch 的收集器
  • Logstash – ElasticSearch 的数据处理工具
  • CollectD – 系统监控数据收集器,可以将数据发给 Influxdb,StatsD,MQ 等等。 从 Collectd 5.4 开始,包含了 StatsD 的功能,插件文档看这里
  • StatsD – 应用监控数据的接收器
  • Hekad
  • Diamond – python 实现的类似 collectd 的东西

监控可视化

  • Kibana: ElasticSearch 的数据可视化
  • chronograf: Influxdb 出品,时间序列数据收集器,go 语言实现
  • Grafana – 灵感来自 Kibana 的下一代 Dashboard。go 语言实现
  • graphite – 老牌的时间序列数据库,基于Whisper,python 语言实现
  • go-carbon – go 语言重新造 graphite 的轮子,性能提升好几倍。
  • facette
  • Uchiwa: Sensu 的 Dashboard
  • tipboard – allegro 出的一款 dashboard,基于 python

VM 性能测试

  • PerfKitBenchmarker: Google 云出品的场景化虚拟机性能测试系统,包括了大多数能想到的 linux 性能测试工具。

报警

通用监控系统

  • sensu – 比 Nagios 年轻的监控平台,python 实现。标榜 “Monitoring that doesn’t suck.”
  • zabbix – 日本人出的功能很全的监控平台,二次开发比较困难,c 和 php 实现。
  • Shinken
  • Prometheus – 参考 Google Borg 监控系统的下一代监控平台,自带时间序列数据库,go 语言实现
  • Bosun – go 语言实现的时间序列报警工具,官方文档相当少(2016-10-13)。
  • Munin
  • Cabot – 一开始为 graphite 写的报警工具,后来扩展成可以监控 HTTP 和 jenkins。
  • Riemann

进程守护

单机监控

  • netdata:单机实时监控工具,图表非常非常非常非常全。
  • linux-dash
  • Glance
  • Sysdig
  • ntopng – 网络和流量监控工具
  • psdash – A linux system information web dashboard using psutils and flask

持续集成 & 持续发布

服务发现 & 配置中心

集群管理

  • Packer – 镜像制作工具,支持 qemu,docker,java 等。
  • Nomad:hashicorp 出的集群调度器,可以调度 docker,VM 甚至 java 程序。
  • Kubernetes:容器的调度编排工具
  • CloudFoundry: pivotal (VMWare) 出品的 PaaS
  • Terraform:hashicorp 出的基础设施管理工具
  • Mesos:apache基金会下的编排调度工具
  • panamax
  • Shipyard
  • Aurora

服务状态

项目管理&文档管理

数据可视化

  • ECharts: 百度出品的 js 数据可视化库
  • D3:Data-Driven Documents
  • highcharts:
  • Chart.js:轻量级数据可视化 js 库,支持最常见的 5 种图表。

workflow

workflow 系统用于管理批处理任务,比如 ETL,数据导入导出,清洗,转化,每日报表,每周报表等。
主要共有能:定义任务,调度任务,管理任务的依赖关系,提供命令行 和 WebUI 管理和可视化任务等。

为什么需要 workflow 引擎

在此之前 cron 可以搞定所有的定时任务,但是一旦 cron 中任务达到上百个,管理起来就比较困难,我们会遇到这些场景:

  • 需要稳定而健壮的调度器保证定时任务顺利执行
  • 需要写各种各样的脚本处理任务之间的依赖关系,这种关系一般是有向无环图(directed acyclic graphs)
  • 每个脚本都要处理超时和重试逻辑,不同的依赖关系还需要有不同的重试逻辑
  • 每个脚本都要输出日志、管理配置、监控CPU内存磁盘的使用情况
  • 很多脚本可能都要输出报告,比如错误报告和成功报告,发送 email 等
  • 需要一个 WebUI 能看到所有的定时任务的运行情况,毕竟只有看到才有办法优化

对比 airflow 和 Luigi

— gtt 于 2016年11月

Pinball 使用的人特别少,并且没有 WebUI,抛弃。
Luigi 和 Airflow 热度差不多:

Luigi Airflow
Watch 390 334
Star 5797 3893
Fork 1103 956
contributors 263 213
First commit 2011-11-13 2014-10-05

功能和架构上:

  • Luigi 支持 ElasticSearch,Airflow 还不支持。
  • Airflow 内置调度器,Luigi 需要依靠 cron
  • Airflow 支持 Celery 和 Mesos 实现 worker 横向扩展,lugigi仅支持单机。

架构上 Airflow 扩展性更强,似乎考虑的更多, 在当前时间节点上 Airflow 应该是更好的选择。