17

云生态下的开源应用程序监控工具

 4 years ago
source link: http://os.51cto.com/art/202004/614270.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Linux容器已经被业界广泛用于开发甚至生产系统。Docker和Kubernetes已经被开发运营人员广泛了解和熟悉。但是容器云架构下系统监控确实一个常常被忽略的问题。尽管容器部署主要涉及在每个容器内运行单个应用程序或服务,但是随着部署规模的扩大,对环境状态和运行状况的可见性变得越来越重要,而不仅仅是在操作系统或应用程序级别,而且在容器级别也是如此。

云生态监控和日志处理领域分为实时数据库,度量标准收集器,可视化工具,轮询器,记录器等。过去几年中,开源产品和商业监控应用程序不断涌现,本文我介绍几个最受欢迎的开源云应用监控工具。

Prometheus

f6FnMfF.jpg!web

Prometheus(普罗米修斯)是领先的开源云监视解决方案,除其他事项外,其数据以时间序列数据库存储,天然适合监控数据库存储。普罗米修斯是CNCF(Cloud Native Computing Foundation,原生云计算基金会)支持的九大项目之一,也是CNCF中,除了也是Kubernetes后第二大托管项目。普罗米修斯获得了包括谷歌,红帽,IBM等公司在内的众多云供应商的支持,是云应用首选监控程序。

普罗米修斯最初源于音乐托管网站SoundCloud,接着成为了Docker生态系统的重要组成部分。CoreOS团队还积极地使用Prometheus来改善Kubernetes的性能。

普罗米修斯已发展成为高级系统监控和告警工具箱,能够监视各种资源,包括容器,Hadoop集群,各语言运行时以及Python、Golang、JVM之类的应用程序堆栈。

bIrE7bm.jpg!web

简而言之,普罗米修斯是一个开源监控系统,时间序列数据库以及用于实现代码的框架。但是,普罗米修斯不能生成度量标准,需要要以HTTP可以解析的语言将度量标准提供给它。关于普罗米修斯参看虫虫之前文章,有详细介绍。

Graphite

3au2Efn.jpg!web

Graphite是一种流行的开源工具,用于构建基于Web的仪表板以进行监视和分析。Graphite最初是由Orbitz的Chris Davis于2006年用python创建的一个辅助项目。用于监控和绘制计算机系统的性能,最终形成了一个基本监控系统,并于2008年以Apache 2.0 license的授权开源发布。目前已经获得了GitHub,Salesforce和Reddit等众多大公司提供和支持。

Graphite由三部分组成:

  • Carbon 时间序列数据的守护程序,用于接收数据;
  • Whisper(类似于RRDtool)数据库和存储;
  • Graphite-web的Web应用程序,可按需呈现图形。

RNfYFfR.jpg!web

Graphite在企业中仍然很流行,原因是由于其自动化程度很高,其中所有新数据点都能在数据库中自动创建。

qqemArE.jpg!web

Graphite本质上是三个相互耦合的独立工具,也可以单独使用并与其他工具集成。

Riemann

B7JVVny.jpg!web

上面我们说了Graphite所有组件都耦合可以单独使用。Riemann就是用于替代Graphite中Carbon守护程序的。尽管Carbon会监听指标并将其写入whisper存储数据库,但由于Carbon是基于Python开发的,容易在性能上遇到瓶颈,这时候我们可以用Riemann代替它。Riemann使用 Clojure 语言实现以 "事件流(event streams)方式处理数据和汇总。但是,Riemann不是度量收集器。

Riemann的工作方式是从事件流(例如指标,日志,事件,主机和服务)收集数据,然后根据需要存储,图形或警报。基于事件流的一栈环境下一旦事件流停止流动,就能马上发现系统故障或网络断开。Riemann还能收集和处理各种形式的事件,事先监控。

Riemann具有超快速度和性能。其官方网站宣传的,Riemann可以在商用 x86 硬件条件下,Riemann 每秒就可以处理数百万次事件,延迟时间却只有亚毫秒,5 毫秒可以完成 99 次。

在云环境条件下,Riemann也可以容器化方式运行和组合:

  • Riemann 服务器进程,由 Clojure 语言编写,是主流处理引擎;
  • Riemann-health 程序,实现Riemann 集群的健康/使用指标报告;
  • Riemann-dash 程序,一个小型 Sinatra 应用,为 Riemann 提供网页控制台界面。
  • 作为云部件,Riemann也可将事件供应给Prometheus系统。

Riemann在Clojure开发人员中特别受欢迎,因为配置文件实际上是一些可执行的Clojure代码,可以高度定制和构建。

Grafana

aENneyJ.jpg!web

Grafana是用Golang 开发的开源的度量分析与可视化套件,主要用于大规模指标数据的可视化展现方式,是网络架构和应用分析中最流行的时序数据展示工具。可以支持对Zabbix,Graphite,ElasticSearch,OpenTSDB,Prometheus和InfluxDB数据汇总、指标仪表板和图形编辑器。

MjmMbeE.jpg!web

Grafana可以让用户轻松创建和编辑仪表板。Grafana非常适合分布式数据存储环境下的数据汇总、查询和可视化,也能对接指标阈值设置和告警。特别适用于实现高质量的交互式可视化和图形。

Weave Scope

Weave Scope是容器生态中,可以自动进行容器APP映射,直观地理解、监视和控制基于容器化微服务的应用程序。Weave Scope涵盖监视,可视化,管理和故障排除。我们可以用Weave Scope可以在容器级别上监视和控制堆栈,并确切地了解容器在做什么以及原因,零配置并自动检测所有进程,容器和主机,该工具可以检查速度框,对于任何开发人员来说都是节省时间的工具。

Weave Scope可以监控kubernetes集群中的一系列资源的状态、资源使用情况、应用拓扑、scale、还可以直接通过浏览器进入容器内部调试等。

buEJF3a.jpg!web

随着越来越多的工具针对更特定的工作流程进行开发,没有一种工具在堆栈中占据永久的位置,并且可以随时替换其中的任何一种以获得更好,更高效或更具自定义性的东西。但是就目前而言,这些开源监视工具在每个DevOps团队的监视工具中占据着至关重要的位置。

ELK Stack

Elasticsearch是ELK栈的一部分,全栈套件还有有Kibana,Beats和Logstash。尽管ELK栈被设计为集成解决方案,其中Elasticsearch通常用作支持工具。Elasticsearch是基于Luncene的java全文搜索引擎,也是最常用最强大的分布式可收缩日志存储和检索集群。Elasticsearch提供了RESTful广泛而且精巧的API供访问,该API可以支持近实时性的搜索用以支持数据发现。它几乎与所有内容兼容,并与其他工具一起广泛用于查询数据库。

qiaUniy.jpg!web

Kibana是一个基于Elasticsearch的分析和可视化平台,可直观地浏览Elasticsearch集群中的数据。由于Kibana只是ELK栈中的可视化部分,因此也可以被替换为Grafana,Graphite或其他可视化工具。

mq2qem2.jpg!web

Logstash是类似于Riemann的另一种流处理系统,可以从日志,指标,Web应用程序,数据存储和各种AWS服务中提取流数据。Logstash还具有一个输出插件,可以通过该插件将特定事件发送到Riemann,例如可警报的事件或需要Riemann采取措施的事件。

EVrMN3B.jpg!web

ELK栈已经被广泛地应用于运维实时日志处理架构中,通常用于日志系统的存储、处理和分析汇总。但是由于其实时性质,在云生态中,可以用于云集群的监控和故障排查分析。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK