DataStage通过分析日志获取工作插入目标表的记录数
这只是一种不太好的方法,也许还有更好,更简便的方法。这种方法要求每次运行工作之前删除已有的日志信息,否则无法统计出正确的记录数。当然,在工作跑完之后,可以在壳牌备份本次工作运行的日志到服务器磁盘。
1,,,,,,日志清理设置
登录Datastage管理员,选择对应项目,项目属性→记录,勾选“自动清除作业日志”,设置为自动清理上次及以前的日志。
,,,,,,,,,,,,图1
管理员日志清理设置
2,,,,,,日志处理
2.1,,,,日志备份(dsjob -logsum)
在壳里用dsjob调起来工作,工作运行之后,将本次工作的日志备份到磁盘。
DSHOME美元/bin/dsjob -logsum projectName jobName美元比;sysLogDir/jobName美元。txt
2.2,,,,记录数分析(grep, awk)
注意到往目标表里写记录的时候会有关键字“插入的行数:”或“拒绝的行数:”,后面跟记录的数目。考虑到可能有多个节点,因此可以将各个节点的数据都加起来。
#插入行insertedRows='猫sysLogDir/jobName美元。txt | grep”插入的行数:“| awk - f:{打印3美元}| sed的s/,/?皘 awk”{和=和+ 1美元;}{打印和}结束' '
#拒绝行rejectedRows='猫sysLogDir/jobName美元。txt | grep”的行数拒绝:“| awk - f:{打印3美元}| sed的s/,/?皘 awk”{sum1=sum1 + 1美元;}{打印sum1}结束' '
,,,,,,,,考虑到工作可能没进数就终止了,需要在接下来做处理,例如为空的话赋值0。
如果[!- n“insertedRows美元”);然后
,,,,,,,,insertedRows=0
fi
2.3,,,,其他监控信息
监控可能还要些工作运行起止时间,结束状态等等,可以一并加上,然后写入一个日志文件。
其中起止时间可以在工作运行前后记录,工作的运行装可以用dsjob国营地位获取。
jobsta=$(美元DSHOME/bin/dsjob国营模式NORMAL jobParameters 美元;警告0,-jobstatus projectName jobName 美元;2祝辞,1,| awk - f='/^状态码/{打印$ 2}’)
2.4,,,,工作日志记录
工作执行完毕之后,将该工作的一些监控信息写入日志。
echo $ projectName jobName jobsta美元“日期+ Y % - % - % d”“% H: % m: % S的开始时间insertedRows美元美元rejectedRows祝辞祝辞$ logdir/job_run_“日期+ % Y % m % d”。日志
3,,,,,,其他(监控相关)
当所有的工作都执行完之后,可以建立一个工作,将记录在$ logdir/job_run_“日期+ % Y % m % d”。日志中的数据抽取到一个表,用于查看。
3.1,,,,表设计
//日志表
create table DSLog
(
id的整数不是NULL 默认生成的
,,,身份(从1开始,增加1)主键,
prjName varchar (20),
jobName varchar (50),
状态varchar (20),
rDate日期
开始时间时间,
endTime时间,
insertedRows整数,
rejectedRows整数
)
//日志状态表
create table DSLogState
(
状态varchar (20),
标记varchar (50),
des varchar (500)
)
3.2,,,,工作状态代码http://publib.boulder.ibm.com/infocenter/iisinfsv/v8r7/topic/com.ibm.swg.im.iis.ds.cliapi.ref.doc/topics/r_dsvjbref_Error_Codes.html
https://www - 304. ibm.com/support/docview.wss?uid=swg21469644
3.3,,,,runJob。上海源码
# !/bin/bash
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# runJob。sh 2012-08-19
#运行工作参数
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
,
#如果输入参数的数量小于2,然后输出帮助文档和退出
如果[$ # lt 2];然后
猫& lt; & lt;帮助
runJob——运行工作UASGE: runJob projectName jobName jobParameters
例子:runJob dsstage1 DD_Test的param endDT=20120819 '
,
帮助
,
,,,,,,,,退出0
fi
,
projectName=" $ 1 "
jobName=" $ 2 "
jobParameters=" $ 3 "
,
# echo $ projectName
# echo $ jobName
echo $ jobParameters
,
0 #退出
,
logdir=/DS/DSLogs #目录来存储日志
workdate=叭掌? % Y % m % d”
,
sysLogDir=/DS/DSLogs/sysLogsBK/Y '日期+ % % m % d ',,,#目录支持日常datastage日志。Datastage管理员设置删除日志之前运行工作。
,
#解决DSHOME美元为空的问题
源/mistel/IBM/InformationServer/服务器/DSEngine dsenv
,
# logdir处理。如果日志文件夹不存在,创建文件夹。
如果[- d $ logdir];然后