场景一:页面提示超时了,到底是哪个服务响应慢了呢?
场景二:系统当前的处理能力如何,TPS、QPS 指标是多少呢?
场景三:线上服务部署在多台机器上,你挨个登录机器去查日志,感觉烦不烦?
面对诸如上面的场景,如果你正在纠结,那今天罗列推荐的这些轮子,多少都能解你所惑。
0. 监控天下三分
先帝创业未半而中道崩殂,今监控天下三分。如下图所示,监控的天下被划分为基于 Tracing(调用链)监控、基于Metrics(指标)监控、基于Logging(日志) 的监控。
1. 基于 Tracing 的监控
基于 Tracing 的监控,背后对应的是追踪系统,也有人叫调用链系统,做应用性能监控(APM)这块是必不可少的。
如果你想知道一次服务调用,中间经过了哪些环节?如果你想了解一次服务调用过程中各个环节的耗时?如果... ... 那不妨了解了解下面的这些轮子。
Skywalking,国产的优秀 APM 组件。是一个对 Java 分布式应用的业务运行情况进行追踪、告警和分析的系统。
开源地址:https://github.com/apache/skywalking
Zipkin,是由 Twitter 公司开源的分布式的跟踪系统。主要包括:数据的收集、存储、查找和展现。
开源地址:https://github.com/openzipkin/zipkin
Pinpoint,由韩国人开源的分布式跟踪组件,是一款对 Java 编写的大规模分布式系统的 APM 工具。
开源地址:https://github.com/naver/pinpoint
贴一下效果图,不知能否勾起你心中的火
2. 基于 Metrics 的监控
基于 Metrics 的监控,背后对应的是度量(指标监控)系统。
如果你想知道机器在某段时间内的 CPU 使用率、系统负载;如果你想知道应用在某段时间内的 HTTP 请求访问量;如果你想知道 MySQL 的连接数、QPS;如果... ... 那不妨尽情的了解了解下面的这些轮子。
Prometheus + Grafana,普罗米修斯邂逅格拉法纳就成了监控界的 PGOne,宣称使用领先的开源监控解决方案去增强指标监控功能,不过敲摸试了一下,效果也确实强大。
学习地址:https://github.com/prometheus
Influxdata,定位也是一个强大的实时监控系统。大体流程是:telegraf 收集监控的指标;然后交给 InfluxDB 进行存储;chronograf 负责从 InfluxDB 查询数据展示;kapacitor 负责监控报警。
学习地址:https://github.com/influxdata
Grafana,格拉法纳专业负责展示,提供漂亮的UI。不过她可以跟上面的普罗米修斯 Prometheus、InfluxDB 任性组合搭配,这倒是给我们提供一种扩展的可能性,我们只需要把要监控的指标放进 InfluxDB,再搭上 Grafana,那效果堪称完美!
学习地址:https://github.com/grafana
Skywalking,在上面基于 Tracing 监控的部分已经提到了,看来是能者多劳了,既能做调用链监控,又能基于指标进行监控。
学习地址:https://github.com/apache/skywalking
Elastic,估计很多人都听说过它旗下的 ELK,也就是 ElasticSearch + Logstash + Kibana 的组合。由于后来推出了一系列的专门用于采集数据的 Beats,造就了无限的可能性,当然完成 Metrics 指标采集监控也不在话下。
学习地址:https://www.elastic.co/cn/products/infrastructure-monitoring
肆意贴一张 Grafana 的效果图,看看你是否钟爱这一款?
3. 基于 Logging 的监控
基于 Logging 的监控,说白了也就是日志监控。
我们都知道,在微服务盛行的今天,服务散落部署在各个节点,导致排查定位问题需要连续切换 N 台机器,操作相当繁琐,不知道你有没有同感。如果你也有此同感,不妨了解了解下面的技术轮子。
日志监控的整体设计思路大多为:日志采集、日志存储、日志分析及报警,如果日志量再大点,那就来一个对列(kafka、redis、RabbitMQ等)作为缓冲。
Elastic,在上面基于指标监控的部分已经提到了它,其实由于采集数据的 Beats 下有一款 FileBeat 专门采集日志文件,然后把采集的日志存储到 ElasticSearch,接下来用 Kibana 进行分析展示,这样一套轮子组合让你查询日志不再难(小声的说一下,貌似它也支持 APM 应用性能监控,三分天下而它是交汇的覆盖区域)。
入门地址:https://www.elastic.co/cn/products/log-monitoring
Graylog,一个集日志归集、分析、展现和预警工具,而且是基于 Java 开发,你心不心动?有没有想跃跃欲试?
入门地址:https://www.graylog.org
Rsyslog,一款用于Linux系统以通过TCP/UDP协议转发或接收日志消息的开源工具。
入门地址:https://www.rsyslog.com
Flume,一款用 Java 开发的采集 agent,让 Java 猿二次包装开发不是问题。
入门地址:http://flume.apache.org/
4. 多说两句
说了这么多,轮子千万款,感觉总有一款适合你,或许有了轮子的助力,会让你事半功倍,腾出更多时间冲咖啡!
不过话又说回来,纸上得来终觉浅,绝知此事要躬行;纵然轮子千万款,唯有实践才是硬道理!
另外本次谈及的部分技术轮子的用法,在之前的系列文章中都曾提及,感兴趣的可以看看往期的文章。
好了,这篇分享都到这儿吧,希望你们能够喜欢。