日志·一段关于机器的“历史”

历史,让我们不再犯前人犯过的错误。   日志重要么? “May 4,1823.No food for 71 days. I am the only one left alive。”在航海日志中写下这段话的“珍妮”号帆船的船长被发现时仍坐在他的...

历史,让我们不再犯前人犯过的错误。

 

日志重要么?

May 41823.No food for 71 days. I am the only one left alive。”在航海日志中写下这段话的珍妮号帆船的船长被发现时仍坐在他的椅子上,手里拿着钢笔,这一幕直到17年后才被人发现。他和船上其他6名船员的尸体被南极洲海域极端寒冷的天气保存了下来。

——幽灵船珍妮号

最著名的东海岸鬼船即为卡罗尔·迪林号,当时这艘船从南美洲运输煤炭,它在1921年行进到北卡罗莱纳州,哈特拉斯角附近时搁浅,而且搁浅在臭名昭著的钻石浅滩,要知道,这里是有名的“船只杀手”。当海上救卫队经过几天跋涉到达时,发现该船已经废弃,导航设备、航海日志连同船员和两艘救生艇一起失踪现场没有任何打斗痕迹。与此同时,其他一些船也神秘失踪。最流行的说法是这艘船被海盗劫持,或者内部发生内讧,因为卡罗尔·迪林号的大副与船长有仇,不过这个说法没有证据;也有人说船可能遭到超自然力的攻击,理由是船通过可怕的百慕大三角区。

——鬼船卡罗尔·迪林号

看了上面两个不太完整的故事也许读者会有很多疑问,如:

1.  说好的日志重要性呢?

2.  日志和航海有什么关系?

3.  ……

读者莫急,听我慢慢道来。公元15世纪得益于造船技术的飞速发展开始的大航海时代,第一次开启东、西方贸易互通与文明互联。同时也让人类知道,哦!地球原来它是圆的。由于人类受到科技水平所限,航海始终是种冒险,事故频繁人所共知,当然人类也很聪明将以往失败的经验,日常总结的规律登记于册,以便后来者效仿学习,渐渐形成了航海日志。

回头分析上面说到的“事故”我们得到初步信息是:

1.               通过航海日志看出,珍妮号出事的时间是182354日左右,有71天没有食物了,最后时刻只剩船长一个人。一些补充资料说明当时珍妮号是被海冰困住而遇难的。

2.               通过迪林号事故我们发现所有事故的根因分析的说法都是猜测,因为没有人证以及关键信息记录——航海日志。

3.               有太多信息的缺失从而造就了幽灵船的传说。

分析结论:

 有明确时间戳、人物以及事件描述的日志记录可以还原或大致还原事故的成因,为根因分析(或排障)提供参考线索。丢失了日志就会很麻烦比如影片《全球风爆》中丢失的操作日志,而无法及时停止“Dutch Boy”的疯狂攻击。有句老话讲“如果你找不到问题,那么你怎么解决呢?”日志的重要性,不言而喻。

小知识:

当翻开厚厚的牛津词典搜索log的时候,会发现下面一段话:Log bookan official record of events during a particular period of timeespeciallya journey on a ship or plane(尤指)航海或航空日志。

那么科技发达的现代对航海日志有什么样的要求了呢?

《中华人民共和国海商法》第三十八条 船舶发生海上事故,危及在船人员和财产的安全时,船长应当组织船员和其他在船人员尽力施救。在船舶的沉没、毁灭不可避免的情况下,船长可以作出弃船决定;但是,除紧急情况外,应当报经船舶所有人同意。弃船时,船长必须采取一切措拖,首先组织旅客安全离船,然后安排船员离船,船长应当最后离船。在离船前,船长应当指挥船员尽力抢救航海日志、机舱日志、油类记录簿、无线电台日志本航次使用过的海图和文件,以及贵重物品、邮件和现金。

航海日志应该记录什么呢?

航海日志记载事项包括航向、航速、航位、气象、潮流、海面和航道情况、燃料消耗、旅客上下、货物装卸以及船舶在航行和停泊时所发生的重大事件等。航海日志是船舶日常工作的记录,检查船员值班责任的依据,也是处理海事时所必须引用、且能在法律上起作用的原始资料。所有与航行有关的重要事件应由有权的船上官员记录。船上的日志不能只有一份。

从上面的规定得到了什么启示呢?

1.               日志很重要。

2.               日志记录要详细。

3.               日志要保留好。

小知识:

飞机上记录航行数据的设备叫黑匣子,是一位墨尔本工程师在1958年发明的。1908年,美国发生了第一起军用飞机事故。此后,随着飞行事故不断发生,需要有一种追忆事故发生过程原因的仪器。一般飞机上会在首、尾分别安装1个黑匣子,一个用于记录舱音信息在前,一个记录飞行数据在尾。有意思的是“黑匣子“本身并不是黑色,而是醒目的橘色,带有反光条。之所以称为”黑匣子“是因为它的数据是需要专用设备读取的。另外一般出现空难事故后“黑匣子”经常被火烧至黑色因此得名“黑匣子”。(来源百度百科)

 

日志应该是什么样的?

纵观历史最近一百年最伟大的发明家当属程序员了,改变着世界一次又一次,速度之快让人应接不暇。当然成功总不是一帆风顺的,当你在享受智能应用带来的便利的时候是Coder们一次又一次的查找、修复Bug,运维人员一次又一次的背锅与吐槽。为了客户的体验,解决问题(或排障)的速度成了权重最高的指标之一。

那么一个简单问题来了,当计算机或业务系统出现故障时如何快速定位?

1.               经验丰富的人(即清晰知道业务逻辑以及程序处理逻辑的人)会先看业务模块日志或对应代码,当然我们也知道这并不是唯一途径。

2.               小白处理的逻辑是“网管!业务出问题啦。”随着时间的推移事件最终演变成了“事故”(事故即业务长时间受影响造成损失扩大)。

    有读者会问,为什么你没有提到网络抓包呢?这是一种方法,针对这个问题举个简单的例子:网络抓包工具需要在网络有流量的情况下才可以抓到。如果一台核心业务主机服务挂了没有了响应报文你去哪里抓包?包都抓不到又如何定位问题?

读者的另外一个疑问,有的机器不打日志啊。这个问题可以回溯到上面两个故事的分析结论。另外根据最新的网络安全法规定日志是需要定期保存并且能够根据要求进行审计。如果没有能够体现整个交易过程日志与运行错误日志,出现故障的时候就只能盲猜或者准备投简历了。

回到题目,好的日志应该是:

1.               一个事件要有一个完整的时间戳,用来体现事件发生时间,如:“2017-11-23 23:23:21,444

2.               事件需要能够分级别打印根据需要调整日志级别。

3.               各级别日志一定要格式统一便于查看,描述信息清晰易懂,特别是ERROR日志或WARNING类错误日志。

4.               如果是业务日志最好包含交易要素,各业务系统统一流水,错误码(状态码或返回码),交易码,发起方机构码、业务类型、发起端标示(IP)等包含且不仅限于上述要素。通常采用xmljsonkv方式。但是切记key不要为随机变量。

5.               日志中各字段位置固定,有明显的分割符。

6.               日志文件写入一定大小后可以自动滚动备份。

7.               切记日志服务的对象不是开发者一个人。

       笔者之前看过一个比喻日志的角色应该像教练或医生,当系统出现故障时,可以通过日志快速定位问题(医病)。通过日常分析日志会了解到当前业务系统或应用系统存在缺陷进行改进(诲人不倦)。

 

日志应该如何管理?

首先《中华人民共和国网络安全法》第二十一条对日志有明确规定“采取监测、记录网络运行状态、网络安全事件的技术措施,并按照规定留存相关的网络日志不少于六个月;”也就是说日志保留以及集中管理是最根本也是必要的措施。那么日志仅仅存储6个月就可以了么?根据相关规定必要时还需要对该日志可以进行审计。那么问题来了6个月日志,以普通银行日志每日100G(这不算大了)日增量计算数学好的朋友们应该大致估算出大约18T日志。如果按照每日一个文件夹每个文件夹下不同业务系统分类存储,那么用shell命令找定位一个关键字的时候很可能找到你吐血。不过不用担心日志易的程序员们在网络安全法实施之前就已经想到了如何解决这个问题。在深圳某科技公司采用日志易管理日增量20T数据时关键字查询秒秒钟即可返回结果。

看官们可能要问两个问题:

1.           这段主题不是日志如何管理么?

2.           不就是集中管理么好多软件都可以做啊?

回答问题1:其实笔者只想说专业的事情交给专业的工具来做就好了。好比一个人无比信赖百度百科。但是生病了依然要去找专业医生一样。找日志易从架构到方案、最终落地一气呵成。

回答问题2:老板和员工最大的区别是什么?员工工作只看局部,老板才是掌控全局的人。日志集中管理仅仅是第一步而已。

 

日志·一个待挖掘的金矿

曾几何时,敏锐运营经理和工程师们就发现日志中蕴含的价值。我们看一个简单日志信息

119.75.213.20--[02/Feb/2016:17:44:13+0800]"GET /cxbddownload.xlxs HTTP/1.1"404209"www.baidu.com""Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 

119.75.213.20:对日志进行解析会发现这是一个来自北京海淀区的用户。

02/Feb/2016:17:44:13 +0800:访问时间

GET:访问方法

/cxbddownload.xlxs:访问路径

404:访问状态

209:耗时

www.baidu.com:上一跳

Mozilla/5.0:浏览器

未完待续.....

  • 发表于 2018-05-07 22:42
  • 阅读 ( 1964 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
疯狂的馒头

边缘人

2 篇文章

作家榜 »

  1. 日志易 24 文章
  2. admin 15 文章
  3. 日志易小A 2 文章
  4. 疯狂的馒头 2 文章
  5. 腾龙国际娱乐 1 文章
  6. rizhiyi509 1 文章
  7. Xiaoyu 1 文章
  8. 陈晨 0 文章