解决方案:程序日志处理挑战与方案
优采云 发布时间: 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插件,可读性强,采集
效果好。