一个成功的软件,全力开发的时间可能占其整个生命周期的1/4还不到,软件发布后要运维(Operation),运维的视角和开发的视角是很不一样的,但是有一点,运维的数据能反哺开发,同时,开发的时候也得考虑可运维性,其中非常重要的一点是日志,没有日志,运维就瞎了大半。怎么写日志,就得从运维的需求来看了,通常会有以下一些常见的场景(已典型互联网应用为例):

1. 访问来源,包括访问量,访问者数据,如用户名、IP等等。

2. 基于上一点细化,访问的接口,读、写、删……

3. 软件系统内部的核心链路,比如我这有个系统要在中美直接同步文件,那同步的情况运维的时候就要掌握。

4. 软件系统对其他所依赖系统的访问情况,比如我这个系统依赖一个分布式缓存,那访问缓存的量、是否超时等情况需要了解。

5. 系统异常,比如磁盘满了。

记录这些信息的目的大抵有:帮助分析系统容量方便扩容;在系统某些部分工作不正常的时候及早发现;发生严重故障后方面定位问题原因。认识到这些需求后,下一步就是怎么实现的问题了。

前面提到的5点,有些可以通过抛异常实现,例如访问分布式缓存超时,有些则显然不是异常,例如就是正常的缓存访问。我觉得可以用一种统一、规范的方式记录,这种方法就是打码。我记得以前用Windows 98/2000的时候,经常会遇到蓝屏,蓝屏上会有一堆我看不懂的英文,并且总是伴随着一个错误码。

虽然我看这玩意儿没一点好心情,但我相信微软的工程师肯定能从那个奇怪的状态码上判断出是哪里出了问题,硬盘坏道?光驱卡死?诸如此类……其实类似的做法数据库也用,比如MySQL。

用统一的代码表示错误(也可以表示正常但核心的业务点)最大的好处就是便于搜索、统计和分析,在动辄数以万行记的日志文件中寻找感兴趣的信息,一页一页翻看是不现实的,稍微做过点运维的必然会用上 grep,awk,wc 等工具,这个时候如果信息都有代码标识,那真是再方便不过了!例如,我用代码 FS_DOWN_200 表示对系统的正常下载访问,日志是写在 monitor.log 文件中的,我就可以使用一行shell统计4月22号5点到6点之间的正常访问量:

  1. $ grep FS_DOWN_200 monitor.log | grep "2014-04-22 05:" | wc -l

具体每条日志记录什么,那就是更详细的了,基本就是时间、日志编码、额外的有用信息,如:

  1. 2014-04-22 05:06:18,561 - FS_DOWN_200 216 UT8TFSDXc8XXXagOFbXj.jpg

除了时间和日志编码外,还有响应时间(216ms)和具体访问的文件名。

当然如果你有日志监控和分析系统就更棒了!你就可以在系统中录入关键字监控,比如每分钟统计次数,然后看一天、一周的访问量趋势图。进一步的,如果这个量发生异常,让系统发出报警。如果没有关键字,从海量日志中分析纷繁复杂形态各异的信息,再监控,是非常难的一件事情。

为什么要把日志代码设计成 FS_DOWN_200 这样子的,下面稍微解释下,这个代码分成三段:
1. FS: 表示我们的系统,这是最高的级别,公司中有很多系统,那各自定义自己的标识。
2. DOWN: 表示我们系统中的一个核心业务点或者对其他依赖系统的访问,还可以是UP(上传),SYNC(同步),或者TAIR(对缓存系统访问)。
3. 200: 具体健康码,参考HTTP规范,200表示OK,其他包括404(不存在),504(超时)等等。

有了这些代码,再结合公司的监控系统,我们做统计分析就非常方便了,每天多少下载、多少上传、多少成功、多少失败、对其他依赖系统访问多少量、多少失败率,一目了然。进一步的加上监控,当某些值突然发生变化,比如下载量/上传量暴跌、访问其他系统依赖超时大量增多,就能及时响应。

日志对于运维实在太重要了,而如果不接触运维,又怎能理解其真正的需求,因此我说,不做运维,不懂日志。

转载于:https://blog.51cto.com/lucifer119/1401472

日志对于运维的重要性相关推荐

  1. IIS日志-网站运维的好帮手

    目录 IIS日志包含了哪些信息 IIS日志的配置 如何分析IIS日志 推荐的IIS日志分析方法 IIS日志中的异常记录 再谈 scwin32status=64 寻找性能问题 寻找可改进的目标 程序架构 ...

  2. jstack 脚本 自动日志_运维老司机又翻车, 居然没用过日志切割Logrotate

    运维老司机又翻车, 居然没用过日志切割Logrotate 作为一个运维老司机, 这次又翻车了.只能说明一个原因, 就是菜, 所有才要多学习. 说起日志切割, 自己可以说是溜的一批.基本的套路就是在cr ...

  3. docker 主进程 日志_运维笔记--docker高效查看后台日志

    场景描述: 应用程序运行在 Docker环境中, 经常使用的查看后台日志的命令是:docker attach 容器名 该命令优点:实时输出: 不足之处:日志大量输出的时候,屏幕一闪而过,不便于调试, ...

  4. mysql的告警日志_运维日记|MySQL关于aborted告警日志的分析

    又是一个季度一次的现场巡检,期待数据库能跑的又快又稳,毕竟这是对DBA最大的馈赠了. ​ 结果不遂人意发现在错误日志内存在大量的如下报错: 查看当前数据库的状态值: 查看数据库关于数据库会话的关键参数 ...

  5. 服务器硬件和算力,硬件科普Filecoin运维交付之业务部署

    随着Filecoin存储体量的不断增加,"运维"的重要性在这个行业里也愈发凸显.如何将每个环节的各种因素变得可控:一方面需要对硬件环境进行预检措施,以高效应对突发事件:另一方面也需 ...

  6. 数字化时代下,智能运维全栈监控解决方案及案例盘点

    云智慧 AIOps 社区是由云智慧发起,针对运维业务场景,提供算法.算力.数据集整体的服务体系及智能运维业务场景的解决方案交流社区.该社区致力于传播 AIOps 技术,旨在与各行业客户.用户.研究者和 ...

  7. 自动化运维saltstack(资源)

    2019独角兽企业重金招聘Python工程师标准>>> 简介 SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp ...

  8. 【双11“超级工程”】当当网:细节决定成败——运维人双十一怎么过?

    点击蓝色字关注 "数据库技术大会" 一起玩耍哦~ 作者 | 徐莹 编辑 | 赵钰莹 卷首语 每年双十一,不仅是剁手族的狂欢节,更是各大电商技术团队技术水平与技术创新实践检验的舞台, ...

  9. 当当网双11超级工程:运维人双十一怎么过?

    每年双十一,不仅是剁手族的狂欢节,更是各大电商技术团队技术水平与技术创新实践检验的舞台,不断创新高的销售额.交易峰值.支付峰值,这些惊人数字的背后都离不开强力的技术支撑.IT168希望通过技术报道的形 ...

最新文章

  1. 热门 | Google Brain前员工深度盘点2017人工智能和深度学习各大动态
  2. R语言单变量分析实战:汇总统计(Summary Statistics)、频率表(Frequency Table)、图表(charts: boxplot、histogram、density)
  3. 10 Windows编程——鼠标消息
  4. 第五周项目四-长方柱型(2)
  5. 001考试类小程序设计方案简要需求分析和数据库简要设计
  6. 配置文件http://www.cnblogs.com/Jevon-ran/p/7112007.html
  7. hp 服务器系统无法启动不了怎么办,HP Elite X2 1011 G1 笔记本电脑 - 电脑无法启动至预启动执行环境...
  8. [Python爬虫] 在Windows下安装PhantomJS和CasperJS及入门介绍(上)
  9. 鸿蒙空间是什么星辰变,飞升之后做什么《星辰变》神魔妖界收伏奇珍异兽
  10. 查找占用内存最大进程所在路径命令
  11. jquery的extend和fn.extend
  12. 如何在 Mac 上使用剪贴板?
  13. TextWatcher
  14. 分布式数据库系统体系结构
  15. linux 触控板 不识别,关于Ubuntu下触摸板失灵的解决方法一例
  16. ubuntu18.04在状态栏显示网速
  17. linux系统的负载
  18. lpk劫持方式粘滞键后门后门T00ls Lpk Sethc v3.0 正式版下载
  19. 全网最详细的渗透测试靶机实操步骤——vulnhub靶机实战(七)IMF【包含了sql注入,文件上传,gif图片木马制作,缓冲区溢出漏洞sploit等诸多知识点的靶机,超多干货】
  20. 游虎DOTA专区 - 内容丰富的DOTA专区,DOTA录像分析很不错的..

热门文章

  1. cython php,【整理】Cython返回C/C++ struct类型数据 | 勤奋的小青蛙
  2. [码海拾贝 之TC] 呼叫外部应用程序或脚本
  3. Java Applet 问题汇总
  4. EMC -- Windows下卸载 Content Server
  5. pgsql 筛选中文字符正则_PostgreSQL正则及模糊查询优化
  6. 删除还原点 oracle,oracle 还原点(restore point)
  7. GitHub上如何创建文件夹
  8. python中哪些是无序_Python笔记 【无序】 【三】
  9. javaSE回顾---变量
  10. linux apache smtp,Linux 使用msmtp 发送邮件