linux系统在企业中的应用程度已经非常广泛,人们听到过太多关于Docker和Kubernetes的消息,以至于忘记了监控和日志记录也是同样重要的任务。Docker持续发展,随之而来的是围绕它构建的服务生态系统的成长。虽然部署系统主要涉及在系统内运行单个应用程序或服务,但随着部署规模越来越大,不仅仅是在操作系统或应用程序级别,了解环境状态和运行状况也变得越来越重要。
监控和测试工具分为实时数据库、数据采集工具、可视化工具、意见反馈工具、日志记录器等等。在过去的几年里,开源产品和商业监控应用程序发生了爆炸式增长,下面是其中10个最受欢迎的开源云监控工具。
Prometheus
Prometheus是一个开源云监控解决方案,它可以处理时间序列监控等问题。它是CNCF支持的9个项目之一,也是继Kubernetes之后由CNCF主办的第二个项目。因为谷歌、CoreOS、RedHat、IBM等厂商的支持,使得Prometheus成为监控云应用程序的首选。Prometheus最初是由音乐网站SoundCloud开发的,现在已经成为Docker生态系统中不可或缺的方案CoreOS团队也在积极使用Prometheus来改进Kubernetes的性能。
Prometheus已经发展成为一种先进的系统警报和监视工具包,能够监视包括系统、Hadoop集群、语言运行,以及Python、Go等应用程序堆栈。很多人将它与Graphite(见下文)进行比较。简而言之,Prometheus是一个开源监控系统、时间序列数据库和实现代码的框架。 但是Prometheus不会生成指标,企业必须让它能够通过http以一种能够理解的语言使指标可用。
Graphite
Graphite是一种流行的开源工具,可以构建基于web的用于监视和分析的仪表板。它最初是由Orbitz的Chris Davis在十多年前创建和设计,用于监视和绘制计算机系统的性能。目前被许多大型企业如GitHub、Salesforce和Reddit等用于企业系统。虽然Graphite不能收集指标或与指标收集器捆绑在一起,但要找到一个通用指标收集器来将指标提供给Graphite并不难。Graphite由三部分组成:监听时间序列数据的Carbon,简单数据库Whisper(类似于RRDtool)以及名为Graphite-web的webApp,它可根据需要呈现图表。Graphite在企业中仍然非常流行,其中一个原因可能是自动化水平较高,Graphite中所有新数据点都在数据库中自动创建。
由于围绕生态系统开发了太多工具,开源工具的目前状态并不明朗。因为像Graphite这样的工具既可以独立运行,也可以与其他工具集成。
应用监控工具
Riemann
您可以使用Graphite webapp来绘制图表,但是如果您想使用另一个工具呢?尽管Carbon会监听指标并将其写入存储数据库,但它确实在规模方面有短板,许多用户喜欢用Riemann代替它。 然而,Riemann并不是一个度量收集器,而是一个流处理器。 Riemann用于聚合和处理事件流,同时还添加了警报功能。作为流处理系统,它可用于将事件提供给Prometheus数据库。 Riemann在Clojure开发人员中特别受欢迎,因为它的配置文件实际上是可以高度定制和构建的Clojure代码。 Riemann主要通过从事件流(如度量标准、日志、事件、主机和服务)收集数据,然后根据需要存储、图表或警报来工作。
Elasticsearch
Elasticsearch是ELK堆栈的一部分,它还具有Kibana、Beats和Logstash功能。虽然ELK堆栈被设计成一个集成的解决方案,但是Elasticsearch经常被用作支持工具,并且其补充功能非常强大。Elasticsearch是能够通过广泛而复杂的API访问的搜索引擎,该API支持快速搜索,以支持数据发现应用程序。它几乎兼容所有数据,并与其他查询数据库的工具广泛集成。
Kibana
Kibana是一个分析和可视化平台,它建立在Elasticsearch的基础上,让人可以直观地浏览弹性堆栈。由于Kibana只是堆栈的可视化部分,所以它经常被替换为Grafana、Graphite或其他可视化工具。
Logstash
Logstash是另一个与Riemann类似的流处理系统,可以从日志、指标、web应用程序、数据存储和各种AWS服务中摄取流数据。Logstash还有一个输出插件,企业可以通过它向Riemann发送特定的事件,比如可警报的事件或需要Riemann操作的事件。同时它也是受欢迎的独立工具,经常与其他工具一起使用。
将这些工具结合起来使用看起来就像是晚间肥皂剧一样复杂,表面上看他们好像是其他工具的替代品,但实际上这些工具都是交叉兼容的,可以协作处理很多问题。
Grafana
Grafana是一个开源的、功能丰富的度量仪表板和图形编辑器,用于Graphite、ElasticSearch、OpenTSDB、Prometheus和流数据库。Grafana允许用户轻松创建和编辑仪表板,同时允许查询和可视化指标,无论数据存储在哪里。Grafana同时支持高质量的交互式和可视化图表,这使它变得非常受欢迎。
Grafana
Kafka
Kafka是另一个有趣的流处理系统,它的流是无限制的、不断更新的数据集。虽然它最初是由LinkedIn开发来作为一个可扩展的公共子消息传递系统,但是现在它已经发展成为实时数据管道、分布式和复制日志分析器以及统一的数据集成堆栈。Kafka通常安装在每个需要在其他地方生成或转发数据的主机上,这些主机的集合形成一个Kafka集群。
FluentD
FluentD这是CNCF主持的另一个项目,是用C语言编写的。FluentD是一个开源的解决方案,旨在统一数据收集和使用。它声称“快速启动”菜单可以使用户实时拥有超过125种系统类型的“log-everything”体系结构。该声明得到了CNCF的支持,而FluentD的最大用户目前从50,000多台服务器收集信息。
Weave Scope
Weave Scope的功能包括监视、可视化、管理和故障排除。它还可以自动创建应用程序的“地图”,而不需要任何编码或设置。这允许您在系统级别监视和控制堆栈,并实时查看系统正在执行的操作以及原因。通过零配置和对所有进程、系统和主机的自动检测,Weave Scope可以检查速度框,可以大幅度节省开发人员的时间。
随着越来越多的开源监控工具被开发来用于更具体的工作,没有一款工具的地位是完全稳固的。每一款都有可能被其他更高效、更安全的工具所替代。但就目前而言,以上这些开源监控工具在每个DevOps团队的监控工具中占据着重要位置。