如何利用SLS做到端到端监控?

本文涉及的产品
对象存储 OSS,20GB 3个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
日志服务 SLS,月写入数据量 50GB 1个月
简介: 阿里QA导读:如何保证业务运行稳定?如何及时监控告警出业务运行出现的问题?对于追求精益求精的质量同学来说,端到端的把控,才让业务更信心满满的快速奔跑,请看来自阿里企业智能事业部同学的方案,是如何用技术赋能业务。一、背景


image.png

阿里QA导读:如何保证业务运行稳定?如何及时监控告警出业务运行出现的问题?对于追求精益求精的质量同学来说,端到端的把控,才让业务更信心满满的快速奔跑,请看来自阿里企业智能事业部同学的方案,是如何用技术赋能业务。

一、背景



   关于稳定性建设工作的重要性和价值点毋需多言,然而怎么落地,各业务团队皆有各自打法。去年集团安全生产小组确定安全生产核心打法,制定五大战役和两专项重保,体系化地做稳定性这件事情。其中  1-5-10故障快恢,位于五大战役之首,该策略从集团 -》部门 -》  业务线逐步推广。当时我在负责IOT电子架签系统测试,线上架签已达百万量级以上,也亟需打造一套更加灵敏完善的稳定性建设方案。我们项目组承接部门安全生产目标,经过讨论确定优先解决1-5的问题,确保线上故障能在最短时间发现,最快速定位。由于运维团队主要负责产品在门店的使用情况,对产品技术实现不甚了解,且之前我已经负责建设了一部分业务实时质量保障能力,研发提出由我来继续完善稳定性建设工作。

   稳定性建设是一项系统工程。包括监控,告警,降级,预案,演练,压测,灰度,变更管控,机制建设等。其中监控是整个方案最重要的一环,事前及时预警发现故障,事后提供数据排查问题。安全生产重点工作邮件中指出线上监控可细分为四个部分,分别是系统监控,链路监控,业务监控,SLA监控。目前集团监控工具也很多,如xflush,sunfire,alimonitor,A3,鹰眼,arms等等,能解决一部分系统监控,链路监控甚至业务监控的问题,但若要做更灵敏和更贴合业务的监控解决方案,则无法很好满足要求。因此研发经过一番调研,最终选择了SLS日志服务作为切入点,当时交给我的时候,我并未参与监控方案技术选型,也完全不知道接下来会做成什么样。随着本项工作的开展,直至完成,摸索出了一些经验。这篇文章就是在该过程中,对于用SLS日志服务能力,做业务监控最后一公里建设的方案实践总结。

二、目标


   继第一篇《基于数据的洞察分析保障电子架签稳定性》文章介绍的方案之后,我们通过建设监控能力,采用数据挖掘中统计和聚类方法,能快速发现线上问题,可是不具备缩小问题排查范围并快速定位问题产生原因的能力。我们需要接收并处理应用服务器,IOT套件,AP基站,端侧设备等,在这条链路上每个节点的日志,分别分析。对于各类IOT设备,不同的端,面向客户不同,使用场景不同,质量模型不同,唯一相同的是技术层面,研发统一将日志采集并存储于SLS中,通过这些丰富的数据源,可以实现不同监控指标的配置,从而达到实时查看运行状态,实时报警的目标。

image.png

重大活动

行政

新零售

客户

企业IT服务

大型会场

场景

办公园区

门店

机房

技术实现

SLS日志服务

基站

电子架签

工位探润器8

年会手环

会议室红外传威器

温湿度传威器

   这一系列设备相关日志陆续接入SLS。最初解决的是电子架签的监控,此后陆续完成了其他IOT类设备的监控,如手环,温湿度传感器,工位探测器等。回头来看,我把解决问题思路总结为两部分,一是定义监控告警模型指标,二是技术实现。关于第一点,主要是综合和研发,PD共同协商,来确定系统监控指标。关于第二点,主要是通过查看SLS帮助文档摸索实践,或寻求SLS同学的技术支持。

image.png

温湿度传尽器日志接入

年会手环日志接入

基站日志接入

工位探测器日志接入

电子架签日志接入

2019-07

2020-04

2020-03

2019-06

2019-09

image.gif


三、解法



3.1 数据提取

3.1.1 json.json格式解析

   温湿度传感器原始日志参数message,是一个json.json格式数据,解决方案如下:

       a. 通过json_extract 解析message字段,根据参数key查询数值;

       b. 通过cast将结果转成字符串类型;

       c. 查询结果通过having语句进行设备类型过滤;

   查询代码:

https://help.aliyun.com/document_detail/63454.html?spm=5176.11065259.1996646101.searchclickresult.943d6e26ZifWxQ

   查询结果:

jsonjson.png

日东省沈aq1店司

炒期12

天栓日末

省询牛采

3.1.2 json.array.json格式解析

   基站原始日志数据有个参数jsonData,是json格式,包含多个station列表,每个列表元素,又是一个json串,解决方案如下:

       a. 通过json_extract 先解析jsonData字段,取出其内层的station字段,返回json类型;

       b. 通过cast 将station转换成 array(json) 类型;

       c. 通过unnest 把array(json) 展开成多行以t来命名新生成的临时表,每个json值写入每一行中,行的名称为d,使用d来引用展开后的列

       d. 通过 json_extract_scalar 解析d的指定列,返回字符串类型;

   查询代码:

https://help.aliyun.com/document_detail/84586.html?spm=5176.11065259.1996646101.searchclickresult.694c66354vYp9g

   查询结果:

unest.png

sLECSetract.ccalllfooyas

联刚

日表童汽cd速句

ju援wtngaacd.

中子上部,

日述婵卉

好粒电桔

阳夹装

mm

Scn:I

童运好果

原纷日志

原给日克

   方法解析:

   有些日志数据结构比较复杂,包含json,array,或者相互构成的嵌套关系,需要层层解开,取出对应的key和value,并可能用到cast类型转换,使其提取出符合我们期望的格式数据;


3.2 数据加工

3.2.1 创建oss外联表补充字段

   温湿度传感器原始日志里,缺少机房字段,业务方期望结合机房信息发送告警。sls支持通过oss创建维表,来实现日志字段的富化,解决方案如下:

   a. 创建oss的csv文件;

   b. 在目标日志库里,通过create table xxx SQL语句创建虚拟外部表,和oss文件进行映射;

   c. 验证成功定义外部表后,通过join语法完成日志库和oss外表的联合查询;

   d. 若要增加温湿度传感器,只需要更新csv文件即可,sls的监控告警信息可自动同步;

   创建语句代码:

https://help.aliyun.com/document_detail/87026.html?spm=5176.11065259.1996646101.searchclickresult.f95384eaEsMELP

   关联查询代码:

https://help.aliyun.com/document_detail/70478.html?spm=5176.11065259.1996646101.searchclickresult.40824f0axcQk7p

   查询结果:

oss.png

XSGLSORRRA

实汛

文背

A列

Im_:harrdme

黄宴鼠路一

lip_icut_:

普:微磨道面m啡:12011

上林文惠

尖科量证

5日

h_iu5g.driinade

效普

brnant:.

骑n8:mp:202135851256手微c8C0

48R900:1

滋s:元沈中

IN-C

质尬日支

基果国味

嘉动空制店

神南外联妆流行意询

创脂o6外联去语句

原行生伴

阿保世传减特告蛋日市

传医时告富钉钉通知

[机磨伍督海度时高

A--N---.-.8ouec

   方法解析:

   有一些缺失的字段,可以用oss文件当作一张静态的维表,来关联查询,这种方法非常适用于一些场景,待监测的对象是固定的一批数据。比如一批温湿度传感器,一批工位探测器,一批测试的电子架签,一个门店的AP基站,这个方法在以下这些场景中都发挥过巨大作用:20周年的全场年会手环监控,20周年的分区域年会手环监控,双11光明顶AP基站监控,双11媒体指挥中心AP基站监控。像双11AP基站监控,是当天早上运维提供各区域的AP mac地址名单,因此当天分别创建oss外联表和分别创建告警,晚上即刻投入使用,即使封网也不受影响,相当灵活高效。



3.2.2 oss外联表字段乱码解法

   有的时候,我们会遇到这类问题,新建的oss外联表,通过sls的sql语句查询,筛选出来结果为null,无论怎么调整都不行,此时可能是源csv文件的格式出现问题,可以用下面的格式化代码,格式化源csv文件,然后用格式化后的文件替换oss文件即可。

oss_file.png

cav

合家义

FON

文件大小

虾盟门

136146KB

文件有寄数行

压结味式

HOWE

oze

预宽

性康社网s会产生Selectnnfal

望泰文家鹿

sls这边筛选出来为null,在OSS那边可以有查出来

   格式化代码:



echo 'id,a,b,c,d,e' > new.csvgrep -v 'id' xxx.csv >> new.csv


 

3.2.3 oss和sls跨域解法

   用外联表的时候,遇到一个比较麻烦的问题是,sls日志在弹内生产环境,而现在oss已是集团对外服务的中间件,部署在云上,和弹内环境属于不同集群,网络不通。此时,需要通过命令行方式创建oss文件。

   创建语句代码:

https://help.aliyun.com/document_detail/87026.html?spm=5176.11065259.1996646101.searchclickresult.f95384eaEsMELP

   查询结果:

   通过这种方式,我们可以在sls上使用oss的外联表;


3.2.4 多个日志库关联查询解法

   有时候,开发会把日志打在不同日志库里,因此我们需要关联不同日志库进行查询。有个很简单的方法,就是sls的sql语句里,用 select * from logstore_name 代替 select * from log;

   查询结果:

logstore.png

盒资1分析

Select

ack)

开配置

活左野饺数盘

预览园表

下安日市

   方法解析:

   在一个项目中,多个logstore可以直接查询,这种方法非常适合跨环境或者跨应用之间的日志串联。比如研发把同一应用日志分日常,预发,线上环境打印在不同日志库里,或者一条业务链路,需要跨越多个应用,根据关键字串联。


3.2.5 引入odps数据源解法

   有时候,我们缺失的数据,是动态生成的,而非一份静态维表数据,这种情况下,我们可以把数据从odps里取出来,设置一个定时任务,比如:每天早上6:00把数据投递到SLS上。

   ODPS投递给SLS的代码:

https://help.aliyun.com/document_detail/153354.html?spm=5176.11065259.1996646101.searchclickresult.3f6240e8CjMKHy

   投递结果:

odps.png

:TeNETME:1508696213

SLS

蓝:

ODPS

001015

12-170-1213

  该方法可以解决sls日志缺失的问题,但是有一个注意事项,投递的日志作为logstoreB,要和sls原始日志logstoreA进行join关联的时候,查询的时候需要用时间段对齐函数date_turunc对齐时间,把查询时间做个特殊处理,以保证能查询到早上6:00投递进去的logstoreA日志。

   时间对齐函数代码:

https://help.aliyun.com/document_detail/63451.html?spm=5176.11065259.1996646101.searchclickresult.1946246ce9jWaj

   SLS双流JOIN查询的加工代码:

https://help.aliyun.com/document_detail/70478.html?spm=5176.11065259.1996646101.searchclickresult.5ff333469JjXqi

3.2.6 日志库动态生成法

   有时候,我们由于日志数量太大,导致无效信息过多,需要精简,日志库在弹内生产环境,不支持数据加工功能,解决方案如下:

   a. 新建一个空logstore;

   b. 根据查询结果待转存的字段定义日志库的索引字段,确定字段类型;

   c. 通过 insert 语法,筛选指定字段投递到新日志库,字段类型同上;

   d. 把查询结果保存成告警,完成定时投递到新日志库中;

   筛选字段代码:

https://help.aliyun.com/document_detail/158012.html?spm=5176.11065259.1996646101.searchclickresult.35684853Fdcpq9

   查询结果:

insert.png

10-1713:55:32

source

tag_rceivetime1602914132

topic

alarm.cnt:9

firstt:2020-10-1713:52:35

persistt:2

加工后日志

原妞日志

   方法解析:

   该方法可以让我们更专注地关注特定日志。INSERT INTO SELECT 语句的作用是从一个表复制数据,然后把数据插入到一个已存在的表中。理论来说,这个方法可以把日志持续投递下去,从A->B->C->D 。


3.3 数据展示


3.3.1 仪表盘下钻

   有时候,我们对于监控指标数据,需要进一步分析其内容,比如对于同一类型的错误码,希望分析每一条错误日志,解决方案如下:

   a. 基于变量,配置查询日志下钻功能;

   下钻效果:

https://help.aliyun.com/document_detail/88844.html?spm=5176.11065259.1996646101.searchclickresult.29147287ZIIcEg


3.3.2 变量替换

   有时候,我们需要根据指定过滤条件,筛选各项监控指标。比如我们想根据指定门店查看架签状况。解决方案如下:

   a. 基于变量,配置变量替换,从而可以使监控指标根据我们输入参数的要求而重新查询出结果。

   技术方案链接:

https://help.aliyun.com/document_detail/93647.html?spm=5176.11065259.1996646101.searchclickresult.1c5b35e0JxmKr9

   变量替换效果:

图片.gif

品主克日

4b4...如

N77800G

0百警

二置时司

6日点

时凡8泽

日心定

女路笑庄

:0:特

cop-yrr

NULI-DONRSOR15MUD4OL

中出时

eaat-htreet-apr-lag

canllg-upormLion-log

10511110942423000721927

upS

irdctionmorog

rAEmLSMnstoy

NTomtdSpncstcog

nemtcu-loo

生8万wwlbomoomooo

w8oooaoxo.coacooooom

一祥E

nghx

切换过滤器的值可以看到查询效果

拉型:29

-d>


3.3.3 仪表盘订阅

   有时候我们希望每天定时查看监控报表,而不需要登陆到SLS里面去。通过仪表盘订阅的方式,可以直接把仪表盘定时推送到钉钉群里,供想了解的人查看相关监控指标。解决方案如下;

   配置方式:

image.png

控座-千工眼

出全屏

编运

重赏时间

标朋设置

.分享

盯新

时间选择

口订

监控-千里眼

0告警

天于贺

门店

门店id

仪表盘订间

请钟入

请输入

cuTentstore:

基站上行

基站下行

请输入

请镇入

查询

查询

编辑订阅

编辑订阅

订阅配置

通知

订阅配置

配置钉钉机器人

监控-于里眼报表

订贸名称

B64

通知列表

HobHook-钉钉机器人x

09:00

每天

规率

WebHook-打钉机器人

配置推送时间

预设

白宠义

全月时间

https:/foaci.dratalk.com/robot/eendaccoostokon-a6q100114256

请农地址

添加水印

廊控-千里模报衷

标题

11/100

图片自动加上进知渠道地址:邮箱亟weoHoo址

   结果展示:

image.png

址T:AIHA

ES

ES

内郎

内部

每日小报

机器人

09:02

每日小报

机器人

09:04

[监控-千里眼报表]

[监控-顺风耳报表]

   方法解析:

   该方法可以方便每天定时盯屏的同学,并及时把信息同步给相关同学,或者没有SLS日志账号权限的同学。


3.3.4 控制台内嵌分享

   有时候,我们需要提供日志给没有分配账号权限的同学查询。如工位探测器信息秒级变化,业务方希望查看实时日志,并让外包同学边查看日志并核对办公区的有无人实际状况。解决方案如下:

   a. 向日志管理员申请,创建STS子账号,并进行授权;

   b. 根据获取到的AK/SK/roleArn参数,调用SDK代码,生成仪表盘访问链接;

   生成链接代码:

https://help.aliyun.com/document_detail/74971.html?spm=ata.13261165.0.0.427b8534208sNq

   方法解析:

   该方法生成的链接,只允许一人访问,且最长1小时失效;因此可以做成服务方式来提供查询能力,过期之后可触发一次调用,重新生成一个访问链接。


3.4 告警联动

   通过以上方式,处理完后的SLS日志,都可以配置成告警模式,发送钉钉机器人告警,或者邮件,或者电话,通知到相关人员,使测试能快速感知问题。

  image.png

李沁

机器人

17:01

[智能告警]

入网失败

[告警持续时间(min)2牛警次数:

基站::1F:1:7

FO

终端地

址......D..J.

首次告警时

设备类型

间:2020-10-1716:58:55]

[查看详情][屏蔽5分钟]


   SLS 本身针对告警做了统计,可以对历史告警进行分析。

image.png

出全屏

重置时间

?剧新

标题设置

分享

时间选择

告警历史统计

民于码Lcar.ds店)

告警次数今天(相对)

告警规则执行次数Top10今天(相对)

执行成功率今天(相对)

执行成功时通知率

今天(...

1.67%

4.98%

5.00%

5.00%

环比昨日

29

3c

1

通知成功次数今天(相对)

100

tracelog

执行成功率

抉行成功时通知率

8.34%

环比昨日

%

8.34%

告警历史今天(相对)

如何解

解释

错误信息

日的

通知发送

执行结果

热行时间

告蜜名称

触发条件

仪表盘

显示名称

状态

安禄禄

2020-10-17

Success

dashbe

NotNotified

gtesoeend

237-

2128:48

50740

15694

721941

14-4U00-

10

式是

322

条件表

a2b9e6549c

达式中

parameter

的变量

notfound

2020-10-17

NotNotifed

Falled

结果

不存在

21:28:44

159C-16807468

202-

-728

b1c0


3.5 解决方案成果展示

3.5.1 链路监控

image.gif

3.5.2 业务监控

image.gif

3.5.3 链路和业务监控汇聚

image.gif

3.5.4 提升测试效率

image.gif

3.5.5 全局仪表盘配置

   20周年年会手环监控大屏

image.png

星量大子旗脂合草

苏价证吃期

精更脂料

D用

20-39

岁盛火子童省型分证期

940

9co

零H0

G50

曹更香司

5040

80片

H::

7000

出鞋汉于100度咨型分鲜吃间

新光脂锅

15

B量G

中泰东量常店经O翔

精电视营件店SN

韩国脑冒艺店5

辉营体料


四、总结



   本文是对过去一年中保障的各类IOT设备,监控告警能力建设技术方案的一篇总结。核心思想是利用SLS日志服务能力,串联起各项日志,做基于业务维度指标的监控告警。通过确定质量模型,基本可做到1分钟发现问题,满足监控目标。取得的业务成果概括如下:

  1. 支撑了6款IOT设备的监控告警。
  2. 在对AP基站建设的时候,我们通过不断调整SQL语句,调试监控告警指标,从而完成了对最佳告警方式的验证,使告警更加准确,更加贴合业务,为后续工程化告警时间奠定了基础。
  3. 保障了19年双11 光明顶,媒体指挥中心的AP基站运行。
  4. 保障了AP基站终端离线的监控告警。
  5. 保障了电子架签全年线上稳定运行。
  6. 在做工位探测器测试时,引入了控制台内嵌分享技术,提升了测试效率500%;
  7. 搭建的测试服务,提供为蚂蚁行政业务方使用,便于业务方快速验证IOT设备的使用效果;

五、展望


   关于告警降噪的场景,目前没有找到合适的解决方案,这是个很有意思的场景,且是刚需场景,期待接下来进一步完善该方向的探索实践工作。

 

   写在最后

   在做业务测试和安全生产的各项工作中,不论是测试还是研发,我们依赖很多日志数据。一则可以请求研发配合进行日志埋点,二则也可以掌握一些日志加工处理的技巧,利用技术能力去处理日志,以便于在无法改变原始日志的情况,如埋点条件不具备,或遇到封网时间,或研发无开发时间投入等情况下,达到测试或监控告警的目标。最终通过提升一些日志采集,加工,处理,可视化能力,能加强对于业务的质量保障能力。文章中的各个小节内容,自成一段,可独立阅读。若内容对于你的工作有些许参考作用,便倍感欣慰了,欢迎交流指正。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
存储 Prometheus 监控
程序开发中的监控和日志分析
监控和日志分析在软件开发中至关重要,它们帮助实时了解应用状态、及时发现并解决问题。监控确保系统稳定运行,优化性能和资源;日志分析则助于追踪问题根源、监测用户行为并提供安全审计。利用如Prometheus、ELK Stack等工具可实现高效监控与日志管理,从而优化应用性能和用户体验。
170 0
|
6月前
|
运维 Prometheus 监控
监控与日志分析:运维的双剑合璧
【6月更文挑战第21天】监控与日志分析在IT运维中至关重要。监控守护系统健康,通过性能指标、服务状态和安全事件预警确保稳定性;日志分析则用于问题追踪,通过错误、访问和安全日志定位故障。监控工具如Prometheus与日志分析工具如ELK堆栈协同工作,统一平台、合理告警、定期分析和团队协作是高效运维的关键。这两者的结合助力运维人员迅速响应和解决问题,维护系统稳定。
|
2月前
|
存储 监控 固态存储
如何监控和优化 WAL 日志文件的存储空间使用?
如何监控和优化 WAL 日志文件的存储空间使用?
|
2月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
4月前
|
存储 运维 监控
监控与日志管理:保障系统稳定运行与高效运维的基石
【8月更文挑战第16天】监控与日志管理是保障系统稳定运行和高效运维的基石。它们不仅能够帮助企业及时发现并解决问题,还能够为性能调优、资源优化和业务决策提供有力支持。因此,在构建系统架构时,企业应高度重视监控与日志管理的规划和实施,确保它们能够充分发挥作用,为企业的发展保驾护航。同时,随着技术的不断进步和应用场景的不断拓展,监控与日志管理也将持续演进和创新,为企业带来更多的价值和便利。
|
3月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
328 0
|
4月前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
51 0
|
4月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
67 0
|
4月前
|
存储 运维 监控
Entity Framework Core 实现审计日志记录超棒!多种方法助你跟踪数据变化、监控操作,超实用!
【8月更文挑战第31天】在软件开发中,审计日志记录对于跟踪数据变化、监控用户操作及故障排查至关重要。Entity Framework Core (EF Core) 作为强大的对象关系映射框架,提供了多种实现审计日志记录的方法。例如,可以使用 EF Core 的拦截器在数据库操作前后执行自定义逻辑,记录操作类型、时间和执行用户等信息。此外,也可通过在实体类中添加审计属性(如 `CreatedBy`、`CreatedDate` 等),并在保存实体时更新这些属性来记录审计信息。这两种方法都能有效帮助我们追踪数据变更并满足合规性和安全性需求。
87 0
|
4月前
|
存储 JSON 监控
FastAPI日志之谜:如何揭开Web应用监控与调试的面纱?
【8月更文挑战第31天】在现代Web开发中,日志记录对于监控应用状态、诊断问题和了解用户行为至关重要。FastAPI框架提供了强大的日志功能,使开发者能轻松集成日志记录。本文将详细介绍如何在FastAPI中设置和利用日志,包括基础配置、请求响应日志、错误处理和结构化日志等内容,帮助提升应用的可维护性和性能。
162 0