【全观测系列】Elasticsearch应用性能监控最佳实践
简介:本文介绍了应用性能监控的应用价值以及解决方案等。
1、什么是全观测?
要了解全观测,我们先看看传统运维存在哪些问题。
- 数据孤岛,分散在不同部门,分析排查故障困难;
- 多个厂商的多种工具,无法自动化统一分析;
- 故障是立体的,日志、指标等都只能看到一方面的可观察性;
- 只进行收集,没有真正深入分析,不能发挥大数据的价值;
而全观测是对传统运维的改进。它将日志、指标、APM数据,汇总在一个平台,让运维、开发、业务人员对所有的数据从统一视角进行观察分析,可以实现——
- 建立统一的可视化视图、对齐时间、过滤条件;
- 建立统一的基于规则的监控和告警;
- 建立统一的机器学习的智能监控和告警。
在整个全观测中包括日志、指标,APM这三要素中,大家相对比较陌生的可能是APM。
2、什么是应用性能监测APM
APM定义:企业应用APM对自身复杂的软件及应用程序的运行状态进行监测、诊断和分析,从而缩短故障定位时间和提升故障的定位准确度,进而提升应用运行效益和优化用户的使用体验。
APM涉及的技术类型包括人工智能、大数据、云计算,它的核心是用户体验,提升应用可靠性性,提升应用质量,降低IT总拥有成本。
随着当今应用的多元化和复杂化,我们需要通过APM这样一个应用性能监测,实现端到端业务性能的分析,同时帮助了解我们的服务,比如说时间都花在了什么上面,服务崩溃的原因是什么,整个服务的瓶颈在哪里,从而使我们更好的去跟踪、优化终端用户的体验。
3、应用性能监测APM场景
3.1 APM应用场景及痛点
• 应用异常诊断
— 分布式微服务架构的应用进行故障排查时存在问题定位难的现象;
— 业务逻辑复杂化使企业对应用架构梳理和治理难度增加。
• 应用体验管理
— 用户体验直接影响应用服务发展前景,但获取用户访问系统时的真是和具体情况难。需要及时且快速定位新故障或复现用户反馈的问题场景,高效解决故障,防止客户流失
• 应用异常诊断
— 多视角分析关联指标和告警数据,并生成故障根因分析报告
— 结合历史数据与运维经验,实时分析异常事务的发生原因
3.2 APM能力及业务价值
• 主动监测与被动监测,注重终端用户体验优化
• 实时、可视化应用架构,协助用户全面了解复杂的基础设施
• 应用数据积累及实时更新,为解决不同平台问题提供数据支撑
• 路径跟踪与及时预警,降低故障损失
• 深入监控应用组件,侧重监控工具之间运作的成效,助力用户快速定位和处理问题
4、阿里云Elasticsearch应用性能监测功能发布
基于开源Elastic APM构建,提供云上一键托管的阿里云Elasticsearch应用性能监控Server节点服务拉起,支持使用阿里云Elasticsearch作为其数据存储,并允许实时监控数千个应用程序的性能。
用户可通过Agent收集包含传入请求、数据库查询、缓存调用、外部HTTP请求、错误及异常等多种详细的性能信息,并通过Elasticsearch进行存储及可视化分析,为企业及开发者提供高效的应用程序性能优化与监控能力。
4.1 用户根据默认提供的代理Agent及数据采集模板进行数据收集
用户可使用与服务相同的语言编写的开源库,代理程序会挂钩应用程序并收集性能指标和错误,所有数据都会收集并发送到Server端。
4.2 云上托管阿里云ES应用性能监控Server实例创建与管理
一键拉起Server节点并进行灵活的扩缩及配置,Server通过JSON HTTP API从代理接收数据,单个节点通常可以处理来自数百个代理的数据。
4.3 配置关联阿里云ES实例,结合Kibana进行性能指标数据存储及分析
结合阿里云ES自研日志Indexing Service以及海量存储Openstore,可以达到高并发的写入能力,以及低成本、近实时地存储搜索海量数据。云上免费托管拉起的Kibana节点提供丰富的数据分析及可视化能力。
5、全观测场景技术难点和解决方案
如何通过云上Elastic Stack能力去解决全观测-日志场景下的痛点。
5.1 全观测场景面临哪些痛点
- 日志/指标获取难
机器、业务系统、网络链路、操作系统,诸多指标及日志获取手段不一,落地过程复杂;
- 日志/指标规格化要求高
上下游链路配合衔接过程中,如何将有效信息从海量日志中获取;
- 高并发写入、系统稳定性差
业务/流量抖动,日志写入峰值往往会很高,旁路系统稳定性受到很大的挑战;
- 海量数据存储成本高
日志场景涉及海量数据,TB级别起步,甚至PB级;
- 日志分析和指标监控统一难
借助时序系统可以很好的完成监控,但异常分析困难相反,如何在统一平台完成;
- 系统可扩展性要求高
业务调整带来的技术演进一直在发生,技术组件更新快,运维框架需要有强大的兼容性;
5.2 云上ELK全观测解决方案能力
- Beats/APM获取日志/指标
轻量化的提供各类metic、logs、APM数据采集能力;
- 数据清洗SQL化更简易
支持各类网络格式的日志/指标采模板,实时计算Flink提供完整流式SQL能力;
- 云上ES写入托管及超强稳定性
提供Indexing service自研ES写入托管服务,及跨机房部署、同城容灾、场景内核优化;
- 低成本数据存储
阿里云ES提供冷热分离数据存储方式,及自研存储引擎Openstore优化存储压缩算法;
- 日志分析、指标监控、APM能力齐全
阿里云ElastiStack全托管,提供日志分析、监控、Tracing一站式能力;
针对时序场景,针对性优化引擎,保证时序日志监控和分析的性能;
- 开源生态具备强大的可扩展性
基于分布式架构,以及灵活开放的RestAPI和Plugin框架,支持各种扩展能力。
6、ES全观测解决方案实现日志监控/运维/分析
- 方案选型:100%兼容开源,与各类开源生态组件无缝衔接;支持多云/跨云的日志监控、运维分析场景
- 方案优势:云上Elasticsearch端到端的采集传输及分析能力,提供面向海量数据的高性能读写、高弹性、低成本解决方案
7、时序日志场景痛点分析
写多读少的日志场景下会遇到什么问题?
(1)高峰期写入压力大弹性扩展难以有效实施
(2)海量计算+存储资源成本高低峰期资源闲置
(3)为保证系统稳定性集群运维管理复杂
8、阿里云Elasticsearch日志增强版
基于云原生自研引擎技术的全观测数据写入托管及海量存储能力
- 日志写入Serverless
自研写入加速Indexing Service,支持ES日志场景海量数据写入,写入按实际流量计费,提供极致的弹性和强大的业务系统洪峰应对能力,客户无须预留资源并维护大规模集群;
- 海量存储Openstore
可根据实际数据的存储量按量计费,无须提前预留集群存储容量,数据兼容ES原生查询。单据节点可存储百TB数据并通过灵活易用的数据生命周期策略进行数据管理
- 云端10倍写入弹性扩缩
云端海量算例突破写入瓶颈,无须提前预留资源,无低峰闲置浪费
- 成本降低50%以上
按需使用,按实际写入流量付费,云端按量写入,优化资源成本
- 存储超低成本
相较于高效云盘存储成本降低70%,无须提前预留资源,无低峰闲置浪费
- 海量数据可查询
相较于高效云盘存储成本降低70%,存储Serverless按实际用量用多少付多少
9、应用服务数据链路追踪与分析
某汽车品牌案例(SLA/KPI指标跟踪、销售支撑系统链路追踪与日志分析),基于阿里云Elasticsearch的“汽车行业应用服务数据链路追踪和日志分析”介绍。
(1)场景需求
在整体汽车行业推动业务全流程数字化转型的背景下,内部支撑系统,以及依赖的IT组件(如:移动网关),快速上云后,内部系统产生大量的Metric、TraceLog、Log等数据,需要在云上快速落地。
某汽车品牌企业IT部门下,有多个内容管理系统(CMS)、分销商经营办公系统(DMO)、运营质量监控系统(QIS)、营销经营分析系统(MMP)、BI系统等内部支撑系统。
•IT业务系统复杂,既要满足持续的业务需求,又要整体上云,需要有快速平迁、对接原有云上/云下的IT系统的产品,并能保证技术架构的灵活、开放性,支持后续的自由拓展;
• 预期未来的日志数据规模超PB级(180天),底层技术架构需要兼备低成本存储、快速获取、按需检索和分析的能力;
(2)方案价值点
- 极低迁移/改造成本:外资/合资背景的车企IT架构借鉴外资方海外的IT架构,ES是非常普及的技术架构方案,阿里云ES完全兼容开源,客户运维系统上云的迁移/改造成本极低,最快一周内完成系统上线;
- 低存储成本:存储的数据量很大(客户单个日志集群240TB存储量)。提供分级存储的存储介质。例:OSS中存储的1 PB日志12.6W/月,每月多付3W元/月,日志即可获得秒级模糊检索、聚合分析查询等能力(比自建ELK直接使用高效云盘便宜了20.9W/月);
- 真正的弹性伸缩:提供Serverless(服务化)存算分离架构,按流量收取写入费用,没有流量不收钱,真正意义上的“瞬时弹性伸缩”;
整体方案架构
10、ES应用性能APM Server创建
3min快速拉起APM Server进行数据传输,最低仅需180元/月
在APM server控制台列表,可以查看有多少个APM server在运行。
我们可以看到APM server的访问地址,将这个访问地址配到APM agent里面。APM agent采集过程中,可以支持多种客户端语言,可以快速的实现数据采集的配置。
当数据采集之后,我们就可以来到Kibana的界面,通过Dev tools进行一些索引的创建。
Kibana界面可以查看所有的APM服务数据,如平均响应时长,P95值,异常发生的时间等等。
进入查看某个服务的详细数据:
点击查看某个具体的请求数据的瀑布视图:
查看瀑布视图的详情:
比如发现有很多select正在进行,可以点击查看具体详情:
查看全链路数据:
本文为阿里云原创内容,未经允许不得转载。
【全观测系列】Elasticsearch应用性能监控最佳实践的更多相关文章
- ELK 性能(4) — 大规模 Elasticsearch 集群性能的最佳实践
ELK 性能(4) - 大规模 Elasticsearch 集群性能的最佳实践 介绍 集群规模 集群数:6 整体集群规模: 300 Elasticsearch 实例 141 物理服务器 4200 CP ...
- Sentry 后端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- 【读书笔记】读《高性能网站建设指南》及《高性能网站建设进阶指南:Web开发者性能优化最佳实践》
这两本书就一块儿搞了,大多数已经理解,简单做个标记.主要对自己不太了解的地方,做一些记录. 一.读<高性能网站建设指南> 0> 黄金性能法则:只有10%~20%的最终用户响应时间 ...
- 经典的性能优化最佳实践 web性能权威指南 读书笔记
web性能权威指南 page 203 经典的性能优化最佳实践 无论什么网络,也不管所用网络协议是什么版本,所有应用都应该致力于消除或减 少不必要的网络延迟,将需要传输的数据压缩至最少.这两条标准是经典 ...
- 使用 Prometheus + Grafana 对 Kubernetes 进行性能监控的实践
1 什么是 Kubernetes? Kubernetes 是 Google 开源的容器集群管理系统,其管理操作包括部署,调度和节点集群间扩展等. 如下图所示为目前 Kubernetes 的架构图,由 ...
- Sentry Web 前端监控 - 最佳实践(官方教程)
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- Google的网站性能优化最佳实践
网站性能最佳实践 当描述一个web页面的页面速度,评价的一致性遵循许多不同的规则.这些规则是任何阶段的web开发可以应用的前端最佳实践.这个文档的每个规则都陈述于此,无论你是否运行页面测速工具-- ...
- JQuery系列(7) - JQuery最佳实践
上篇文章是一篇入门教程,从设计思想的角度,讲解"怎么使用jQuery".今天的文章则是更进一步,讲解"如何用好jQuery". 我主要参考了Addy Osman ...
- ASP.NET Core 性能优化最佳实践
本文提供了 ASP.NET Core 的性能最佳实践指南. 译文原文地址:https://docs.microsoft.com/en-us/aspnet/core/performance/perfor ...
- 【性能测试实战:jmeter+k8s+微服务+skywalking+efk】系列之:性能监控、分析、调优等
说明: 本文是基于虚拟机演示的,资源有限 skywalking中拓扑图 kubectl get po -A -owide 测试执行:单场景 查询礼品 jmeter -n -t gift.jmx -l ...
随机推荐
- 毕设系列之JrtpLib H264(裸视频数据) 实时视频传输(发送与接受)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- C#无需第三方插件实现json和table互转
using System; using System.Collections.Generic; using System.Collections; using System.Linq; using S ...
- TCL基本语法2
TCL基本语法2 1.format和scan 两个基本的函数,和C语言中的sprintf和scanf的作用基本相同.format将不同类型的数据压缩在字符串中,scan将字符串中的数据提取出来. se ...
- #二分图匹配#洛谷 5771 [JSOI2016]反质数序列
题目 给出 \(n\) 个正整数,问最大的子集使得任意两个数的和都不是质数 \(n\leq 3*10^3\) 分析 如果把两个数的和为质数连边,等价于求最大独立集. 由于只有偶数加奇数才可能产生质数( ...
- mysql系列之杂谈(一)
从刚开始工作到现在,除了实习的时候在国企用过oracle,毕业之后陪伴我的数据库一直都是mysql,而由于mysql的开源特性,也让成为无数公司的宠儿,越走越远. 我们在刚开始使用mysql时,会发现 ...
- 第一视角看方法调用时的jvm
关于比较学术的jvm每个内存区域我之前都写过,就不重复赘述了,这里附上链接:https://www.cnblogs.com/gmt-hao/p/13603534.html, https://www.c ...
- Windows wsl2安装Ubuntu
wsl(Windows Subsystem for Linux)即适用于Windows的Linux子系统,是一个实现在Windows 10 / 11上运行原生Linux的技术. wsl2 为其迭代版本 ...
- std::thread 三:条件变量(condition_variable())
condition_variable . wait . notify_one . notify_all *:notify_one:通知(唤醒)一个线程 *:notify_all:通知( ...
- Python读写json文件--json
import json # 将数据写入json文件 def json_write_file(): data={'name':'张三','age':12} with open('json.json',' ...
- HarmonyOS线上Codelabs系列挑战赛第二期:调用三方库,制作酷炫的视觉效果
HarmonyOS线上Codelabs系列挑战赛正如火如荼进行中,开发者们可以通过体验基于HarmonyOS特性和能力的应用开发,快速构建有趣.有用的应用程序.火速加入,与众多开发者一起碰撞想法, ...