可视化实时监控应用

发表于:2021-1-28 09:20  作者:董瑞华   来源:51Testing软件测试网原创

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: 性能测试工具 Jmeter

  监控告警系统简介
  随着容器、虚拟机、云计算技术的快速发展,应用程序也需要一种更便于维护的方式继续演进。因此,我们可以通过监控系统理解应用的行为,准备好应对故障,进而改进应用。
  监控告警系统的实现各有不同,大致如下所述:
  在数据采集方面:主动采集方式、被动上报方式、上述二者兼备。
  在数据传输方面:socket传输、HTTP传输。
  在数据存储方面:关系数据库MySQL、时序数据库MongoDB、OpenTSDB、InfluxDB等。
  但是,所有的监控告警系统的核心都是采集和处理数据。
  监控系统通常由指标采集子系统和数据处理子系统组成。
  1)指标采集子系统主要负责信息采集,过滤,汇总和存储。
  2)数据处理子系统主要负责数据分析,展现,预警,告警动作触发和告警等。
  常见监控告警系统
  目前常见的监控告警系统主要有Prometheus+ AlertManager,Open-Falcon,Zabbix等。
  Prometheus+AlertManager
  Prometheus是由SoundCloud公司开发的开源告警系统并且带时序数据库,基于Go语言开发。
Prometheus架构及生态系统组件图 
  Open-Falcon
  Open-Falcon是小米公司开源的一款监控与告警系统,基于Go语言开发。
Open-Falcon架构图
  Zabbix
  Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,支持多种采集方式和采集客户端,同时支持SNMP,IPMI,JMX,Telnet,SSH等多种协议,它将采集到的数据存放到数据库中,然后对其进行分析整理,如果符合告警规则,则触发相应的告警。
  zabbix架构图
  监控告警系统构建
  就上述介绍可知,监控系统的核心是数据采集和数据存储。此外,一般为了方便实时查看监控状态,数据展示部分也是其不可或缺的一部分。本文搭建的实时监控系统,采用的是TICK中的数据采集(Telegraf)和数据存储(InfluxDB)部分,数据可视化部分采用的是目前较为成熟且广泛使用的Grafana。下面主要就所采用的方案分块进行介绍。
  Telegraf介绍
  Telegraf是一个插件驱动的服务器代理,用于收集和报告指标。Telegraf通过插件系统可轻松添加支持其他服务的扩展,输出插件可将指标发送到各种其他数据存储,服务,消息队列,如InfluxDB,Graphite,OpenTSDB,Datadog,Librato,MQTT,NSQ等等。Telegraf作为数据采集模块,需要安装至被监控的目标主机上。
  注:Telegraf尚不支持Oracle数据库统计数据的实时监控。
  Telegraf由4个独立的插件驱动:
  1)Input Plugins(输入插件,收集系统、服务、第三方组件的数据。)
  2)Processor Plugins(处理插件,转换、处理、过滤数据。)
  3)Aggregator Plugins(聚合插件,数据特征聚合。)
  4)Output Plugins(输出插件,写metrics数据。)
  主要具有以下特性:
  1)使用Go语言编写,编译成单个二进制文件,没有外部依赖项。
  2)极小的内存占用。
  3)插件系统允许轻松添加新的输入和输出。
  4)许多流行服务的插件已经存在于众所周知的服务和API中
  Telegraf支持的插件主要有:Apache、MySQL、Tomcat、TCP Listener等等,具体可访问Github。在以上都没有可用的监控采集配置外,可以使用自定义sh脚本格式收集指标。
  InfluxDB介绍
  InfluxDB是一个时间序列数据库,用于处理高写入和查询负载。可作为任何带有大量时间戳数据使用场景的数据仓库,包括 DevOps 监控,日志数据,应用指标,物联网(IoT)传感器数据以及实时分析数据。所有来自 Telegraf 的指标都可以被发送至 InfluxDB。InfluxDB 可以被配置为仅仅保留特定时长的数据,从系统中自动过期并删除不再需要的数据,这样可以节省机器的存储空间。InfluxDB作为数据存储模块,可直接安装至被监控的目标主机,也可部署在独立的服务器上。
  InfluxDB具有的特色功能有以下几点:
  1)基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)。
  2)可度量性:可以实时对大量数据进行计算。
  3)基于事件:它支持任意的事件数据。
  InfluxDB的主要特点有:
  1)无结构:可以是任意数量的列。
  2)可拓展:支持min, max, sum, count, mean, median 等一系列函数,方便统计。
  3)原生的HTTP支持,内置HTTP API,使用HTTP读写
  4)强大的类SQL语法。
  5)自带压力测试工具等,功能强大。
  InfluxDB与传统数据库中的名词对比:
  Point:Point由时间戳(time)、数据(field)、标签(tags)组成。
  Grafana介绍
  Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。目前已经支持Prometheus、Graphite、InfluxDB、OpenTSDB、Elasticsearch、MySQL、PostgreSQL等等40多种数据库类型。
  其具有以下特点:
  1)可视化:具有多种选择的快速灵活的客户端图。面板插件以多种方式可视化指标和日志。
  2)动态仪表盘:使用模板变量创建动态且可重复使用的仪表盘,这些模板变量显示在仪表盘顶部。
  3)浏览指标:通过即席查询和动态明细浏览数据。拆分视图并排比较不同的时间范围,查询和数据源。
  4)浏览日志:快速搜索所有日志或实时流式传输。
  5)警报:直观地定义最重要指标的警报规则。Grafana将不断评估并向Slack,钉钉等系统发送通知。
  6)混合数据源:在同一图中混合不同的数据源!可以基于每个查询指定数据源。
  压测可视化实时监控
  很多时候我们在使用JMeter做性能测试时,很难及时察看压测过程中应用的性能状况,总是需要等到测试完成后去看生成的Report,如果是进行长时间的压测,如1-2天,那更是让人难受。
  一般JMeter GUI模式下,在线程组或用户较多的情况下进行测试时,非常影响其他的工作,因此一般这种情况下只能使用non-GUI模式执行测试,在non-GUI模式下,Generate Summary Results汇总展示了需要关注的一些信息,其中包括:Avg,Min,Max,TSP,错误率,活跃线程数等。
  默认情况下,jmeter.properties默认是30秒的统计频率,如果我们想使用小于30秒更细颗粒度的统计频率的时候,那么控制台会有大量的输出,这个时候我们就不好观察结果了。另一方面,如果需要分享给其他人员,这个时候控制台输出方式就不是一个很友好的方式,这个时候可以选择HTML Dashboard,但需要等待整个测试的完成。
  因此,我们可以将测试结果发送到数据库中持久化,这样就可以通过SQL查询数据库来创建展示图表了。
  解决方案
  JMeter引入后端监视器Backend Listener,用于在压测过程中发送统计指标数据给时序数据库InfluxDB,通过配置Grafana数据源连接到InfluxDB,我们就可以创建可视化看板,并可以实时获取到测试指标数据。
  InfluxDB配置
  1、下载influxdb:从网址https://www.influxdata.com/get-influxdb/中下载influxdb,并解压到D:/tick目录。
  2、配置influxdb.conf文件:使用notepad++打开influxdb.conf文件,修改配置文件。
  修改存放目录路径:修改26行、45行和48行目录路径如下:
  注:influxdb.conf中的大多数设置都被注释掉了;所有注释掉的设置将确定为内部默认值。
  3、修改后,执行以下命令运行InfluxDB数据库服务器(运行后不要关闭)。
  influxd.exe -config influxdb.conf
  运行成功后显示InfluxDB图案。
  4、执行以下命令运行InfluxDB数据库客户端
  influx.exe
  注:InfluxDB可以使用InfluxDB Studio进行管理。
  JMeter配置
  1、创建一个测试计划,并添加Backend Listener。
  2、配置Backend Listener。
  3、运行测试。
  4、查看jmeter数据库中是否有events和jmeter两个表。
  注:使用create database "jmeter"命令创建jmeter数据库。
  InfluxdbBackendListenerClient配置简介:



版权声明:本文出自《51测试天地》第六十期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任

评 论

论坛新帖



建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海信义律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道