OpenStack日志事件发生时间分析
日志格式
时间戳,进程ID,日志级别,代码模块,request信息,日志内容,代码路径(如果是DEBUG级别)
(常用日志级别 - [ DEBUG,INFO,WARNING,ERROR ])
e.g., 2017-01-05 13:25:35.414 1171 DEBUG oslo_service.periodic_task [req-2303f9f9-e637-430c-910e-376b6834d9af - - - - -] Running periodic task ComputeManager._reclaim_queued_deletes run_periodic_tasks /usr/lib/python2.7/site-packages/oslo_service/periodic_task.py:213
注意:分析关键需要用到时间戳字段,可以用Python自带包,将字符串转换为datetime对象,以方便处理
from datetime import datetime # t1和t2即为时间戳,e.g.,2017-01-05 13:25:35.414 t1 = datetime.fromisoformat(t1) t2 = datetime.fromisoformat(t2) # 计算时间差 (t1-t2).seconds
时间分析
分离日志事件(常用方法是日志解析,解析方法可参考的文献较多)
结合openstack的日志特点的方法:
首先可以截取 日志级别+代码模块+代码路径 作为第一级
然后按需提取日志内容的常量部分(即不含参数的部分)作为第二级,比较简单的方法就是把含数字的词当成参数
可视化分析
分析目的:查看日志事件出现的情况,包括日志事件的出现频率、各个日志事件出现的顺序
图的数据源为来自计算节点的服务进程nova-compute的日志,横坐标为时间线,表示距离起始时间过了多少秒,纵坐标表示的是不同的第二级日志事件(图标题为第一级日志事件)
从下面的第一个图可以看出:
- 这些事件的发生大致具有周期性,多数日志事件发生间隔为 60s 左右,有些间隔120s,甚至更长
- 有一些日志事件发生的时间点差不多
从下面的第二个图(除第一个图中呈现的事件之外的其他事件)可以看出:这些事件大致伴随着图一中的事件的发生而发生
以上就是简单的将日志事件的发生情况进行了可视化,可以方便观察整个各个服务进程的执行状态,做一个全局性的观测。
后续还会陆陆续续做一些进一步的日志分析,敬请期待~~