千家信息网

datastage 分析日志获取表记录条数

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,DataStage通过分析日志获取Job插入目标表的记录数这只是一种不太好的方法,也许还有更好、更简便的方法。这种方法要求每次运行Job之前删除已有的日志信息,否则无法统计出正确的记录数。当然,在Jo
千家信息网最后更新 2025年12月03日datastage 分析日志获取表记录条数

DataStage通过分析日志获取Job插入目标表的记录数

这只是一种不太好的方法,也许还有更好、更简便的方法。这种方法要求每次运行Job之前删除已有的日志信息,否则无法统计出正确的记录数。当然,在Job跑完之后,可以在shell备份本次Job运行的日志到服务器磁盘。

1 日志清理设置

登录Datastage Administrator,选择对应项目,项目属性->记录,勾选"自动清除作业日志",设置为自动清理上次及以前的日志。

Figure 1 Administrator日志清理设置

2 日志处理

2.1 日志备份(dsjob -logsum)

在shell里用dsjob调起来Job,Job运行之后,将本次Job的日志备份到磁盘。

$DSHOME/bin/dsjob -logsum $projectName $jobName > $sysLogDir/$jobName.txt

2.2 记录数分析(grep、awk)

注意到往目标表里写记录的时候会有关键字"Number of rows inserted:"或"Number of rows rejected:",后面跟记录的数目。考虑到可能有多个节点,因此可以将各个节点的数据都加起来。

#inserted rows

insertedRows=`cat $sysLogDir/$jobName.txt | grep "Number of rows inserted:" | awk -F: '{print $3}' | sed 's/,/''/' | awk '{sum=sum+$1;} END {print sum}'`

#rejected rows

rejectedRows=`cat $sysLogDir/$jobName.txt | grep "Number of rows rejected:" | awk -F: '{print $3}' | sed 's/,/''/' | awk '{sum1=sum1+$1;} END {print sum1}'`

考虑到Job可能没进数就终止了,需要在接下来做处理。例如为空的话赋值0。

if [ ! -n "$insertedRows" ]; then

insertedRows=0

fi

2.3 其他监控信息

监控可能还要些Job运行起止时间、结束状态等等,可以一并加上,然后写入一个日志文件。

其中起止时间可以在Job运行前后记录,Job的运行装可以用dsjob -run -status获取。

jobsta=$($DSHOME/bin/dsjob -run -mode NORMAL $jobParameters -warn 0 -jobstatus $projectName $jobName 2>&1 | awk -F= '/^Status code/{print $2}')

2.4 Job日志记录

Job执行完毕之后,将该Job的一些监控信息写入日志。

echo $projectName $jobName $jobsta `date +%Y-%m-%d" "%H:%M:%S` $startTime $insertedRows $rejectedRows >> $logdir/job_run_` date +%Y%m%d`.log

3 其他(监控相关)

当所有的Job都执行完之后,可以建立一个Job,将记录在$logdir/job_run_` date +%Y%m%d`.log中的数据抽取到一个表,用于查看。

3.1 表设计

//日志表

create table DSLog

(

id INTEGER NOT NULL GENERATED BY DEFAULT

AS IDENTITY (START WITH 1, INCREMENT BY 1) primary key ,

prjName varchar (20),

jobName varchar (50),

state varchar (20),

rDate date ,

startTime time,

endTime time,

insertedRows integer,

rejectedRows integer

)

//日志状态表

create table DSLogState

(

state varchar (20),

mark varchar (50 ),

des varchar (500)

)

3.2 Job状态代码

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.sh源码

#!/bin/bash

########################################

#

# runJob.sh 2012-08-19

# run a job with parameters

#

#######################################

# if the number of input parameters is less than 2,then output the help document and exit

if [ $# -lt 2 ] ; then

cat << HELP

runJob --run a job UASGE: runJob projectName jobName jobParameters

EXAMPLE: runJob dsstage1 DD_Test '-param endDT=20120819'

HELP

exit 0

fi

projectName="$1"

jobName="$2"

jobParameters="$3"

#echo $projectName

#echo $jobName

echo $jobParameters

#exit 0

logdir=/DS/DSLogs #directory to store logs

workdate=`date +%Y%m%d`

sysLogDir=/DS/DSLogs/sysLogsBK/`date +%Y%m%d` #directory to back everyday datastage log.Datastage Administrator is setted to delete the logs before run a job.

#solve the problem of $DSHOME is null

source /mistel/IBM/InformationServer/Server/DSEngine/dsenv

#logdir processing.If log folder not exists,create folder.

if [ -d $logdir ]; then

echo "$logdir is exist,continue..."

else

echo "$logdir is not exist,creating $logdir..."

mkdir -p $logdir

fi

#create datastage logs backup direcotry

if [ ! -d $sysLogDir ]; then

mkdir -p $sysLogDir

fi

#job state processing.If job state is not finished ok,then reset the job

jobsta=$($DSHOME/bin/dsjob -jobinfo $projectName $jobName 2>&1 | awk -F: '/^Job Status/{print $2}')

echo 'last status: ' $jobsta

if [ "$jobsta" == " RUN FAILED (3)" -o "$jobsta" == " STOPPED (97)" ];then

echo "Reset before run job $jobname"

$DSHOME/bin/dsjob -run -mode RESET $projectName $jobName >>${logdir}/job_init_` date +%Y%m%d`.log

sleep 5

fi

#job start run time

startTime=`date +%H:%M:%S`

#run a job

jobsta=$($DSHOME/bin/dsjob -run -mode NORMAL $jobParameters -warn 0 -jobstatus $projectName $jobName 2>&1 | awk -F= '/^Status code/{print $2}')

#backup datastage logs

$DSHOME/bin/dsjob -logsum $projectName $jobName > $sysLogDir/$jobName.txt

#calculate the inserted rows and rejected rows from the back up log file

#inserted rows

insertedRows=`cat $sysLogDir/$jobName.txt | grep "Number of rows inserted:" | awk -F: '{print $3}' | sed 's/,/''/' | awk '{sum=sum+$1;} END {print sum}'`

#rejected rows

rejectedRows=`cat $sysLogDir/$jobName.txt | grep "Number of rows rejected:" | awk -F: '{print $3}' | sed 's/,/''/' | awk '{sum1=sum1+$1;} END {print sum1}'`

if [ ! -n "$insertedRows" ]; then

insertedRows=0

fi

if [ ! -n "$rejectedRows" ]; then

rejectedRows=0

fi

echo 'this run status code [1:Finished;2:Finished (see log);3:Aborted;97:Stopped] : ' $jobsta

#log

echo $projectName $jobName $jobsta `date +%Y-%m-%d" "%H:%M:%S` $startTime $insertedRows $rejectedRows >> $logdir/job_run_` date +%Y%m%d`.log


日志 运行 监控 信息 备份 方法 状态 分析 数据 时间 目标 磁盘 节点 项目 处理 起止 简便 接下来 代码 关键 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 诛仙手游服务器等级表 网络技术及应用心得体会 广州电商定制软件开发公司 广播电视台网络安全组织机构 mysql是集中式数据库吗 企业网络安全投资的法拉利 软科学研究网络安全 金融科技下的互联网创业机会 国家标准文献数据库 淘宝有软件开发类目 评价网络安全管理人才 中医特色技术人才数据库查询 华为招聘网络技术工程师待遇 五指山精益管理软件开发 违反网络安全检讨 管家婆数据库密码 上海企业软件开发收费报价表 数据库怎么设两个主码 保定天气预报软件开发 mc地球都市服务器x 宁波章鱼软件开发 学习网络安全要具备什么知识 网络安全工作的安排部署 格力校招软件开发怎么样 浙江通信网络安全防护服务团队 《网络安全法》的小报_ 天河区正规网络技术开发动态 增城小程序软件开发价格表 网络安全就没有国家安全心得 数据库设计是数据库应用的核心吗
0