ARMS实践|日志在可观测场景下的应用
简介: 在实际生产中,通过灵活组合文内几种使用方式,运维团队可以很好地排除日常观测、故障定位过程中的干扰因素,更快的定界甚至定位问题根因。
作者:陈陈
日志在可观测场景下的应用
随着 IT 架构改变与云原生技术实践,融入开发与业务部门视角,运维团队具备比原有监控更广泛、更主动的可观测能力。日志作为可观测三支柱(Tracing、Metrics、Logs)之一,帮助运维团队追踪程序运行状态、定位故障根因、还原故障现场。以故障发现和故障定位为目的使用日志场景可大致分为日志搜索和日志分析两类:
1. 日志搜索:
- 通过日志关键字搜索日志;
- 通过线程名、类名搜索日志;
- 结合 Trace 上下文信息,衍生出根据 TraceID、根据 spanName、parentSpanName、serviceName、parentServiceName 搜索日志。
2. 日志分析:
- 查看、分析指定日志数量的趋势;
- 根据日志内容生成指标(比如每次交易成功打印一条日志,可以生成关于交易额的一个指标);
- 自动识别日志模式(比如查看不同模式的日志数量的变化,占比)。
在实际生产中,通过灵活组合以上几种使用方式,运维团队可以很好地排除日常观测、故障定位过程中的干扰因素,更快的定界甚至定位问题根因。
常见开源日志解决方案的不足
常见的日志解决方案多是利用主机上安装日志采集 Agent,通过配置日志采集路径的方式将日志采集到第三方系统存储、查询、展示、分析。较为成熟的有 ELK(Elasticsearch、Logstash、Kibana)开源方案,其活跃的社区、简单的安装流程、便捷使用方式等优势吸引了不少用户。

但 ELK 方案也存在着些许不足:
1. 运维成本高:搭建一套完整的 ELK 系统需要部署 ES 集群,kafka 集群以及 logstash 组件等等,以及随着日志规模的增长带来多集群拆分、多集群升级、稳定性等问题,往往需要投入更多人力。
2. 资源开销大:ELK 架构中几乎所有组件的资源开销都会随着日志规模的增长线性增长,占用极大成本。
3. 企业级能力缺乏:日志中往往包含业务关键信息,需要一套完备的多租户隔离以及细粒度的权限控制方案,这在开源免费 ELK 架构中是缺乏的。
基于 ARMS 的日志解决方案
相较于 ELK 开源自建方案,是否可以有更轻量、更容易运维的日志解决方案呢?
目前,应用实时监控服务 ARMS 提供一套简单易用的日志解决方案,让运维团队可以一键集成应用日志。相较于开源方案,丰富功能性、压降成本的同时,进一步提升易用性。
功能性
1. 自动富化日志
关联调用链上下文包括 TraceID、ServerIP、spanName,parentSpanName,serviceName,parentServiceName。全面满足根据 TraceID 搜索日志、查找触发异常日志打印的上游应用、上游接口等需要将 Tracing 和 Logs 进行关联分析的可观测场景。
2. 提供智能日志聚类能力
针对规模大、内容杂、且格式也难以做到统一规范的日志进行汇总、抽象聚类,使运维人员迅速发现异常日志与正常日志“类别”上的不同,从而快速定位异常日志、发现问题。
3. 提供 LiveTail 能力
针对线上日志进行实时监控分析,毫秒级别延迟上报日志,最贴近tail -f的日志查看体验,有效减轻运维压力。
4. 基于 ARMS 的 Arthas 能力,运行时调整 logger 输出级别
5. 一键生成基于日志的报警、日志转指标的能力(内测中 即将上线)。
易用性
- ARMS 控制台一键开通,即可使用日志相关全套功能;
- 无需安装额外日志采集组件,避免应用改造;
- 无需管理运维日志服务端以及日志,降低日常运维工作量;
- 支持日志服务 SLS、及 ARMS 直接采集的日志。
运维成本
- 日志功能处于公测阶段,完全免费;
- 提供灵活可配置的日志丢弃策略,从源头上减少大量无效日志;
- 提供灵活可配置的日志存储策略,可根据应用重要程度配置日志存储时长。
ARMS 日志功能展示 & 场景最佳实践
前置要求
1. 升级到 2.7.1.4 以及更高版本的 Agent(K8s 应用重启后会升级到 2.7.1.4 版本 agent,非 K8s 应用需要用户手动下载最新版本 Agent 并挂载)。

2. 在 ARMS 控制台应用列表页,点开需要开启日志采集功能的应用,点击左侧最下方应用设置,点到自定义配置页,打开日志采集开关并根据实际场景配置相应参数,最后点击保存。
- 对于直接采集的日志,是通过 ARMS 探针采集日志框架的输出并直接推送到 ARMS 的日志分析中心。

- 如果您需要将应用的日志采集到日志服务 SLS,并在 ARMS 应用配置中配置相应的 Project 和 Logstore,ARMS 会内嵌日志服务的页面方便您进行日志分析。

功能应用演示
1. 根据 TraceID 搜索日志

2. 查看包含置顶关键字的日志条数变化趋势

3. LiveTail
点击下方链接,查看操作视频:
https://developer.aliyun.com/live/250112
4. 日志聚类下图中上方左侧是识别出来不同模式的日志条数变化趋势,右图是不同模式日志选择时间段内总条数降序排序,下方是不同模式下的日志原文,可通过在 search 中搜索不同日志模式查看该模式下的日志原文样本。

ARMS 日志功能更多案例可查看 ARMS 官方文档:
https://help.aliyun.com/document_detail/432298.html
最佳实践
下面简单介绍两个阿里云可观测团队在云服务 SRE 场景下应用使用 ARMS 日志功能的最佳实践。
案例:指标下跌问题排查
- 背景
应用 A 主要负责接收业务应用通过 RPC 上报流量信息、解析信息、简单处理后写存储。其中业务的流量信息包括时间戳、业务应用名、接口名、一分钟的接口请求量、一分钟的接口请求总耗时。写入存储后,可在控制台查看该业务应用的流量监控信息。某日 某业务应用B反馈扩容后流量监控信息下跌,随即开始排查问题。
- 排查方案
1. 首先打开日志平台。查看应用 A 相关日志。看到较多写存储限流异常,统计该异常数量最近3小时趋势发现无明显增加,说明该异常态少量出现,无影响,继续排查。
2. 怀疑应用 A 部分节点 hang 死,导致应用 B 上报数据失败,随即查看应用 A 不同实例日志输出量。发现基本均匀,该怀疑排除。
3. 此时,基本排除应用 A 的问题,开始怀疑数据上报异常。由于应用B的流量监控信息只是下跌并未跌 0,怀疑应用 B 部分节点数据上报异常。通过日志分析,获得当前应用 B 当前正常上报数据的 IP 列表,给到用户,发现应用 B 新扩容机器均未成功上报数据,怀疑新扩容机器网络异常。
4. 通过日志平台查看应用 B 日志,看到较多网络异常,查看该异常分布机器,均分布在新扩容机器上,与上一步结论吻合。随即登陆一台机器,发现到应用 A 的网络确实不通,随即联系网络同学恢复该问题。
- 场景总结
通过日志检索与日志分析结合使用,最终定位到问题根因。
案例: 日志存储成本降低
- 背景
应用 C 因为开发人员众多,日志打印级别设置不合理,日志量很大,日志功能成本开销很高,急需降本提效。
- 治理方案
1. 基于过往日志排查问题经验,很少需要查看一周前日志。因此,将日志存储时长策略缩短,由一个月调整为一周。
2. 通过 ARMS 日志模式自动识别的功能,查看当前 top-k 的日志模式,发现较多模式的日志属于无效日志。设置日志丢弃策略,将无效的日志丢弃。
- 场景总结
结合存储时长调整和日志模式自识别,日志整体成本降低到以前的十分之一。目前,ARMS 日志应用功能已全面开放,让运维团队快速拥有日志分析与搜索能力!
应用实时监控服务 ARMS 7 月产品能力动态

点击此处,立即免费试用!
ARMS实践|日志在可观测场景下的应用的更多相关文章
- 【转】MySQL乐观锁在分布式场景下的实践
背景 在电商购物的场景下,当我们点击购物时,后端服务就会对相应的商品进行减库存操作.在单实例部署的情况,我们可以简单地使用JVM提供的锁机制对减库存操作进行加锁,防止多个用户同时点击购买后导致的库存不 ...
- 自己总结的C#编码规范--3.特定场景下的命名最佳实践
特定场景下的命名最佳实践 命名空间 要使用PascalCasing,并用点号来分隔名字空间中的各个部分. 如Microsof.Office.PowerPoint 要用公司名作为命名空间的前缀,这样就可 ...
- MySQL乐观锁在分布式场景下的实践
背景 在电商购物的场景下,当我们点击购物时,后端服务就会对相应的商品进行减库存操作.在单实例部署的情况,我们可以简单地使用JVM提供的锁机制对减库存操作进行加锁,防止多个用户同时点击购买后导致的库存不 ...
- 域控场景下windows安全日志的分析--审计认证行为和命令的历史记录
https://www.cnblogs.com/KevinGeorge/p/8563458.html 一.域控windows安全日志基本操作 1.打开powershell或者cmd 1 #gpedit ...
- 从零入门 Serverless | SAE 场景下,应用流量的负载均衡及路由策略配置实践
作者 | 落语 阿里云云原生技术团队 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复"入门",即可获取 S ...
- 从 ClickHouse 到 ByteHouse:实时数据分析场景下的优化实践
本文来自火山引擎公众号,原文发布于2021-09-06. 近日,字节跳动旗下的企业级技术服务平台火山引擎正式对外发布「ByteHouse」,作为 ClickHouse 企业版,解决开源技术上手难 &a ...
- 美团在O2O场景下的广告营销
美团作为中国最大的在线本地生活服务平台,覆盖了餐饮.酒店.旅行.休闲娱乐.外卖配送等方方面面生活场景,连接了数亿用户和数百万商户.如何帮助本地商户开展在线营销,使得他们能快速有效地触达目标用户群体提升 ...
- API 管理在云原生场景下的机遇与挑战
作者 | 张添翼 来源 | 尔达Erda公众号 云原生下的机遇和挑战 标准和生态的意义 自从 Kubernetes v1.0 于 2015 年 7 月 21 日发布,CNCF 组织随后建立以来,其 ...
- MySQL金融应用场景下跨数据中心的MGR架构方案(2)
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 如何在多个数据中心部署多套MGR集群,并实现故障快速切换. 上篇文章介绍了如何在多数据中心部署多套MGR集群,并构建集群间 ...
- 不同场景下 MySQL 的迁移方案
一 目录 一 目录 二 为什么要迁移 三 MySQL 迁移方案概览 四 MySQL 迁移实战 4.1 场景一 一主一从结构迁移从库 4.2 场景二 一主一从结构迁移指定库 4.3 场景三 一主一从结构 ...
随机推荐
- day03-应用线程01
JavaGUI-坦克大战03 7.线程的应用01 7.1坦克子弹发射思路 在坦克大战2.0基础上添加如下功能:当玩家按下 j 键,就发射一颗子弹. 思路: 当发射一颗子弹后,就等于启动了一个线程 He ...
- uniapp使用uview报错Cannot find module ‘@/uni_modules/uview-ui/components
参考:https://github.com/umicro/uView 记录使用uniapp报的错 注意uview目前只支持vue2 按照教程引入uview,然后执行的时候还是会报Cannot find ...
- PAT 甲级1008【1008 Elevator】
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- 三维模型OBJ格式轻量化的纹理压缩和质量关系分析
三维模型OBJ格式轻量化的纹理压缩和质量关系分析 三维模型的OBJ格式通常包含纹理信息,而对纹理进行轻量化压缩可以减小文件大小和提高加载性能.然而,在进行纹理压缩时需要权衡压缩比率和保持质量之间的关系 ...
- 记录--h5端调用手机摄像头实现扫一扫功能
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.前言 最近有遇到一个需求,在h5浏览器中实现扫码功能,其本质便是打开手机摄像头定时拍照,特此做一个记录.主要技术栈采用的是vue2,使 ...
- 一文搞懂idea中的根目录和路径(以Mybatis为例)
一文搞懂idea中的根目录和路径(以Mybatis为例) 在 IntelliJ IDEA 中,项目结构和组织比较灵活,允许用户根据项目需求进行定制. 1.根目录概念: 1.1 项目根目录(Projec ...
- Excel多列求平均值
数据源如下所示 需求描述:现在需要根据水果名称和月份求出对应水果的平均单价 一.添加一列辅助列(=A2&B2) 二.Ctrl+A选择所有数据插入数据透视表,选择辅助列到行,客单价到值(值字段设 ...
- dynatrace统计sql执行时间要考虑网络延时
对一个系统的功能环境做压测,响应时间特别慢,开发环境却很快. 原因是,开发的应用服务器在北方,功能的应用服务器在南方,数据库服务器共用一个,在北方. 北方的应用调北方的数据库,响应时间2s,互相pin ...
- [MySQL]流程控制语句
[版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/17991087 出自[进步*于辰的博客] 参考笔记三,P ...
- MySQL与Java JDBC数据类型对照
MySQL数据类型 JAVA数据类型 JDBC TYPE BIGINT Long BIGINT TINYINT Byte TINYINT SMALLINT Short SMALLINT MEDIUMI ...