软件工程之美
宝玉
Groupon资深工程师,微软最有价值专家
立即订阅
6723 人已学习
课程目录
已完结 54 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 你为什么应该学好软件工程?
免费
特别放送 | 从软件工程的角度解读任正非的新年公开信
学习攻略 | 怎样学好软件工程?
基础理论 (9讲)
01 | 到底应该怎样理解软件工程?
02 | 工程思维:把每件事都当作一个项目来推进
03 | 瀑布模型:像工厂流水线一样把软件开发分层化
04 | 瀑布模型之外,还有哪些开发模型?
05 | 敏捷开发到底是想解决什么问题?
06 | 大厂都在用哪些敏捷方法?(上)
07 | 大厂都在用哪些敏捷方法?(下)
08 | 怎样平衡软件质量与时间成本范围的关系?
“一问一答”第1期 | 30个软件开发常见问题解决策略
项目规划篇 (8讲)
09 | 为什么软件工程项目普遍不重视可行性分析?
10 | 如果你想技术转管理,先来试试管好一个项目
11 | 项目计划:代码未动,计划先行
12 | 流程和规范:红绿灯不是约束,而是用来提高效率
13 | 白天开会,加班写代码的节奏怎么破?
14 | 项目管理工具:一切管理问题,都应思考能否通过工具解决
15 | 风险管理:不能盲目乐观,凡事都应该有B计划
16 | 怎样才能写好项目文档?
需求分析篇 (5讲)
17 | 需求分析到底要分析什么?怎么分析?
18 | 原型设计:如何用最小的代价完成产品特性?
19 | 作为程序员,你应该有产品意识
20 | 如何应对让人头疼的需求变更问题?
“一问一答”第2期 | 30个软件开发常见问题解决策略
系统设计篇 (4讲)
21 | 架构设计:普通程序员也能实现复杂系统?
22 | 如何为项目做好技术选型?
23 | 架构师:不想当架构师的程序员不是好程序员
24 | 技术债务:是继续修修补补凑合着用,还是推翻重来?
开发编码篇 (7讲)
25 | 有哪些方法可以提高开发效率?
26 | 持续交付:如何做到随时发布新版本到生产环境?
27 | 软件工程师的核心竞争力是什么?(上)
28 | 软件工程师的核心竞争力是什么?(下)
29 | 自动化测试:如何把Bug杀死在摇篮里?
30 | 用好源代码管理工具,让你的协作更高效
“一问一答”第3期 | 18个软件开发常见问题解决策略
软件测试篇 (4讲)
31 | 软件测试要为产品质量负责吗?
32 | 软件测试:什么样的公司需要专职测试?
33 | 测试工具:为什么不应该通过QQ/微信/邮件报Bug?
34 | 账号密码泄漏成灾,应该怎样预防?
运行维护篇 (6讲)
35 | 版本发布:软件上线只是新的开始
36 | DevOps工程师到底要做什么事情?
37 | 遇到线上故障,你和高手的差距在哪里?
38 | 日志管理:如何借助工具快速发现和定位产品问题 ?
39 | 项目总结:做好项目复盘,把经验变成能力
“一问一答”第4期 | 14个软件开发常见问题解决策略
经典案例解析篇 (7讲)
40 | 最佳实践:小团队如何应用软件工程?
41 | 为什么程序员的业余项目大多都死了?
42 | 反面案例:盘点那些失败的软件项目
43 | 以VS Code为例,看大型开源项目是如何应用软件工程的?
44 | 微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?
45 | 从软件工程的角度看微服务、云计算、人工智能这些新技术
“一问一答”第5期(内含彩蛋) | 22个软件开发常见问题解决策略
结束语 (1讲)
结束语 | 万事皆项目,软件工程无处不在
软件工程之美
登录|注册

38 | 日志管理:如何借助工具快速发现和定位产品问题 ?

宝玉 2019-05-28
你好,我是宝玉。在开始学习之前我想先问你几个问题:
如果你的网站或者服务出现故障,是谁第一时间发现问题的?用户还是运维人员?
假设你的服务架构是由若干微服务组成的,其中一个微服务的异常导致了你的某个 API 请求异常,你是否能快速定位到是哪个微服务出了问题?
在部署系统后,你是否能观察出来系统的性能是上升了还是下降了?
如果你自己对这些问题的答案不是很满意,那么就可以来看看,如何借助监控和日志分析工具,或者说日志管理工具,第一时间发现线上问题,以及快速定位产品问题。

什么是日志管理?

要理解上面提到的这些问题,首先你要清楚,什么是日志管理。
日志就是操作系统和应用软件自动生成的事件说明或者消息记录,包含了时间、日志信息。举例来说,下面就是一个典型的 Web 请求日志:
10.0.1.22 – – [15/Oct/2018:13:46:46 -0700] “GET /favicon.ico HTTP/1.1” 404
10.0.1.22 – – [15/Oct/2018:13:46:58 -0700] “GET / HTTP/1.1” 200
从上面的日志中,可以看出来,日志包含两次 http 请求,它们发生的时间、请求的 URL、请求的 IP 地址、最后返回的状态码等信息。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件工程之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(9)

  • yellowcloud
    宝玉老师您好,目前我们公司是做数据共享交换平台的,目前对接了大量的汇聚共享的数据,对接这些数据也使用了大量的服务,随着对接工作的日益庞大,目前也考虑搭建一套ELK对日志进行管理。但是目前在使用过程中,我们一直在思考服务实际运行或者对接链路中那些信息需要抛给日志管理系统,目前已有的日志记录信息是请求IP、访问路由、访问时间、内容字节、参数、响应时间、报文等等,总是感觉自己在某些方面考虑不周全,无法对可能发生错误的区域进行全覆盖,宝玉老师这里有关于日志具体记录那些细节的材料吗?

    作者回复: 抱歉我没有材料来说明应该记录哪些日志。

    不过我觉得你说的这些日志信息基本上涵盖了,如果要补充的话,我建议对于每一次用户的请求,在入口处生成一个唯一的请求编号,对于这次请求经过的所有服务,都统一带上这个唯一请求编号,以后定位问题是,根据请求编号,就可以快速的发现是在哪一个服务出现问题。这是我在实践中觉得特别有效的一个字段。

    另外异常信息、错误堆栈非常有用,必须确保记录下来了。

    其实具体要哪些信息,你可以站在故障排查和数据统计的角度思考,哪些信息是有帮助的,然后记录下来。

    最重要是先搭建起来一套日志管理的体系,然后实际应用中逐步补充完善。

    2019-05-28
    4
  • 宝玉老师,我们项目是.net做的,最近想用nlog 来釆集日志到es中,但系统度量是另外的方案baidu 上都是appmetrices+influxdb+grafana,所以我想实现日志,应该放es好些,但如何同时满足度量的需求呢?因为度量本身也是基于日志

    作者回复: 我觉得不必非要强行整合在一起,因为对于监控来说,理论上来说可以有多个数据源,我对Grafana不够熟悉,不太确认但我想应该可以同时获取展示来自InfluxDB和ES的数据。

    你可以考虑以下方案(仅供参考,我没有验证过可行性):nlog的数据还是放在es,系统度量用appmetrices+influxdb+grafana,然后在grafana上集成其余的你想监控的从es查询的数据。

    我有见过类似的架构:
    wavefront(类似于grafana)获取metrices和ES查询的数据。

    2019-06-01
    3
  • hua168
    大公司系统复杂,每天产生日子很大又多,单靠人工排查肯定不行。
    是不是他们有很好的监控系统?尤其是业务监控,都做监控埋点?一般像一场马上就可以报警,有的会先自动化修复,不行的话就报警。

    作者回复: 是的,基于日志有监控系统,可以直观从图表实时看到数据变化,会有自动报警。

    数据量大不是问题,现在基于大数据的数据检索方案已经比较成熟了。

    自动修复我不知道是不是有,目前应该还不成熟,也就是自动重启下服务,未来也许会有AI能直接处理线上故障吧:)

    2019-05-30
    2
  • hua168
    像ELK收集到日志,还要做日志过滤的吧,怎么过滤,是收集的时候过滤,还是收集好再用大数据分析显示出自己需要的?
    现在有点大的单有日志监控不行,都会链路跟踪系统去跟踪哪个环节出问题

    作者回复: 拿ELK来说,是在Logstash那一层做过滤和解析,必须现过滤和解析检索才能高效。

    是的,如果系统很多很复杂,必须要链路跟踪是哪个环节出的问题。

    2019-05-29
    2
  • alva_xu
    我写过一遍关于ELK的博文《从Filebeat到Logstash再到Elasticsearch,如何搭建ELK 日志平台》https://blog.csdn.net/alva_xu/article/details/84578787,敬请指正。

    作者回复: 感谢分享,已拜读。这一篇是关于如何搭建系统的,后续是不是还会有基于这个系统集成应用程序日志,以及对应用程序监控的文章?期待:)

    2019-05-29
    2
  • 孤星可
    graylog 也不错 开源

    作者回复: 谢谢分享👍

    2019-05-29
    2
  • 请问可以通过什么系统设置响应阀值报警呢

    作者回复: 你可以搜索一下关键字:“ELK ElastAlert 报警”应该可以找到不少记录,比如说:
    https://blog.51cto.com/seekerwolf/2121070

    https://segmentfault.com/a/1190000017553282

    2019-05-29
    2
  • Charles
    我们目前用了云厂商的日志服务,尝试过自己搭和维护,实在太费劲了

    问老师一个问题,目前只放了nginx日志到日志服务做一些简单的分析,还有其他什么日志是应该放到日志服务里的?有什么比较好的实践吗?谢谢

    作者回复: 我觉得应用程序的日志也应该考虑放进去,对排查问题很有帮助。

    应用程序的异常信息、错误堆栈非常有用,必须确保记录下来了。

    举个例子来说,你的一个手机App,一些特定场景下,某个API请求出错,而这个API可能背后会连接多个服务或者数据库,这样的场景下,光靠nginx日志是不够的,必须要有应用程序的日志配合才好定位。

    你可以参考上一篇我提到了一个requestId的实践。

    2019-05-28
    2
  • 拉欧
    现在几乎所有的大厂都有一整套日志管理方案,大部分还不止一套

    作者回复: 👍确实如此,因为这样的系统对于复杂应用的故障定位来说,太有用了太有必要了。

    2019-05-28
    2
收起评论
9
返回
顶部