解决方案:程序日志处理挑战与方案

优采云 发布时间: 2022-11-26 14:19

  解决方案:程序日志处理挑战与方案

  本文作者:简志,阿里云计算资深专家,擅长领域日志分析处理。

  程序日志(AppLog)有什么特点?

  内容最全:程序日志由程序员给出,重要的位置、变量值、异常都会被记录下来。可以说90%以上的线上bug都是通过程序日志输出来定位的

  格式比较随意:代码往往由不同的人开发,每个程序员都有自己喜欢的格式,一般很难统一,引入的一些第三方库的日志样式也不同

  具有一定的共性:虽然格式是任意的,但一般都有一些共性。例如,对于 Log4J 日志,需要以下字段:

  时间

  等级

  在文件或类(file or class)

  电话号码

  线程号(ThreadId)

  处理程序日志的挑战是什么?

  1、数据量大

  程序日志一般比访问日志大一个数量级:假设一个网站一天有100万次独立访问,每次访问大约有20个逻辑模块,每个逻辑模块中有10个主要逻辑点需要记录.

  那么日志总数为:

  每个长度为200字节,则存储大小为

  随着业务系统的复杂化,这个数据会越来越大。一个中型网站每天登录 100-200GB 是很常见的。

  2. 多台分布式服务器

  大多数应用程序都是无状态的,运行在不同的框架中,例如:

  服务器

  码头工人(容器)

  函数计算(容器服务)

  对应的实例数会从几到几千不等,需要跨服务器的日志采集方案

  3、运行环境复杂

  程序落在不同的环境中,例如:

  应用相关的都会在容器中

  API相关日志会在FunctionCompute中

  传统 IDC 中的遗留系统日志

  与移动相关的日志位于用户站点

  浏览器中的网页(M站)

  为了获得全貌,我们必须统一和存储所有数据。

  如何解决程序日志记录需求

  1.统一存储

  目标:将各个渠道的数据采集

到一个中心化的中心,这样后续的工作只有在它们连接起来的时候才能完成。

  我们可以在日志服务中创建一个项目来存放应用日志。日志服务提供了30多种日志采集方式:无论是埋在硬件服务器中,还是网页上的JS,还是服务器上输出的日志,都可以实时采集。在列表中找到。

  在服务端日志上,日志服务除了使用SDK直接写入外,还提供了一个方便、稳定、高性能的Agent——Logtail。logtail提供windows,

  

" />

  linux有两个版本。在控制台定义机器组并配置日志采集后,即可实时采集业务日志。这是一个 5 分钟的视频。

  创建好日志采集配置后,我们就可以对项目中的各种日志进行操作了。

  可能有人会问,日志采集代理有很多,有Logstash、Flume、FluentD、Beats等,那么Logtash和这些相比有什么特点呢?

  简单易用:提供API、远程管理和监控功能,集成阿里巴巴集团百万级服务器日志采集和管理经验,配置一个采集点到几十万台设备只需几秒

  适应各种环境:无论是公网、VPC、自定义IDC等均可支持,https和断点续传功能,轻松访问公网数据

  性能强,资源消耗极小:经过多年磨练,性能和资源消耗均优于开源,详见对比测试

  2.快速搜索定位

  目标:无论数据量如何增长,服务器如何部署,都能保证定位问题的时间是恒定的

  例如,订单错误和长时间延迟。如何在一周的几TB数据日志中快速定位问题。它还将涉及各种条件过滤和故障排除。

  比如程序中记录延迟的日志,我们排查延迟大于1秒,方法以Post开头的请求数据:

  对于收录

error关键词 但不收录

merge关键词 的日志

  当天的结果

  本周结果

  更长的结果

  这些查询在 1 秒内返回

  3.关联分析

  有两种类型的关联,进程内关联和跨进程关联。我们先来看看两者的区别:

  进程内关联:一般比较简单,因为同一个函数前后的日志都在一个文件里。在多线程链接中,我们只需要根据线程Id进行过滤即可

  跨进程关联:跨进程请求一般没有明确的线索,一般通过RPC中传递TracerId来关联

  3.1 上下文关联

  点击上下文查询后,会跳转到前后N个上下文

  显示框可以通过“早期”和“更新”等按钮加载更多上下文

  也可以点击“返回正常搜索模式”,通过过滤框进一步调查过滤ThreadID,精准上下文过滤

  更多上下文查询文档请参考文档索引查询下的上下文查询

  3.2 跨进程关联

  跨进程关联也称为 Tracing。最早的作品是谷歌在2010年大名鼎鼎的《Dapper,一个大型分布式系统跟踪基础设施》,后来开源社区借鉴了谷歌的思想,做出了各种已经平民化的Tracer版本。比较有名的有:

  Dapper (Google):每个追踪器的基础

  StackDriver Trace (Google),现在兼容 ZipKin

  Zipkin:twitter 开源 Tracing 系统

  Appdash:golang 版本

  

" />

  鹰眼:阿里巴巴集团中间件技术部研发

  X 射线:AWS 在 Re:Invent 2016 上推出技术

  从头开始使用 Tracer 相对容易,但在现有系统中使用它成本高且具有挑战性。

  今天我们可以基于日志服务实现一个基本的Tracing功能:在各个模块的日志中输出Request_id、OrderId等相关的标志字段,通过在不同的日志库中查找得到所有相关的日志。

  比如我们可以通过SDK查询前端机、后端机、支付系统、订单系统等日志,得到结果后做一个前端页面关联跨进程调用

  综上所述,下面是基于日志服务快速搭建的追溯系统。

  4、统计分析

  找到特征日志后,我们有时希望做一些分析,比如网上有多少种不同类型的错误日志?

  我们先查询“__level__”的日志级别字段,得知一天有2720条错误:

  接下来我们可以根据file和line这两个字段进行统计聚合(确定唯一的日志类型)

  可以得到所有错误的类型和位置的分布

  其他包括基于错误代码和高延迟等条件的 IP 定位和分析。更多信息请参考访问日志分析案例。

  5.其他

  1.备份日志审计

  日志可以备份到存储成本较低的OSS或IA,也可以直接备份到MaxCompute。详见日志投递

  2. 关键词闹钟

  目前报*敏*感*词*式有以下几种

  1.将日志查询保存为日志服务中的定时任务,并对结果进行告警,见文档

  2.通过云监控日志告警功能,见文档

  3、日志查询权限分配管理

  开发、PE等权限可以通过子账号+授权组的方式进行隔离,见文档

  最后,让我们谈谈价格和成本。程序日志主要使用日志服务LogHub + LogSearch功能。这是与开源解决方案的比较。查询成本是开源方案的25%。使用起来非常方便,让您的开发工作更有效率。

  往期精彩文章

  1个

  2个

  3个

  4个

  -结尾-

  云栖社区

  ID:云栖

  云计算丨互联网架构丨大数据丨机器学习丨运维

  解决方案:《自适应-体育新闻》帝国CMS模板(自适应

  源码名称:(自适应-体育新闻)帝国CMS模板足球篮球资讯门户源码带多站采集

  关键词:首页NBA 英超 西甲 德甲 意甲 欧冠 法甲 亚冠 CBA

  说明:主要为您提供国内足球、国际足球、NBA、CBA、综合体育、奥运会、直播、彩票、竞猜等栏目,各项指标均处于绝对领先地位。

  整站模板采用自适应结构制作,抱歉MIP端是真正的三合一帝国cms源码,自适应模板方便管理权重也集中,网站打开速度快,用户体验好,栏目和子栏目可以下拉 全自动按顺序调用,网站结构简洁明了,程序仿帝皇cms7.5内核,开源无任何限制,模板按标签分类,可以使用多批次构建和MIP专用网站,内容由优采云

采集

和更新,生成和维护也很方便。

  《自适应体育新闻》帝国CMS模板开发环境:

  

" />

  帝国cms 7.5

  安装环境:

  php+mysql

  采集规则:

  收录

优采云

采集规则和模块,采集目标站和多站采集。包年获取规则更新

  

" />

  《自适应体育新闻》帝国CMS模板的优势:

  1、更新快,包更新,包安装,包技术指导,经济方便。

  2、《自适应-体育新闻》帝国CMS模板价格实惠,源码在同行业中质优价廉。本站源码采集后,经过D盾、云锁、天鹅绒扫描。

  3、一站式包安装服务,从程序上传到环境搭建所有包,自行安装免费提供专业技术支持。所有模板都有至少一年的技术服务支持!

  《自适应-体育新闻》帝国CMS源码安装不了,《自适应-体育新闻》帝国CMS源码优采云

采集规则无效,《自适应-体育新闻》帝国CMS源码最新版,找站长来解决 不用担心,小白站长真的可以上手了!

  另:如有需要,可联系站长。本站还提供网站定制、自适应改造、数据生成更新、优采云

高级伪原创API插件,可读性强,采集

效果好。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线