我们的系统,已经接入阿里云的日志服务很长一段时间了,存了数以TB级别的日志,突然有一天,领导说,我们需要所有订单的ip信息用于审计订单的真实性,突然发现日志系统无法一次性查找到我所有需要的信息,让我很无奈,是我们没有记录吗?那我们遇到了哪些问题呢。

日志级别规范

日志级别我们已经有了较好的规范了

只在必要时打印日志

  • 面对不确定因素时(Warning/Info)
  • 订单、支付、物流等核心业务场景(Info)
  • 程序运行错误(Error)

日志内容及格式:

日志格式:

我们选择使用json格式来处理日常的日志,比较方便简洁,格式自由,另外就是使用t制表符分割,然后使用key:value格式来处理,也比较好分隔。

多行日志我们是明确禁止的,必须打成一行,并且非json,我们不予采集,因为多行和非标准的格式给我们带来了大量的麻烦,日志采集规则实在是难以覆盖

日志内容:

对于日志内容,其实这是最难做的,也是我非常想要表达的,包括我现在遇到的很多问题,也是由于内容不够结构化导致的。日志就像我们使用mongodb那样,除了唯一主键,其他的schema可以任意增加删除,这样其实给了程序员太多自由空间,必须在某些地方强制要求才可以。

所以我们在这方面做出几个改进:

  1. 使用DB里面的列名,作为日志的key,这样避免出现同义key,但是接手的人太多,每个人都有自己的命名习惯,导致最终日志无法查询
  2. 对于订单相关日志,要求同时出现订单号和用户id,以便查询
  3. 当出错时,应该打印出错所涉及的订单号和用户id,如果涉及到支付,应该打印支付渠道和支付网关的返回的订单号以便审计查询
  4. 在json的值里面不要嵌套其他类似json的内容,例如出现msg: 订单成功{info:success}这样的字符,难以解析,难以排查,并且在最终查询时只能解析部分字符串,对于后面的类json内容无法良好的处理

日志系统的边界

了解日志系统能力的边界很重要,我们目前使用阿里云日志系统,功能很强大,但是也有一些限制:

  • 索引仅对新内容有效果:可以支持三个月内索引重建,耗费大量时间金钱
  • 日志系统可能存在不完整日志情况,不能过分依赖,对于类似审计这样的需求应该使用DB
  • 同上,日志可以输出良好的报表,但是对于系统消耗也比较大,对于一些订单详情,流量,可以选择接入bi系统来处理,并使用bi的OLAP库
  • 同时在何时时机对研发进行日志系统培训,让他们用好日志系统

日志存储周期

现在很多上了kubernetes和docker,像我们是没有kubernetes,但是用的docker,本地日志不再长期保存,并且现在的主机数量以及日志数量也是难以支持研发上机查询,所以我们本地只保存不到1G的日志,其他日志由阿里云直接采集走在日志服务上汇集。

阿里云日志是支持无限期存储的,目前我们有部分比较重要的日志选择了永久保存,并定期存储到阿里云oss。

对原有日志的改造

既然一些问题已经浮出浮出水面,那么我们需要安排研发进行修改,在研发人手不是那么充裕的条件下,我们选择循序渐进,即:日志问题始终提高警惕,新的日志按照新的研发规范进行,旧的日志,随时发现随时提,随时改,随着时间推移得到一个良性的日志系统。

本文强烈推荐使用阿里云日志服务

上云必备​www.aliyun.com

日志服务_实时日志分析系统_日志管理软件_网站日志分析工具 - 阿里云​cn.aliyun.com

potainer 日志_日志系统落地:制定日志规范相关推荐

  1. Unity学习日志_动画系统简介

    Unity学习日志_动画系统简介 Animation,Legacy动画系统 若要使用Animation,需要在创建Clip之前为物体手动添加Animation组件. Animation组件面板: 属性 ...

  2. 网站日志流量分析系统之(日志收集)

    一.概述 网站日志流量分析系统之(日志埋点)这里我们已经将相关数据通过ajax发送至日志服务器,这里我只用了一台日志服务器(本机Windows环境),日志收集主要分为以下几个步骤: ①日志服务器集结合 ...

  3. es审计日志_审计系统的一剂良方——事件溯源

    大多数系统在数据库存的都是系统的状态数据,比如一个用户表可能会存用户的姓名.头像.个性签名等信息.如果只存状态数据的传统模式会有什么问题呢? 问题起源 假设你公司做了一个系统,并正式上线了.经过一周的 ...

  4. 操作 mysql 不生成日志_详解MySQL的日志

    MySQL日志 MySQL的日志记录了MySQL的日常操作和错误信息,通过这些日志我们可以知道MySQL内部发生的事情,可以为MySQL的优化和管理提供必要的信息. MySQL的日志主要有:二进制日志 ...

  5. windows 防火墙日志_如何使用Windows防火墙日志跟踪防火墙活动

    windows 防火墙日志 In the process of filtering Internet traffic, all firewalls have some type of logging ...

  6. mysql下日志_浅谈mysql下日志记录

    1,如何查看mysql执行命令历史 #.mysql_history     此文件记录了在mysql中执行命令的历史 2,事务日志: transaction log:事务型存储引擎自行的管理和使用. ...

  7. navicat mysql 日志_使用Navicat查看MySQL日志的具体方法

    使用Navicat查看MySQL日志的具体方法 发布时间:2020-05-18 14:04:52 来源:51CTO 阅读:699 作者:三月 下文主要给大家带来使用Navicat查看MySQL日志的具 ...

  8. mysql重做日志_详解MySQL 重做日志(redo log)与回滚日志(undo logo)

    前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍.相对于其他几种日志而言, redo log 和 undo log 是更 ...

  9. 怎样用java编写日志_用JAVA写一个日志类程序以供大家学习

    中华网络安全联盟    作者:jacoo    来源:本站原创    时间:2006-4-18 说明: 尽管JAVA类库和其他工具提供了不少的纪录程序运行状态的日志类,我发觉也 不是万能的,有时需要根 ...

  10. 思科关闭日志_关于思科交换机的日志配置总结

    (以下总结参考了思科 Release 12.2(46)SG版本说明书) 一.日志等级及格式 注:Level 数字越小越严重 格式列举,例如: *Nov 29 02:18:03.503 GMT: %DH ...

最新文章

  1. 基于Nginx的LVS配置 提出curl 虚拟IP无响应解决办法!
  2. 竟有内鬼!北理工硕士生「复制粘贴」论文,旷视研究员最新声明
  3. 一个交换程序的通用版本
  4. Selenium自动写公众号文章
  5. Linux 命令之 userdel -- 用于删除给定的用户以及与用户相关的文件
  6. hdu 5094 Maze bfs
  7. 漂亮的代码6:增加字符串后的数字
  8. CSDN 博客 美化 个性化
  9. 服务器外置硬盘安装教程,小容量Mac用户必看——苹果电脑外接硬盘安装windows教程...
  10. 制作纯净系统U盘教程(详细版)
  11. uni-app 使用外部.js文件定义全局变量和全局方法
  12. esb接口测试_ESB产品架构之愚见
  13. 《长安十二时辰》,作为程序员,看完我震惊了!
  14. 基于分布式的智联招聘数据的大屏可视化分析与预测
  15. FPGA开发——图像处理(包括MT9V034等摄像头学习笔记)
  16. 【蓝桥杯集训100题】scratch生日蛋糕 蓝桥杯scratch比赛专项预测编程题 模拟练习题第03题
  17. 利用Linux的/proc/stat获取指定进程的cpu占有率及内存
  18. C语言,1000以内素数排序10个为一行
  19. CMake - 使用 target_sources() 提高源文件处理能力
  20. 443端口和80端口的区别?

热门文章

  1. 现在中国是以24枚金牌位列奖牌榜3位,美国英国分列1、2位
  2. C# Excel处理工具
  3. 三十岁以前不必在乎的29件事
  4. 从中工毕业到年薪30万,我用了2年9个月
  5. 嵌入式linux文件系统
  6. c语言编辑的库存管理软件,C语言课程设计,商品库存管理系统怎么做啊?
  7. 【Pytorch神经网络实战案例】28 GitSet模型进行步态与身份识别(CASIA-B数据集)
  8. Python enum的使用总结
  9. 非线性回归(Non-linear Regression)
  10. JS高级——函数执行、作用域链内存结构图