有关本教程
本教程详细地介绍了 IBM WebSphere MQ FTE 所提供数据库 logger 功能以及配置过程本文首先介绍 IBM WebSphere MQ FTE 中日志功能并通过具体例子演示如何进行数据库 logger 配置
目标
希望读者通过本教程能够了解:
WebSphere MQ FTE 中所提供数据库 logger 功能;
配置 WMQ FTE 数据库 logger 详细过程;
先决条件
本教程要求读者具备 WebSphere MQ、WebSphere MQ FTE 以及数据库基本概念、基本功能和基本操作步骤
前言
目前大多数企业都存在着文件传输需求文件尺寸从大到上百兆小至十几 K 不等;文件传输频度不;传输技术复杂多样通常采用 FTP、NFS 或来自多家厂商中间件甚至包括自主开发文件传输工具这些解决方案构基本上都会存在构建、管理、维护以及应用能力方面问题IBM WebSphere MQ File Transfer Edition(简称 MQFTE)结合 WebSphere MQ 消息传输解决方案提供了受管文件传输功能实现了消息传输平台和文件传输平台完美统逐步成为信息传输领域主流解决方案
受管文件传输中个重要环节是对传输日志记录和管理MQFTE 提供两种机制种是将文件传输信息发布特定主题以供订阅;另种是将文件传输信息存储在数据库中以备日后查询、跟踪或审计本文将详细介绍后种技术手段即 MQFTE 数据库 logger 功能
WebSphere MQ FTE 数据库 logger 介绍
WebSphere MQ FTE 介绍
MQFTE + WebSphere MQ 是目前最有效并且经过市场验证受管文件传输产品 (Managed File Transfer Suites)MQFTE 和 WebSphere MQ 提供了可靠通信、审计、日志、管理等能力使的成为受管文件和数据传输基础性平台
MQFTE 可以实现如下功能:
在异构系统间提供可靠文件传输
对于传输文件没有大小限制
集中式监控产生状态和日志信息帮助审计传输过程
支持定制传输时间表和有条件触发传输
实现和 SOA 架构整合
MQFTE 组件架构如图 1 所示其中各组件功能整理总结如下:
图 1. MQFTE 组件图
查看原图(大图)
代理 代理构成了文件传输任务端点代理所存在系统有文件传输需求代理必须连接队列管理器每个代理在其相关联队列管理器上都有自己队列集合因此个队列管理器可以驻留个或多个代理代理不必和命令队列管理器或代理队列管理器位于相同主机上
代理队列管理器 每个代理都需要位于个 MQ 队列管理器的上组队列这些队列是 FTE 内部队列系统对于最终用户而言是透明和代理相关联队列管理器称为代理队列管理器它可能是本地或远程
命令队列管理器 命令行和 WebSphere FTE MQ Explorer 插件工具允许将命令发送到 FTE 代理在发送这些命令时工具所连接队列管理器称为命令队列管理器它可能和代理队列管理器有所区别每个命令都在该队列管理器上创建临时动态队列该队列管理器可能来自 WebSphere MQ V6.0 或更新版本代理不必连接到相同命令队列管理器上此队列管理器可能是本地或远程
协调队列管理器 协调队列管理器必须是 WebSphere MQ V7.0 或更新版本队列管理器具有发布 / 订阅特性在设置过程中在协调队列管理器上创建个称为 SYSTEM.FTE 主题代理将文件传输流程信息发送到此主题并且当订阅者存在时信息会保存在 WebSphere MQ 队列中
WebSphere MQ FTE 数据库 logger
典型基于 MQFTE 文件传输过程中代理将文件传输流程信息发送到具有发布 / 订阅功能协调队列管理器的上 SYSTEM.FTE 主题当订阅者存在时信息会保存在 WebSphere MQ 队列中以备其他应用订阅使用MQFTE 数据库 logger 是 MQFTE 日志功能拓展是 MQFTE 可选组件它将 SYSTEM.FTE 主题中文件传输信息拷贝到数据库中便于日后审计、分析等操作如图 1 中红色虚线区域所示
MQFTE 数据库 logger 是独立 java 应用必须安装在具有协同队列管理器以及数据库机器上数据库 logger 采用队列管理器 XA 支持功能作为事务管理器保证跨队列管理器以及数据库全局事务完整性
数据库 logger 采用 MQ binding 方式和本地协调队列管理器连接采用 type 2 JDBC 驱动连接数据库
数据库 logger 安装
用户可以选择单独安装数据库 logger也可以在安装 WMQFTE Remote Tools 时安装数据库 logger
数据库 logger 支持平台
数据库
- DB2 或 ORACLE 数据库
- Type 2 JDBC 驱动
支持平台
- WMQ7.0.0.1
- AIX/DB2 9.5
- Windows2003 (32-bit) /DB2 9.1 , DB2 9.5, Oracele10.2
- Windows XP (32-bit)/DB2 9.1, DB2 9.5, Oracle10.2
数据库 logger 相关队列
数据库 logger 使用两个特定队列作为其运行和管理基础如果是 WMQ FTE7.0.0.1 或以后版本这两个队列将在 fteSetupCoordination 命令所产生 MQSC 文件中定义;如果使用的前版本则需要手工定义
表 1:数据库 logger 相关队列
队列 描述
COMMAND QUEUE 位于协调队列管理器的上控制数据库 logger 操作消息将被放入该队列缺省名字为 SYSTEM.FTE.DATABASELOGGER.COMMAND
REJECT QUEUE 位于协调队列管理器的上当数据库 logger 遇到特定情况无法将文件传输信息放入数据库中则放入该队列中缺省名字为 SYSTEM.FTE.DATABASELOGGER.REJECT被放入 REJECT QUEUE 中消息不具有 DHL 头因此不建议使用队列管理器死信队列作为 REJECT QUEUE
数据库 logger 命令
表 2:数据库 logger 命令
命令 参数
fteStartDatabaseLogger
启动数据库 logger 应用 -p ( 可选参数 ) 定义用于启动数据库 logger 配置选项通常为协调队列管理器如果没有设置该值则使用缺省配置选项
-F( 可选参数 ) 使数据库 logger 应用作为前台进程运行缺省作为后台进程运行
Properties file ( 属性文件 ) MQFTE 提供数据库 logger 配置文件用户可自定义该文件中属性
样例:fteStartDatabaseLogger -F /wmqfte/config/COORDQM/logger1.properties即采用 logger1.properties 中属性值启动数据库 logger也可使用 -p 更改其中特定属性
fteStopDatabaseLogger
停止数据库 logger 应用该命令将向数据库 logger 命令队列发送停止数据库 logger 消息在数据库 logger 已经停止情况下继续执行该命令仍会向 logger 命令队列发送停止 logger 消息当启动数据库 logger 时logger 首先获得停止消息需重复启动数据库 logger直到命令队列中停止消息全被取走才能正常启动 logger种可选方案是首先清空命令队列再启动数据库 logger -p( 可选 ) 同 fteStartDatabaseLogger
-qm <qmname>( 可选参数 ) <qmname> 为数据库 logger 命令队列所在队列管理器名称缺省为协调队列管理器可使用 -p 指定特定队列管理器作为命令队列所在队列管理器
-cq <qname> ( 可选参数 ) <qname> 为数据库 logger 所使用命令队列名称
样例:fteStopDatabaseLogger -qm PLUTO -cq FTE.logger2.COMMAND即数据库 logger 使用命令队列管理器为 PLUTOFTE.logger2.COMMAND 为命令队列该命令停止数据库 logger
数据库 logger 配置文件
数据库 logger 所使用属性配置文件位于 <config_directory>\<coordination_QMgr_ name>\databaselogger.properties<config_directory> \<coordination_QMgr_ name> 为 MQFTE 配置目录下协调队列管理器目录需要配置该文件中如下属性:
表 3:数据库 logger 配置文件
属性名 介绍说明
wmqfte.queue.manager 指定数据库 logger 连接协调队列管理器名称
wmqfte.database.name 存储文件传输信息数据库名称
wmqfte.database.driver JDBC 驱动例如 C:/IBM/SQLLIB/java/db2jcc.jar;C:/IBM/SQLLIB/java/db2jcc_license_cu.jar
wmqfte.database.native.library.path 数据库驱动本地代码位置例如 C:/IBM/SQLLIB/lib
WMQ FTE 配置环境
本文基于完整 MQFTE 文件传输基础架构配置数据库 logger架构拓扑如图 2 所示QM_COORD 为协调队列管理器QM_AGENT1 和 QM_AGENT2 为 MQFTE 代理队列管理器同时兼任命令队列管理器分别创建采用本地连接方式两个代理 AGENT1 和 AGENT2数据库 logger 从协调队列管理器获取文件传输信息保存到 DB2 数据库
图 2. WMQ FTE 文件传输架构
查看原图(大图)
创建日志数据库
使用数据库工具或脚本创建用于存储文件传输信息 DB2 数据库
a) 创建 createLogDB.sql 脚本如下:
echo *******************************************************
drop database FTELOGDB
echo -- Creating database FTELOGDB
create database FTELOGDB
echo -- Connect to FTELOGDB database
connect to FTELOGDB user db2admin using passw0rd
-- catalog FTELOGDB as a odbc data source
catalog system odbc data source FTELOGDB
list system odbc data sources
echo -- now create the schemae, tables and views
echo -- use this db2cmd command console
echo -- it is already connected to the database
b) 创建命令脚本 createLogDB.bat 如下:
db2 -v -f createLogDB.sql
db2 commit
@echo *****************************************
@echo Check for errors. none, press 'enter'.
@pause
c) 启动命令行执行 createLogDB.bat如图 3 所示:
图 3. 执行 createLogDB.bat
命令执行结束将创建 FTELOGDB 数据源
d) 使用 MQFTE 携带数据库定义文件创建数据库 FTELOGDB 模式、表结构和视图该文件位于 <WMQFTETOOLS INSTALL DIR>\sql\ftelog_tables_db2.sql<WMQFTETOOLS INSTALL DIR> 为 WMQ FTE remote tools 安装目录下如图 4 执行数据库定义文件
图 4. 创建日志数据库模式、表结构和视图
配置数据库 logger 属性文件
打开 <config_directory>\<coordination_QMgr_ name>\databaselogger.properties 文件
按照如下配置设置属性值:
wmqfte.queue.manager=QM_COORD
wmqfte.database.name=FTELOGDB
wmqfte.database.driver=C:/IBM/SQLLIB/java/db2jcc.jar;C:/IBM/SQLLIB/java/db2jcc_license_cu.jar
wmqfte.database.native.library.path=C:/IBM/SQLLIB/lib
配置队列管理器 XA 支持
数据库 logger 从队列中取出消息并放入到数据库中在同事务中涉及两种资源管理器数据库 logger 采用队列管理器 XA 支持特性保证事务完整性
a) 打开队列管理器管理界面在协调队列管理器 QM_COORD 上右键选择“属性”在左侧列表中选择“XA 资源管理器”点击“添加”填入如图 5 所示信息
图 5. 添加 XA 资源管理器
查看原图(大图)
b) 将 <MQ INSTALL DIR>\java\lib\jdbc\jdbcdb2.dll 文件拷贝到 <MQ INSTALL DIR>\exits 目录下<MQ INSTALL DIR> 为 WebSphere MQ 安装目录;
c) 重新启动协调队列管理器 QM_COORD;
d) 执行 fteStartDatabaseLogger 命令并且使数据库 logger 在前台运行如图 6
图 6. 启动数据库 logger
e) 在 MQ 资源管理器上选择协调队列管理器 QM_COORD在“高级”部分选择“预订”右侧列表会出现数据库 logger 自动创建好预订条目SYSTEM.FTE.DATABASELOGGER. AUTO如图 7 所示:
图 7. 数据库 logger 预订条目
查看原图(大图)
文件传输并测试数据库 logger
在完成上述配置后即可启动文件传输功能并观察数据库日志记录信息
在 MQ 资源管理器上“受管文件传输”部分右键其下协调队列管理器 QM_COORD并选择“新建传输”在弹出对话框上填入如图 8 所示信息并点击“下步”
图 8. 新建文件传输
在接下来界面上点击“下步”;
在输入元数据“属性 / 值” 对界面上输入元数据属性属性名:jobname属性值:transfer1如图 9 所示并按照相同思路方法加入另外属性 / 值对:dept/BPTSE点击“下步”
图 9. 定义文件传输元数据
在接下来界面上点击“完成”
如图 10 所示在 MQ 资源管理器中“受管文件传输”视图中会出现该次文件传输状态信息;
图 10. 文件传输状态信息
查看原图(大图)
重复上面创建新文件传输流程执行另文件传输任务
DB2 控制中心选择数据库 FTELOGDB选择“视图”选择“BASIC_TRANSFER_DETAILS”视图
在弹出界面中选择“执行”可以看到如图 11 所示数据库中已经存储了文件传输任务记录
图 11. 文件传输信息记录
查看原图(大图)
在控制中心选择“表”在右侧列表中双击 FTELOGDB 数据库表“METADATA”
在弹出界面中选择“执行”如图 12 所示表中记录了在创建文件传输任务中所定义元数据属性 / 值对
图 12. 属性 / 值对信息
用户可自主开发应用对 MQFTE 日志数据库 FTELOGDB 进行访问开展审计、统计等工作FTELOGDB 表结构定义本文不再赘述请参阅参考文档 [6]
整理总结
本文介绍了 WebSphere MQ File Transfer Edition 7.0.0.1 及的后版本所提供数据库 logger 功能并以具体例子详细演示数据库 logger 配置过程为基于 WMQ FTE 实现大文件传输监控提供技术参考
最新评论