免费预览已结束,剩余47页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
file2db使用手册file2db配置文件开发手册宏智科技网管产品事业部2002年4月目 录1概要介绍31.1读者需要具备的基础31.2参考文档31.3背景31.3.1为什么有file2db工具31.3.2为什么可以有file2db工具51.4入门61.4.1数据源61.4.2数据目的地61.4.3数据抽取过程71.4.4数据抽取结果92file2db开发92.1开发步骤说明92.2文件结构分析102.2.1文件头filehead102.2.2报告 report head +body+ tail142.2.3子报告块subblock142.3数据抽取定义142.3.1设定变量152.3.2创建原始表152.4编写file2db配置文件162.4.1file2db_config172.4.2head172.4.3target_database172.4.4globalvariable182.4.5var182.4.6预定义变量192.4.7filehead(可选)192.4.8filesplit (可选)192.4.9block 报告块匹配定义202.4.10line匹配表达式212.4.11filename222.4.12预处理222.4.13measurement222.4.14tablename232.4.15sourcevar232.4.16target_action232.4.17mapping232.4.18target_stat242.4.19sourcereport242.4.20body252.4.21block扫描顺序252.5转换函数和厂商模块292.5.1转换函数292.5.2厂商模块312.6运行和调试方法322.6.1运行环境322.6.2目录结构322.6.3命令行参数332.6.4调试方法343深入file2db开发413.1变量定义413.2format定义423.3block定义423.4高级block属性应用433.4.1multiple433.4.2parallel443.4.3join473.4.4sum483.4.5reset484局限和不足501 概要介绍说明:本文主要介绍v2版的配置文件编写。v1版和v2版的区别参见1.1 读者需要具备的基础1) 正则表达式2) 网管系统有关omc_id/ task_id的定义和使用3) xml4) perl基本编程1.2 参考文档1)原始表设计原理和规则_v1.01.3 背景1.3.1 为什么有file2db工具在采集系统面对的数据源中,除了数据库外,数据文件以及由人机命令得到的结果文件是一个主要部分。我们在网管系统中面对的是10多家厂商的多种设备,每种设备的数据又分为配置、性能、告警,每类数据又分为多种报告格式,每种报告格式在不同版本下可能是不一样的。毫不夸张地说,我们网管系统处理的各式各样的报告不下100种。这样,如果我们需要分析这些报告,传统的做法是对每个报告编写一段代码,这样造成了极低的效率,第一要求开发人员具有较高的开发水平,第二开发人员不能专注于文件的数据抽取,而需要兼顾程序编写的代码质量风格;第三,每段代码都有其重复之处,例如读取文件、拆分、匹配、数据变换、数据入库、出错处理、写trace等;大量的重复代码一方面不能保证统一的质量水准,一方面造成了维护、升级、交接的困难,也造成了开发周期的延长。而实际上,厂商数据格式随着版本变化而变化,用户抽取数据的需求也随着使用变化而变化,就要求我们对新的数据抽取需求能够快速反应。因此,就需要有这样一个工具,实现数据文件抽取的快速开发。为了从这些异构的原始数据文件中抽取到所需的配置、性能、告警数据并存入数据库中的原始表,同时避免分厂商开发带来的代码重用,摆脱大量繁琐的程序开发,我们设计了数据采集工具file2db。作为一个通用的工具,它提取出数据文件处理的共性,而通过与不同厂商相对应的配置文件和厂商模块来描述个性,即不同数据文件的具体结构及数据的具体处理。两者的结合,即完成了从数据文件到原始表的处理过程。这个过程可以说就是一个按规则抽取数据并归一化到关系数据库数据表中。配置文件 nokiaalcatelmotorola原始数据文件 file2db.plnokiaalcatelmotorola供应商模块nokiaalcatelmotorolarawdata table数据库图-1 file2db原理图1.3.2 为什么可以有file2db工具我们处理的文件报告都是ascii格式,有其共同之处。因为这些文件都是反映网管对象某一方面的属性,因此其格式有章可循。每个文件通常都是由一个个报告组成,每个报告都有头、身、尾,报告内容可能是一系列相对比较规整的记录。我们可以通过形式化描述的方式描述整个文件。对所有文件的处理,我们的方式都是一致的- 找出我们需要的数据,进行转换(option),然后插入到原始数据库表中。所有原始数据库表的设计思路都是统一的。由于存在着一系列的共性,我们可以采用一个通用的file2db工具,实现各类文件到数据库表的转换。1.4 入门首先我们来对file2db到底是什么有个感性认识。1.4.1 数据源这是一个alcatel处理器负荷00062报告的文本文件gmsc1_0062.txt: gmsc1 1999-08-14 00:00:17 sa 000 0000/0000/0000 seq=5568+990728 00062 measurement - statistics results of ce load observation - requested start time = 23h 0m requested stop time = 24h 0m period = 1h 0m output number = 1 last report event clock handlers messages nbr of lceid interrupts scheduled dispatched idle loops load h15a0 719981 182083 35621 255352636 8% h16c0 719980 176565 33000 253525278 8% h0560 719980 143877 10321 255250001 8% h0630 719979 141190 9867 255437840 8% h04b0 719980 128298 12227 261438612 6% h2130 719980 130171 12795 261303468 6% report follows no = 00062 1.4.2 数据目的地我们需要从该文件中提取带颜色的,下划线的数据,并把它们保存到数据库jscookdb的原始表p_alc_ceload中。p_alc_ceload的结构是:e250-/opt/js/uniload/data/dal/pm/alcatel dbschema -d jscookdb -t p_alc_celoaddbschema schema utility informix-sql version 9.21.uc5 copyright (c) informix software, inc., 1984-1997software serial number aab#j770265 table informix.p_alc_ceload row size = 75 number of columns = 7 index size = 100 create table informix.p_alc_ceload ( int_id integer, - 后处理程序填写 scan_start_time datetime year to second not null , - 从文件抽取并做日期格式转换 scan_stop_time datetime year to second not null , - 从文件抽取并做日期格式转换 mscname varchar(40,8) not null , - 从文件抽取 lceid char(6) not null , - 从文件抽取 load integer not null , - 从文件抽取 omc_id integer not null - file2db程序填写 );revoke all on informix.p_alc_ceload from public;1.4.3 数据抽取过程执行:file2dbv2.pl -f ./././dalconfig/file2db/p_alc_ygltest.cfg -o 100 -t 111 -d ././././data/dal/pm/alcatel/gmsc1_0062.txtfile2dbv2.pl是负责file db 抽取的通用工具。-f 是 file2db配置文件,解释抽取规则;-d 是需要抽取的原始文件。file2db配置文件p_alc_ygltest.cfg内容: s+ d4-d2-d2 d2:d2:d2 p_alc_ceload d+hs+d+m d+hs+d+m hw+ d+ getceloadhour(date,starttime,stoptime)scan_start_time,scan_stop_time value(omcid)omc_id where(omc_id=? and mscname=? and lceid=? and scan_start_time=? and scan_stop_time=?) 1.4.4 数据抽取结果select * from p_alc_ceload:int_idscan_start_time 1999-08-13 23:00:00scan_stop_time 1999-08-14 00:00:00mscname gmsc1lceid h15a0load 8omc_id 901 int_idscan_start_time 1999-08-13 23:00:00scan_stop_time 1999-08-14 00:00:00mscname gmsc1lceid h16c0load 8omc_id 901。 小结上面是一个file2db实例,从文本文件抽取数据,格式化到数据库表中。文件读取、分析抽取、数据格式化、入库一次性完成。对于新的数据文件,只需要编制新的配置文件,创建新的数据表,就可以进行file2db过程了。因此,这样将大大提高对各种各样的ascii报告处理的快速开发能力。2 file2db开发2.1 开发步骤说明file2db开发分为6个步骤:1) 文件结构分析2) 数据抽取分析和原始表设计与创建3) 编写配置文件4) 编写数据处理perl module (option);5) 执行file2db调试6) 测试和发布。2.2 文件结构分析在开始一切工作之前,首先需要做的就是学会形式化的分析一个文件,把一个看似复杂的文件庖丁解牛一般分析成层次清晰的结构,然后用规范化的语言来描述这个结构,从而把一个几百k甚至上兆的文件用几十行、一二百行的描述语言定义下来。注意,这里所有的文件都是指ascii文件。design of file2db formattor file structuredatablock1#sub block1#fileheadreport 1#headbodysub block2#datablock2#report 2#图-2 文件分析原理图2.2.1 文件头filehead文件头指的是一个数据文件的开始若干行,这些行的内容描述了整个数据文件的用途、归属、内容的类型等信息。一个被管网元产生的文件,有两种情况,一种是有文件头的- 说明整个文件的内容,一种是没有文件头的,在文件各个报告中自行说明内容。举例来说:图-3nokia的linkset配置报告文件是有文件头,其中“starting mml commands execution in network element: 3” 说明了该文件所属交换机 id 是 3。该信息在文件其他地方得不到。图-4 alcatel ceload 文件是没有文件头的,其中报告头部分在文件中的每个报告都出现。不存在一个全局描述的段落。 sample 1! -! log file: /m/global/home/omc/command_wnms.log! starting mml commands execution in network element: 3! date and time: 2000-01-07 22:55:21! unix user group: 201! mml command file: /m/global/home/omc/command.wnms! file format: komfile, version 3! -zznli; loading program version 3.11-0 dx 200 msc_50952 2000-01-07 22:55:28 signalling link states term link link link set unit term funct state info - - - - - 0 16 bs131 bsu-2 0 0 av-ex 1 16 bs131 bsu-0 0 0 av-ex 2 16 bs131 bsu-5 0 0 av-ex 3 16 bs131 bsu-3 1 0 av-ex 4 16 bs131 bsu-6 1 0 av-ex 5 16 bs131 bsu-2 0 1 av-ex 6 17 bs132 bsu-0 0 1 av-ex 7 17 bs132 bsu-5 0 1 av-ex command executed filehead useless datareport headbodytailblock图-3 nokia linkset 配置信息报告分析图sample 2 gmsc1 1999-08-14 00:00:17 sa 000 0000/0000/0000 seq=5568+990728 00062 measurement - statistics results of ce load observation - requested start time = 23h 0m requested stop time = 24h 0m period = 1h 0m output number = 1 last report event clock handlers messages nbr of lceid interrupts scheduled dispatched idle loops load h15a0 719981 182083 35621 255352636 8% h16c0 719980 176565 33000 253525278 8% h0560 719980 143877 10321 255250001 8% h0630 719979 141190 9867 255437840 8% h04b0 719980 128298 12227 261438612 6% h2130 719980 130171 12795 261303468 6% report follows no = 00062no filehead report headbodyblock图-4 alcatel ce load 文件分析图 sample 3 dx 200 msc_50952 2000-01-07 22:55:34 signalling link utilization active unit meters of last period: 22:00:00 - 22:30:00 (30 min) 22:50:00 - 22:55:00 ( 5 min) 3.1 3.2 3.3 3.4 3.5 3.6(5) l1 l2 l3 tot 3.6(30)l1 l2 l3 tot 3.7 l1 l2 l3 tot 3.10 l1 l2 l3 tot link 3.11 l1 l2 l3 tot = = = = = = 0 0000348235 0000000000 0000016125 0000426408 0000018066 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 1 0000506891 0000000000 0000023580 0000622714 0000026400 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 2 0000529398 0000000000 0000024587 0000646473 0000027428 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 command executedreport headbodyblocksub blockblock图-5 nokia linkset load 报告分析图2.2.2 报告 report head +body+ tail文件的主体由一个(至少一个)或者多个报告块组成。报告块由一行或者多行组成,逻辑上可分为报告头、报告体、报告尾。每部分都是子报告块组成,或者由子报告块和一行/多行混合组成。如图-2、图-3和图-4、图-5的report head/body/block/sub block等。其中,报告头report head有一些类似于file head,是一个报告中用于全面介绍本报告属性的数据,在我们实际处理中,为了简化,没有单独拿出来处理。(早期的配置文件中有拿出来的,但是似乎已无必要)报告尾是需要注意的,标志了一个报告的结束。2.2.3 子报告块subblock报告可以分解成多个重复出现的子报告块,子报告块也可以再分析成更小的子报告块,直到最终的一行。例如图-5的subblock 。最小的block就是line - 一行。文件尾文件尾基本上没有用处。在分析完文件,变成一个个报告块后,我们的工作就是在这些报告块中找到并定义我们需要的数据。后面将以图-4 alcatel ce load报告为例讲解。2.3 数据抽取定义在分析了解了文件结构的基础上,我们进一步来定义我们要抽取的数据。即如何从文件的头、报告块中抽取我们需要的数据。我们以图-4来说明。在图-4中,我们需要取交换机的cpu负荷。alcatel交换机是多处理器结构,有多个cpu,通过lceid (logical cpu element id)来区分。我们需要提取lceid字段,值出现6次,分别是h15a0,h16c0,h0560,h0630,h04b0,h2130,以及对应的load字段,值为8%,8%,8%,6%,6%。我们还需要取得交换机名称,例如报告第一行的“gmsc1”。我们也需要知道cpu负荷是什么时候的,即测量时间,报告的requested start time和requested stop time,在图-4中值为“23h 0m”和“24h 0m”。以上这些数据是我们需要的,文件中其它数据是我们不需要的,即我们需要的是:msc_name, start_time,stop_time,lceid, load。我们抽取的方式是顺序扫描数据文件,根据提供的规则找到需要的数据。因此,需要制定具体的规则,到哪一行可以找到我们要的东西。我们的规则制定是通过正则表达式来实现的。每一个报告块最终都将成为一行行ascii数据,我们通过正则表达式匹配确认该行是否有我们需要的数据,如果有则提取,否则继续,直到文件结束。正则表达式是文本分析的基础,是工程开发人员的必修课。这里不作介绍,开发人员自行解决。2.3.1 设定变量对于我们需要提取的数据,我们制定若干个变量来标识它们。变量名称通常和我们要取的数据字段名一致,例如lceid变量对应文件中的lceid。相应的变量还有mscname, date, starttime, stoptime,load。变量的属性除了名称,还有:1)正则表达式规则;2)值。一旦我们确定了我们要取得的数据后,我们需要为它们制定一个正则表达式,来形式化描述,以便我们能够从文件扫描中找到变量对应的数据。例如图-4中的”h15a0”、”h16c0”可以用 s+统一描述。当我们扫描文件,找到变量对应的位置,例如lceid变量对应的h15a0,则我们称h15a0是变量lceid当前的值。下一次扫描,可能又遇到h16c0,则h16c0为新的lceid值。因此,在变量多次出现的情况下,变量的值是可以发生变化的。但是变量的名称、描述规则是不可变化的。在描述变量时,需要考虑松紧问题。例如交换机名称msc_nj1 tmsc1_wx 之类的使用w+可以表示,但是万一出现msc_nanjing-1 之类的,用w+就不行, 因为”-“号不是w+字符,这时要用 s+才好。再例如,有时候某个数据一直都是数字编号,例如 001, 0051,1002,可以用d+,但是突然存在a001之类的编号,则d+就不行了,要用w+。所以一定要注意采集足够的样本确认变量的取值范围。原则上,在不影响处理的情况下,尽量制定的范围大一些。s+ 、w+ 、 d+是依次严格缩小范围的。2.3.2 创建原始表在确认好要取的数据之后,应设计原始表来和报告数据相对应。确认一条记录里保存的数据内容,多条记录里保存的内容,等等。网管系统中原始表的原理、创建规则见参考文档1。这里不做详细说明。需要提醒的是,必须注意原始表的unique index不要出错,要正确理解报告中反复出现的数据彼此的关系。最容易犯的错误就是弄不清原始数据之间的关系,以至于发生数据的覆盖和丢失。2.4 编写file2db配置文件file2db配置文件负责描述要处理的文本数据文件的结构,该文件可能包含一个或者多个类型的报告。对每一种格式一定的报告,我们对应建立一个称为“measurement(测量)”的描述。(实际上,用measurement比较适合称呼性能统计报告,对于配置数据文件的处理,这种称呼不甚恰当,不过为了统一,也就只有如此了)在配置文件中,我们会针对文件的头、文件名等有价值的信息设定抽取规则。我们也将在每个measurement中,对报告中出现的有价值的信息设定抽取规则。数据抽取规则包括:变量定义,变量搜索匹配规则。对抽取出来的数据,我们也设定了数据存储规则。该规则指定抽取出的数据到原始表的映射关系和数据变换方法(option),以及何时进行数据存储。为了配置文件编写的简便,数据抽取和存储规则是混杂在一起进行描述的。配置文件遵循xml格式。下面,我们逐一介绍配置文件的各个元素。下面是file2db配置文件元素层次关系图:(第2版)file2db_confighead (must)target_database (option)globalvariable(option)filehead(option)filename(option)measurement( at least 1)tablename(must)sourcevar(must)target_action(must)mapping(must)target_stat( insert &| update)sourcereport(must)filesplit(option)body(option)block( at least 1)blockblockmeasurement2.4.1 file2db_config说明:该元素为xml配置文件根元素。属性:version ,取值“1.0”为1.0版本,“2.0”为2.0版本,file2dbv2.pl支持1.0和2.0版本,file2db.pl支持1.0版本。内容:其它元素都是其内容。范例:。 具体内容 。2.4.2 head说明:描述该配置文件处理的基本信息,包括厂商、处理类型、数据库连接重试次数、数据库连接重试间隔;属性:l vendor ,取值范围:alcatel、datang、ericsson、huawei、italtel、motorola、nokia、nortel、siemens、tacs、bell、text。注意不可以写错。l managetype,描述数据管理类型,是配置、性能还是告警?取值范围:cm、pm、fm。l retrycounts,数据库连接重试次数,取值范围:integer,建议=10l retryinterval,数据库连接重试间隔,取值范围:integer,单位秒。内容:无。范例:2.4.3 target_database说明:数据存储的目标数据库信息。该项实际上是可选的,因为通常情况我们会从公用配置文件得到目的数据库信息。只有无法从公用配置文件得到目的数据库信息时,才启用target_database信息。属性:l type:数据库类型,取值informix、 oracle;l dbserver:数据库服务器名称l database:数据库名l user:用户名l password:口令。内容:无。范例:2.4.4 globalvariable说明:全局变量。用于在一个文件中的多个报告之间通用的变量,例如从文件名得到交换机名称,则文件中所有报告所属的交换机都是它。在文件头filehead中可以使用的变量必须定义为globalvariable。属性:无。内容:一个或者多个变量定义。范例: s+ d4-d2-d2 d2:d2:d2定义了三个全局变量。2.4.5 var说明:变量定义。用于描述文本报告中的需要抽取的数据。其属性是一些名称、类型、处理参数等,其内容是其正则表达式。属性:(如未提及,则是必选)l id:var编号,从1开始逐个累加,不可相同;l varname:变量名,字符串;l multiple(可选):该变量会在一列中的多行重复出现;取值yes;l parallel(可选):该变量会在一行中的多列重复出现;取值yes;l reset(可选):该变量在每次输出到数据库后自身数值被清空;取值yes;l join(可选):该变量的多次出现的数据会被以字符串方式合并在一起成为一个数据,中间为1个空格。该变量和parallel multiple不可同时使用。如果同时使用,则join优先。取值yes;l sum(可选):该变量多次出现的数据被作为数字累加在一起。该变量和parallel multiple不可同时使用。如果同时使用,则sum优先。sum和join在一起,则join优先。取值yes; l is_col(可选):取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年制动总泵项目合作计划书
- 2025年HWREP刷适性改进剂项目建议书
- 2025年输注延长管合作协议书
- 材料采购与供应方案
- Indobufen-impurity-6-生命科学试剂-MCE
- 2025年个人定融合同合同纠纷调解书
- Collagen-petide-Type-II-生命科学试剂-MCE
- Carbomer-676-生命科学试剂-MCE
- 环保包装膜生产线建设项目建筑工程方案
- 2025年病房护理设备器具项目建议书
- 糖尿病与睡眠障碍
- 网络类拓扑图
- (2024版)联通社区智家营销经理能力认证参考试题库(含答案)
- 仿真绿植合同模板
- 赠与协议书模板(2篇)
- 煤矿安全风险分级管控与隐患排查治理双重预防机制建设指南
- 浙江省温州市2023-2024学年七年级上学期语文期中考试试卷(含答案)
- MAXHUB会议平板操作说明书
- 第1章机械运动章末提升核心素养课件人教版(2024)物理八年级上册
- 邮件分拣业务外包管理服务方案
- 2024年军考英语真题历年军考真题系列
评论
0/150
提交评论