使用Elastic Stack做应用的360度全观察性监控
文章目录
- 示例架构
- 事件分析和探索
- APM 探索
- Infra探索
- Discovery探索
- Service探索
- 总结
Elastic坚信,如果我们要监控企业的IT基础设施或者说完成整个软件的端到端的全链路监控,那么就不应该漏过任何一个侧面的数据。这需要通过360度的全观察性来完成。Elastic Stack,作为一个大数据平台的技术栈,在运维监控这个垂直领域,已经提供了一套完整的技术解决方案,从日志分析,到指标监控,再到软件性能监控和可用性监控,都有产品级的开箱即用的方案。
在这篇文章里面,我们通过一个例子,展示如何通过使用Elastic的全观察性解决方案去快速定位应用运行过程中的问题。
示例架构
我们假设有一个宠物医院的应用,其架构如下:
从上图可以看到,这是一个常见的前后端分离的微服务架构:
- 用户流量通过K8S的负载均衡进行导入
- 前端部署多个基于REACT的Nodejs服务器 + NGINX反向代理
- 前端通过K8S的负载均衡对后端服务器进行访问
- 后端服务包含两组服务的多个服务器,分别是:
- 基于java spring的 web service + NGINX反向代理,用于事务型操作
- 基于python flask的 web service + NGINX反向代理,用于检索型操作
- 数据层有两组服务器,分别是MySQL和Elasticsearch,用于提供事务数据和可检索数据
在这个架构中的每一次,我们都使用:
- filebeat,用于日志的采集
- packetbeat,用于网络数据的采集
- Metricbeat,用于系统、中间件指标的采集
- Auditbeat,用于安全、审计事件的采集
事件分析和探索
我们可以通过构建机器学习的任务,持续的对系统里面的各种指标进行监控,并且配合Alert功能,实时的对异常事件进行上报。配置了邮件告警之后,当监测到异常,我们会收到如下告警:
可以将调查链接附在邮件里面。通过链接,我们可以访问Kibana的机器学习异常监测界面。
因为是实时告警,我们可以直接观测8:00 PM的异常
机器学习任务包含了多种信息,包括:
- 服务的总体异常情况(Overall)
- 各子服务层的异常情况(spring后端和node前端)
- 异常的严重程度(Severity)
- 探测器监控的指标类型(这里是服务的时延方差指标)
- 影响因子(
/api/owner
) - 指标的实际值、标准值和偏差描述
从这里,我们可以基本分析到,整体响应从前端到后端的监控都有异常,即问题定位应该是在spring的后端服务上。
通过点击右边的Action窗口,我们可以从其他方面探索整个App在这个时间段内的实际运行情况:
可探索的数据包括:
- APM运行时数据 (
APM Analysis
) - APM的统计数据仪表板 (
Service Analysis
) - 基础设施监控数据 (
Infra Analysis
) - 服务可用性数据 (
Uptime Analysis
)
注意,在探索的过程中,被探索的其他数据,仍然是铆定在出现问题的时间窗口的。这个功能很利于我们做数据的切片观察
APM 探索
通过APM Analysis
,进入APM的探索页面,我们可以看到,在7:58 pm 开始,接口调用的响应时间出现了一个明显的毛刺。我们可以直接在界面上下钻该毛刺。
可以看到,在这个毛刺产生阶段,不只是/api/owner
这个API有问题,而且其他的api比如,api/visits
同样出现了问题。
可以继续对API接口进行探索:
通过APM的数据,我们可以看到api/visits
在7:58 pm ~ 8:01 pm这个时间段内的调用时间情况。在毛刺之前,api/visits
的响应时间在100ms左右,在毛刺阶段,响应时间变为1000ms。
基本上,所有的的时间都是花在sping对后端数据库的访问上。在异常之前,DB的访问延时在xxx微秒(百级)左右,在毛刺阶段,变为xxxx微秒(千级)
这时,我们基本可以判断,问题可能出在数据库上!
Infra探索
要判断数据库上的问题,就全方位的IT基础设施的监控,从主机到数据库,中间件。
通过Infra Analysis
对IT基础设施进行探索:
可以看到,我们对整个IT基础设施有一个全景图。颜色越深的节点,代表该资源在特定时间段内资源使用率越高。我们可以看到,这个时间点内,我们的MySQL服务器的使用情况明显比其他服务偏高。
可以通过点击右键,进入对应节点的日志。很容易,我们可以发现MySQL服务在这个时间点做了一次多表的联合扫描。耗时120s
Discovery探索
我们可以在Discovery页面再做深度的探索,可以看到,这个多表联合扫描和服务的异常是重叠的。
由此,我们找到根本原因
Service探索
我们也可以在Service Analysis
页面分析服务层面的影响。比如,查看该事件段有多少用户登录了系统,系统响应时延的百分位等指标,因为所有的数据是关联分析的,我们可以在可视化图标上集成所有的信息,下图中,System performance子图,就使用machine learning的数据,在对应时间点打上了alert flag
总结
大多数时候,我们的可观察性是被撕裂的,任何从单一维度,比如日志,指标,APM方面独立去看,可以看到异常,但是却无法找到根本原因。数据需要被放在一起,提供360度的全观察性进行,才能最大化的对数据进行探索。不光是运维问题,商业洞察,安全分析同样如此,希望这篇文章对你有所启发,能够构建一个真正的大数据平台对数据进行探索,因为大数据不仅是数据量大,数据类型多,更重要的是数据并非孤立,需要放在一起才能产生价值。
使用Elastic Stack做应用的360度全观察性监控相关推荐
- 360度全透明星空房,感受“坐观星辰”的绝妙体验
疫情当前,在外就餐人们更偏向于拥有独立空间的用餐环境,杰出科技旗下推出的星空梦星空房不仅满足疫情防控要求,还能为用户提供独立的用餐空间,给用户带来独特用餐体验,让用户在享用美味的同时感受户外风景的魅力 ...
- Elastic Stack简介
Elastic Stack简介 如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch. Logstash.Kibana组成, ...
- Elastic Stack之Elasticsearch教程
1.Elastic Stack简介 2.Elasticsearch 2.1 简介 2.2 安装 2.2.1 版本说明 2.2.2 下载 2.2.3 单机版安装 2.2.4 elasticsea ...
- 【Elastic Stack上】Elastic Search快速入门,让你对ELK日志架构不再困惑
课程介绍 Elastic Stack简介 Elasticsearch的介绍与安装 Elasticsearch的快速入门 Elasticsearch的核心讲解中文分词 全文搜索 Elasticsearc ...
- 腾讯技术课|基于Elastic Stack 搭建日志分析平台
为了让读者们可以更好的理解「如何基于Elastic Stack 搭建日志分析平台」,腾讯技术工程公众号特别邀请腾讯基础架构部的陈曦工程师通过语音录播分享的方式在「腾讯技术课」小程序里同步录制了语音+P ...
- Elastic Stack之Beats(Filebeat、Metricbeat)、Kibana、Logstash教程
如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch.Logstash.Kibana组成,在发展的过程中,又有新成员Beat ...
- 360度虚拟全景技术
第一节 虚拟全景技术概述 虚拟全景技术是在网上能够进行360度全景观察,而且通过交互操作,可以实现自由浏览,从而体验三维的VR视觉世界.全景图像,是指大于双眼正常有效视角(大约水平90度,垂直70度) ...
- SkeyeVSS智慧国土360度巡航监控解决方案
一.背景概要--国土资源监管难题知多少? 随着经济的快速发展.城镇化的快速推进,耕地及矿产资源等不断减少,未批先建.批少用多.私自改变土地用途等各种违法违规用地行为时有发生,在这种情况下,传统的人力巡 ...
- V360推出首款移动端VR视频编辑软件,用手机就可编辑360度全景视频
通过该软件,小白仅用一部智能手机就可以轻松完成360度全景视频编辑. 如果要制作一款小视频,你或许都用不着电脑,一部智能手机就能完成.现在,这种便捷的方式也延续到VR视频制作了.最近,V360推出了首 ...
最新文章
- Java项目:垃圾分类查询管理系统(java+SSM+jsp+MySQL+bootstrap)
- SQL Server Guid和NEWSEQUENTIALID函数
- Task 1 天池赛 - 二手车交易价格预测
- JDBC连接池C3P0,druid
- 数据挖掘之关联分析三(规则的产生)
- java多字段排序,java8 stream多字段排序的实现
- Leetcode--全排列(Java)
- oracle定义转储目录,Oracle 12.1新特性:在线rename或relocate数据文件
- 设置windows引导linux分区,windows下安装grub引导Linux
- 学习笔记(1):activiti6.0从入门到精通-设置流程变量(概述)
- [RHCE033]unit9vim工具的使用
- java包资源_Java获取jar包以外资源的方法
- GAE+bottle+jinja2+beaker快速开发demo
- 一文读懂authorized_keys和known_hosts
- ZBrush新手推荐使用这17个小技巧和常用快捷键、笔刷
- Thinkphp5使用phpword生成图表
- MyBatis实战【上】
- 【 Rust 基础】控制流 —— Rust 的神级语法03
- Android开发经验谈-很少有人会告诉你的Android开发基本常识
- 双路由实现宽带和IPTV单播并存
热门文章
- 【数值分析】二元函数二阶混合偏导数的近似计算式与误差阶推导
- .csproj 文件
- 实现Android APK加固:代码加密隐藏、资源加密隐藏、so库加密隐藏。兼容unity引擎。附加固工具链接。
- 基于Arduinoros的温度控制器
- 日历2019日历备注_如何在Windows 10日历应用中使用Google日历
- Sql Server事务+隔离级别+阻塞+死锁
- Python-《原神》荒海雷立方机关破解一
- 外星人 NVIDIA GeForce GTX 全系列显卡超频程序【旗舰绿色版】v1.0.36
- N个节点的二叉树的形态数详细推导
- 使用动态代理实现用AOP对数据库进行操作