十大开源应用程序监控工具
Linux容器基本覆盖接管了企业,并且我们听到了很多关于Docker和Kubernetes的信息,以至于我们忘记了同样重要的监控和日志收集。Docker继续增长,随之而来的是围绕它构建的服务生态系统的增长。现在,尽管部署容器主要涉及在每个容器内部运行单个应用程序或服务,但随着部署变得越来越大,了解环境的状态和健康状况(不仅仅是操作系统或应用程序级别)变得越来越重要,但在容器层面也是如此。
监控和日志收集工具的领域分为(real-time databases)实时数据库,(metric gatherers)指标采集,(visualizers)可视化器,(pollers)轮询器,(loggers)记录器等。在过去的几年里,开源产品和商业监控应用的爆炸式增长,以下是其中最流行的10个。
No.1 Prometheus
Prometheus是一个领先的开源云监控解决方案,可处理时间序列监控等等。它也是CNCF支持的九个项目之一,也是继Kubernetes之后由CNCF主办的第二个项目。这使其成为监控云应用程序的首选,纯粹是因为包括Google,CoreOS,RedHat,IBM等公司在内的多厂商支持。Prometheus最初由音乐托管网站SoundCloud开发,从此成为Docker生态系统不可或缺的艺术。普罗米修斯还积极被CoreOS团队用来改善Kubernetes的性能。
Prometheus已经开发出了一个高级的系统报警和监控工具包,该工具包能够监控范围广泛的资源,包括容器、Hadoop集群、语言运行时和应用程序栈(如Python或Go)。很多人把它和Graphite做比较(见下文),尽管它增加了很多功能,包括报警。总之,Prometheus是一个开源的监控系统,时间序列数据库,以及一个实现你代码的框架。然而,Prometheus并不生成指标,您必须让指标通过http以一种它能够理解的语言提供给它。
No.2 Graphite
Graphite是一种流行的开源工具,用于构建用于监控和分析的基于Web的仪表板。虽然它已经存在了一段时间,并且最初由Orbitz的Chris Davis在十多年前制造和设计,用于监控和绘制计算机系统的性能,但它仍然用于生产,由许多大公司如GitHub,Salesforce和Reddit。虽然Graphite不会收集指标或与指标收集器捆绑在一起,但要找到一个通用指标收集器来将您的指标提供给Graphite并不难。Graphite由三部分组成:Carbon,它是一个监听时间序列数据的守护进程,一个名为Whisper的简单数据库(类似于RRDtool)以及一个名为Graphite-web的Web应用程序,可根据需要呈现图形。Graphite在企业中仍然非常流行,其中一个原因可能是自动化水平,其中所有新数据点都在数据库中自动创建。
由于在生态系统周围开发生态系统,企业工具的现代格局可能会特别令人困惑。更为复杂的是像Graphite这样的工具,它们基本上是三个独立的工具,它们可以单独使用,也可以与其他工具集成在一起。以下是当今云原生景观的图像,您可以在右侧的框中看到监视和分析。
No.3 Riemann
您可以使用Graphite webapp绘制图像,但如果您想使用另一个守护进程而不是Carbon,该怎么办?这给我们带来了Riemann。虽然Carbon倾听指标并将它们写入存储数据库,但它在规模上遇到了一些麻烦,很多用户喜欢用Riemann替换它。然而,黎曼不是一个公制收集器,而是一个流处理器。Riemann用于汇总和处理事件流,同时为流程添加一些警报功能。作为一个流处理系统,它可以用来向Prometheus数据库提供事件。它在Clojure开发人员中尤其受欢迎,因为配置文件实际上是一些可执行的Clojure代码,可以高度定制和构建。Riemann通过从指标,日志,事件,主机和服务等事件流收集数据,然后根据需要收集商店,图表或警报。
No.4 Elasticsearch
Elasticsearch是ELK Stack的一部分,该功能还包含Kibana,Beats和Logstash。尽管ELK堆栈被设计为一个集成解决方案,但Elasticsearch通常用作支持工具,并且是堆栈中的一个强大的补充。Elasticsearch是一个搜索引擎,可通过广泛和精心设计的API访问,支持极其快速的搜索以支持您的数据发现应用程序。它几乎与所有内容兼容,并与其他工具一起广泛使用以查询数据库。
No.5 Kibana
Kibana是一个基于Elasticsearch的分析和可视化平台,可让您以可视方式浏览弹性堆栈。由于Kibana只是堆栈的可视化部分,因此它经常会换出Grafana,Graphite或其他可视化工具。
No.6 Logstash
Logstash是Riemann的另一个流处理系统,可以从日志,指标,Web应用程序,数据存储和各种AWS服务中获取流数据。Logstash还有一个输出插件,您可以通过它向Riemann发送特定事件,例如可警报的事件或需要Riemann采取行动的事件。再一次,Riemann是一个非常受欢迎的独立工具,经常与其他工具一起使用。
了解他们如何一起工作就像看一部非常复杂的肥皂剧。很多这些工具看起来像表面上的其他工具一样直接替换,但如果深入挖掘,它们都是交叉兼容的,可以一起使用以实现更具体的目的。
No.7 Grafana
Grafana是Graphite,ElasticSearch,OpenTSDB,Prometheus和InfluxDB的开源,功能丰富的指标仪表板和图形编辑器。Grafana允许用户轻松创建和编辑仪表板。Grafana允许您查询,可视化,提醒和了解您的指标,无论它们存储在何处。它特别适用于实现高质量的交互式可视化和图形。
No.8 Kafka
Kafka是另一个有趣的流处理系统,其中一个流是一个无限的,不断更新的数据集。虽然它最初由LinkedIn开发为可扩展的pub-sub消息传递系统,但它已经发展成为实时数据管道,分布式和复制日志分析器以及统一数据集成堆栈。Kafka通常安装在需要在其他地方生成或转发数据的每台主机上,这些主机的集合构成了Kafka集群。
No.9 FluentD
在这里,我们有另一个由CNCF主办的项目。FluentD是一款旨在统一数据收集和消费的开源日志记录解决方案。快速启动菜单声称可立即使用户拥有超过125种系统类型的log-everything
架构。该声明显然得到了CNCF的支持,而FluentD的最大用户目前收集了超过50,000台服务器的日志。它的受欢迎程度主要是由于它主要是用C语言编写的,而且它将JSON等日志视为流行的机器可读格式。
No.10 Weave Scope
Weave Scope涵盖监控,可视化,管理和故障排除。它还自动创建您的应用程序的地图,无需任何编码或设置。这使您可以在容器级别监视和控制堆栈,并实际找出容器正在执行的操作以及原因。通过零配置和所有进程,容器和主机的自动检测,此工具可以检查速度框,并且对于任何开发人员来说都是明确的节省时间。
随着越来越多的工具开发用于更具体的工作流程,没有工具在堆栈中具有永久性位置,并且任何工具都可以在任何给定时间换出更好,更高效或更多定制的东西。但就目前而言,这些开源监控工具在每个DevOps团队的监控工具中都占有重要位置。
留言看看你用过哪些开源工具?
英文原文: http://techgenix.com/open-source-application-monitoring-tools/
- Android安全几道入门题目
- 挖洞经验 | 看我如何通过子域名接管绕过Uber单点登录认证机制
- Spark源码系列(二)RDD详解
- Spark源码系列(三)作业运行过程
- Spark源码系列(四)图解作业生命周期
- Spark源码系列(五)分布式缓存
- 看我如何基于Python;Facepp打造智能监控系统
- Spark源码系列(六)Shuffle的过程解析
- Spark源码系列(九)Spark SQL初体验之解析过程详解
- Spark源码系列(七)Spark on yarn具体实现
- 我们要在任何可能的地方测试XSS漏洞
- Angr:一个具有动态符号执行和静态分析的二进制分析工具
- Spark编程指南
- Spark Streaming编程指南
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- java入门015~springboot2整合mybatis,轻松实现mysql数据的增删改查
- 详解Android activity与fragment之间的通信交互
- Android App内监听截图加二维码功能代码
- 微信小程序登录与注册验证码倒计时的效果实现
- Android仿微信朋友圈全文、收起功能的实例代码
- TextView实现图文混合编排的方法
- 小程序云函数调用http或https请求外部数据
- 详解Android中图片的三级缓存及实例
- 借助云开发实现小程序的登陆注册功能
- TextView显示文本控件两种方法 TextView显示link的方法
- Java入门005~Springboot2.2.4引入freemarker模板
- TabLayout使用方法详解
- Java入门006~springboot+freemarker+bootstrap快速实现管理后台
- Java入门007~springboot+freemarker+bootstrap快速实现分页功能
- ToolBar使用方法详解