前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全方位的开源监控工具链介绍

全方位的开源监控工具链介绍

原创
作者头像
smooth00
修改2020-05-29 17:25:28
2.5K0
修改2020-05-29 17:25:28
举报
文章被收录于专栏:smooth性能之光smooth性能之光

说到监控现在最火的是全链路监控(服务调用+HTTP调用+数据源访问+MQ链路的监控),但我认为这是狭义的全链路监控,广义的概念应该不仅仅指APM(Appliation Perfance Manager & Monitor),还包括Loggong(系统日志、业务日志、框架日志)、Mertic(指标或者度量)、Trancing(追踪:覆盖微服务,存储,中间件)。而我今天要介绍的是全方位的开源监控工具链,为什么是全方位,就是比广义的全链路监控还要多,包括前端监控(用户行为监控)、压测监控、DevOps监控等等。

一、前端监控

开源的前端监控产品很少,我今天推荐的是zanePerfor,我们一直在用,确实挺好用的(在这里给开发者打打广告,使用的人多了开源项目才能成长),具有如下功能:

1、浏览器端(WEB)

  • 页面级的性能上报(多页面 || 单页面应用程序通用)
  • 页面AJAX性能上报
  • 页面所有加载资源性能上报(图片,js,css)
  • 页面所有错误信息上报(js,css,ajax)

2、微信小程序端

  • path路径对应的AJAX性能上报
  • 小程序错误信息上报(js,ajax,img)
  • 用户设备信息及其网络信息上报

3、后端界面展示功能(web,小程序通用)

  • 统计每分钟应用的PV,UV,IP信息,统计每天的PV,UV,IP,跳出率,用户访问平均深度
  • 统计实时和每天的应用top最高访问排行,跳出率最高排行
  • 统计实时和每天的全国省份流量热力图
  • 统计每个用户每次访问的行为轨迹

源码地址:https://github.com/wangweianger/zanePerfor

二、 APM监控

我要推荐的是SkyWalking(国人开发的,得支持),这是一款开源的应用性能监控系统,包括指标监控,分布式追踪,分布式系统性能诊断。专为微服务、云本机架构和基于容器(Docker、K8s、Mesos)架构而设计。

其架构如下:

以下是监控效果图:

​项目官网:https://skywalking.apache.org/zh/

源码地址:https://github.com/apache/skywalking

三、JMX监控

一般我们运行Java项目都会涉及到JMX的监控,本身JDK自带有的工具jconsole.exe就能完成,很多开源监控平台如Zabbix、open-falcon都有相关的监控插件,除此之外还有一些很流行的JMX监控组件如Jolokia、Jmxtrans,这些组件与其他工具组合就能构建出Java监控平台,我这里推荐的是Jmxtrans + Influxdb + Grafana组合,因为我自己用的比较多,相对比较顺手。

这种方式获取的监控指标是录活的,界面展现也是自由配置的,最主要是免费轻量级的,监控效果如下:

具体使用方式,参见我的另一篇文章: https://smooth.blog.csdn.net/article/details/90399528

源码地址:https://github.com/jmxtrans/jmxtrans

四、服务器监控

关于服务器监控,主要指的是OS(操作系统)、Docker等环境监控,主要应用于运维监控方面(包括CPU、内存、进程、磁盘、网络的监控),这方面的开源平台也挺多,比如Zabbix、open-falcon。但这里我还是推荐用轻量级的数据采集组件Telegraf,可以组合搭配的方式为 Telegraf + Influxdb + Grafana,由于Telegraf有Linux、Windows、Docker的运行模式,所以可以广泛的采集多种服务器中的指标数据。

Linux监控效果图

Windows监控效果图

Docker监控效果图

Telegraf可以采集的数据是非常多样的,可以见 https://github.com/influxdata/telegraf/tree/master/plugins/inputs

另外如果觉得要配置以上漂亮的面板很麻烦,那你可以到grafana的官网去下载面板模板,自己再进行修改调整也是可以的:https://grafana.com/grafana/dashboards?collector=Telegraf

源码地址https://github.com/influxdata/telegraf

五、数据库监控

开源的数据库监控工具或平台其实也不多,因为数据库产品太多太复杂了,涉及到不同的数据库(包括Nosql)用不同的采集组件就已经让人崩溃了。不过幸运的是上面的Telegraf组件就很强大,它可以监控除Oracle以外的大部分常用数据库,如Mysql、SQL Server、Postgresql、Mongodb、Redis、CouchDB等。以下就举例Postgresql和Redis的监控效果图:

前面说了Telegraf无法采集Oracle的监控数据,那么对于Oracle的监控难道就没有好的工具了(这里指的是开源的,不包括大量成熟的Oracle监控工具如Spotlight On Oracle,另外像不开源但却是免费的TreeSoft也能实现简单的监控) 吗?答案是否定的,既然是开源,只要你愿意去探索就无所不能。这里可以尝试用 Telegraf + InfluxDB + Grafana + Python 的方式来实现,效果图如下:

具体如何实现Oracle监控,可以参考网上的一篇文章: https://blog.csdn.net/zuozewei/article/details/89042921

Telegraf_mysql 监控配置:https://github.com/influxdata/telegraf/tree/master/plugins/inputs/mysql

Telegraf_SqlServer 监控配置:https://github.com/influxdata/telegraf/tree/master/plugins/inputs/sqlserver

Telegraf_Postgresql 监控配置:https://github.com/influxdata/telegraf/tree/master/plugins/inputs/postgresql

https://github.com/influxdata/telegraf/tree/master/plugins/inputs/postgresql_extensible

Telegraf_Mongodb 监控配置:https://github.com/influxdata/telegraf/tree/master/plugins/inputs/mongodb

Telegraf_Redis 监控配置:https://github.com/influxdata/telegraf/tree/master/plugins/inputs/redis

六、CI/CD监控

现在最流行的话题是DevOps,这个方面的话题太高大上,涉及到监控也是很难定义,但是对于CI/CD过程涉及的Jenkins我们是可以监控的,比如采用 Jenkins_InfluxDB_Plugin + Influxdb + Grafana 组合方式来采集Jenkins的构建数据,并进行视图分析:

Jenkins_Influxdb插件介绍:https://wiki.jenkins.io/display/JENKINS/InfluxDB+Plugin

Jenkins_Influxdb插件源码https://github.com/jenkinsci/influxdb-plugin

关于Jenkins结合influxdb插件收集数据交Grafana的具体介绍,可以参见我的另一篇文章:

https://smooth.blog.csdn.net/article/details/88551268

七、测试监控

到这里我们已经了解到 Influxdb + Grafana 组合的强大了,其实和Jmeter结合,我们就可以监视性能测试的压测请求,比起Jmeter本身所生成的html报告,这种方式实时性更好,轻量级的不占用过高资源,可以满足长时间的压测监控。

我们通过Jmeter的Backend Listener组件,就可以将Jmeter的数据发送到Influxdb,交由Grafana分析展示:

​ 这种方式网上随处能搜索到,也可以关注我的另一篇文章:https://blog.csdn.net/smooth00/article/details/79926294

八、日志监控

如今最流行的日志监控分析框架是ELK(Elasticsearch + Logstash + Kibana),或者是搭配轻量级的日志采集分析框架Elasticsearch + Filebeat + Kibana。说下kibana作为日志展现方面的问题,Kibana往往在展现一条数据的时候效果是完美的,尤其是kibana4那种清淡的绿色让人心旷神怡。 但很多时候我们要做多维度数据图表展现,这地方Kibana貌似没有做图表样式的优化。当很多条数据拥挤在一起时,很难区分出每个点的数值,换句话说很不直观。另外Kibana更加适合日志类型的展现, 虽然他也可以kv结构,但配置起来有些麻烦。所以现在还有一种搭配方式是 Elasticsearch + Logstash + Grafana 或 Elasticsearch + Filebeat + Logstash + Granfa,比起来Grafana比Kibana部署还要轻量化。以下是ELK监控Nginx日志,并通过Grafana展现的效果图:

nginx log的grafana模板:https://grafana.com/grafana/dashboards/2292

ELK:https://www.elastic.co/cn/what-is/elk-stack

写到这,我也差不多把我所了解的开源监控产品梳理了一通,其中有一些在我的推荐下,已经在公司内部得到了应用,另外Skywalking和Telegraf、Jmxtrans也集成到我自己的监控平台中,而Influxdb、Grafana也往Jmeter压测平台中做了集成。当然,我还会继续探索一些新的开源监控技术,争取做一个受欢迎的搬运工。

欢迎光临smooth的博客:https://blog.csdn.net/smooth00

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前端监控
  • 二、 APM监控
  • 三、JMX监控
  • 四、服务器监控
  • 五、数据库监控
  • 六、CI/CD监控
  • 七、测试监控
  • 八、日志监控
相关产品与服务
Grafana 服务
Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档