[发明专利]日志模板生成方法及设备在审
申请号: | 201410212252.0 | 申请日: | 2014-05-19 |
公开(公告)号: | CN105095304A | 公开(公告)日: | 2015-11-25 |
发明(设计)人: | 张懋生;赵颖;朱冠宇;王元钢;赵俊峰 | 申请(专利权)人: | 华为技术有限公司;清华大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京同立钧成知识产权代理有限公司 11205 | 代理人: | 刘芳 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 日志 模板 生成 方法 设备 | ||
技术领域
本发明涉及一种日志生成技术,尤其涉及一种从二进制代码中抽取的日志模板生成方法及设备。
背景技术
系统日志分析为集群系统故障分析检测的主要方法,当前用来作为分析对象的系统日志主要来源于3种渠道:调用日志生成应用接口、记录控制台日志信息和查看日志生成文本,通过以上渠道得到的系统生成日志文本,数量庞大,信息冗余且结构化特征不明显,需要进一步对系统生成日志文本进行结构化处理,即从系统生成日志文本中抽取日志模板,目前主流的日志模板生成一般采用从系统生成日志文件的单条日志中用统一符号代替变量信息(如时间戳、机器节点号、IP地址和文件路径等),建立初始模板,并对所有日志条目通过字符串相似度运算、索引运算或者聚类等算法,最终确定由主干信息和统一符号组成的日志模板,然而由于系统配置不同、运行环境多变、运行任务多样以及系统升级补丁等因素,使得系统生成日志会因不同的运行环境、不同的系统软件配置、不同的任务输入等因素产生差别很大的输出文本,若直接以系统日志输出文本提取日志模板进行分析具有不确定性和不完整性的缺陷。
目前,为了解决因系统配置不同、运行环境多变、运行任务多样以及系统升级补丁等造成的从系统日志文件中提取日志模板的不完整和不准确的缺陷,现有技术中采用直接从系统源代码中提取日志模板,得到日志的原生结构化信息,并且覆盖所有可能的日志模板,其主要方法是从编译前的高级语言系统源代码入手,在源代码文本中通过字符解析的形式解析出日志主干信息的字符串常量,再根据代码逻辑列出字符串常量所有可能的组合方式,最终将主干信息拼装到一起,得到日志模板。
然而,很多商业软件、系统补丁升级、大型系统软件的很多静态链接库和动态链接库不提供源代码,所以无法根据源代码生成日志模板进行系统故障分析。
发明内容
本发明提供一种日志模板生成方法及设备,解决了现有技术中许多系统、应用软件无法提供源代码从而导致无法根据源代码生成日志模板进行系统故障解析的问题。
第一方面,本发明提供一种日志模板生成方法,包括:
对系统二进制代码反汇编获得第一代码;
从所述第一代码中定位日志生成核心函数、字符串常量及字符串常量地址;
根据所述日志生成核心函数对所述第一代码进行切片,获得第二代码;
根据所述第二代码构建虚拟日志生成相关函数的调用堆栈;
解析所述调用堆栈的末端函数的参数地址是否与所述字符串常量地址匹配;
若匹配,则解析出输出字符串并根据设定的格式生成日志模板。
在第一方面的第一种可能的实现方式中,从所述第一代码中定位字符串常量及字符串常量地址,包括:
如果系统二进制文件中存在符号表或单独的字符串数据段,则直接从所述第一代码的只读数据段中解析,定位所述字符串常量及所述字符串常量地址,并建立字符串常量首地址表;
如果系统二进制文件中不存在符号表或单独的字符串数据段,则根据系统生成的日志文本,建立日志语料库,从所述日志语料库的只读数据段通过解析‘/0’之间的数据,定位字符串常量,并与所述语料库相匹配,建立所述字符串常量首地址表。
在第一方面的第二种可能的实现方式中,所述从所述第一代码中定位日志生成核心函数,包括:
如果系统二进制文件中存在符号表,则根据函数名和字符串常量参数引用特征从所述第一代码中定位所述日志生成核心函数;
如果所述系统二进制文件中不存在符号表,则根据所述日志生成核心函数的模式特征进行解析,定位所述日志生成核心函数。
根据第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述根据所述日志生成核心函数的模式特征进行解析,定位所述日志生成核心函数,包括:
判断所述第一代码中的函数是否含有字符串常量参数,若含有,则记录所述函数的引用地址;
判断所述函数的调用次数是否超过预设阈值,若超过,则根据依赖关系遍历所述函数的引用函数链;
判断所述函数的引用函数链末端是否为系统内核写文件函数或动态链接库函数,若是,则将所述函数定义为所述日志生成核心函数。
根据第一方面、第一方面的第一种至第三种可能的实现方式的任意一种,在第一方面第四种可能的实现方式中,所述根据所述日志生成核心函数对所述第一代码进行切片,获得第二代码,包括:
将所述第一代码中最顶端的所述日志生成核心函数定位为起始入口;
将所述日志生成核心函数所调用的写文件函数或动态链接库函数定位为终点出口;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司;清华大学,未经华为技术有限公司;清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410212252.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:搜索方法和设备
- 下一篇:一种页面推荐方法和装置