如何在Talend Data Studio采集当前Job全量信息并写入MongoDB
所需核心组件
tJobName:内置全局上下文组件,直接读取当前运行Job的标识名称tFlowMeterCatcher:全局数据流指标捕获组件,自动拉取全链路数据流转的计数、节点元数据tMongoDBConnection:MongoDB连接组件,负责建立和目标MongoDB实例的持久连接tMongoDBOutput:MongoDB写入组件,负责将组装好的结构化日志写入指定集合tMap(可选):字段映射转换组件,需要自定义日志字段格式时使用,无自定义需求可省略
具体操作步骤
开启全局指标采集开关
打开目标Job的设计面板,在空白区域右键选择Job Settings,在弹出的配置窗口找到Stats & Logs标签页,勾选Use statistics、Use flow meter两个选项,开启后Talend会自动统计所有数据流节点的运行指标,不需要给每个输入输出组件单独加埋点。配置MongoDB连接
从组件库拖入tMongoDBConnection到设计面板,双击打开配置页,填写MongoDB的服务地址、端口、认证信息、目标数据库,点击Check connection确认连接可用即可。注意要把该组件的触发优先级设为最高,保证Job启动时先建立日志库连接。配置日志采集规则
拖入tFlowMeterCatcher组件,该组件会自动捕获需求要求的三类核心信息:- Job名称:对应内置字段
jobName,自动读取当前运行Job的名称,不需要手动赋值 - 源端、目的端详情:对应字段
origin、connectorType、nodeLabel,会自动识别每个输入输出节点绑定的文件名、数据库表名,不需要手动配置每个节点的元数据 - 记录统计指标:对应字段
lineCount(输入总记录数)、successCount(处理成功/写入成功的记录数),统计值和Job控制台打印的运行计数完全一致
如果需要调整日志结构,比如把源端、目的端字段合并成嵌套对象,或者补充运行时间、服务器IP这类自定义字段,可以在tFlowMeterCatcher后面接一个tMap做字段转换映射。
- Job名称:对应内置字段
配置日志写入规则
拖入tMongoDBOutput组件,将tFlowMeterCatcher(或经过tMap处理后)的输出主链路连接到该组件的输入端口。双击打开配置页,选择之前配置好的tMongoDBConnection作为复用连接,填写日志要写入的集合名(建议命名为talend_job_run_logs),写入模式选择Insert,取消勾选Die on error选项,避免日志写入异常中断主业务Job运行。
额外需要注意:要把tFlowMeterCatcher和tMongoDBOutput的触发条件设置为「主Job所有数据流执行完成后触发」,避免主任务还没跑完就提前采集,导致统计数值不全。效果验证
单次运行测试Job,执行完成后登录MongoDB查询目标集合,确认写入的日志包含三类要求的核心字段,记录数统计值和实际业务数据量匹配即可。如果需要给所有Job统一加日志采集,可以把这套采集逻辑封装成公共Joblet,所有业务Job直接引入复用,不需要重复配置。
踩坑提示:不要用tJava手动写代码取全局计数器统计值,Talend版本迭代后全局计数器的变量名经常变动,用官方内置的tFlowMeterCatcher兼容性最好,不会因为版本升级失效。
内容的提问来源于stack exchange,提问作者Akash Tripathi

