王春波 胡亚 陈刚
【摘要】 SAP系统作为江苏电力公司的核心系统,承担着人、财、物等核心业务功能,系统的健康稳定运行就显得尤为重要。但实际运维过程中往往是在系统出现故障时才能发现问题。不仅对业务操作产生一定的影响,有时甚至产生无法挽回的直接经济损失。因此,有必要深入研究如何能够及时有效监控SAP系统运行状态,实现主动运维,保证系统健康稳定运行。
【关键词】 SAP 信息系统 监控平台
前言
从2007年6月启动以来, 江苏电力SG186工程项目经历了业务流程优化、试点单位实施、推广单位实施和持续深化应用等阶段,已构建了覆盖核心业务的一体化业务应用平台,目前正在进行SG-ERP的深入建设。随着越来越多的系统投入正式运行,使公司各基层单位、各个部门之间的相互联系日益增强。同时各个系统在纵向、横向耦合程度日益加深,公司信息化水平已发生了质的飞跃。为了保障公司各项业务在信息系统的支撑下能够正常开展,江苏省电力公司越来越关注本公司的系统运维。SAP系统作为江苏电力公司的核心系统,承担着人、财、物等核心业务功能,系统的健康稳定运行就显得尤为重要。
目前在SAP系统的运行维护工作中,往往是在系统出现故障时才能发现问题,运维人员疲于应急维修,不仅对业务操作产生一定的影响,有时甚至产生无法挽回的直接经济损失。因此,有必要深入研究如何能够及时有效监控SAP系统运行状态,并且运用信息化手段,主动运维监测系统状态,保证系统健康稳定运行。
一、开发平台设计
该监控平台是基于SAP系统运行情况进行二次开发,采用的是C/S架构。客户端分布在各业务部门的终端。服务器统一存放在省信通公司,便于设备的日常维护和检修。
1.1操作系统选择
Linux是一个多用户、多任务、支持多线程和多CPU的操作系统,是一个性能稳定的多用户网络操作系统。SAP系统也安装在此操作系统上,因此,本平台的服务器也选择Linux。
1.2数据库选择
Oracle是应用广泛的主流数据库,江苏电力的SAP系统也采用Oracle作为后台数据库,为了系统更好的集成,方便维护,本平台也采用Oracle作为数据库
1.3开发语言选择
为了更好的与SAP系统集成,本平台开发使用ABAP语言,通过Html来进行平台无关的页面展示,采用Div+Css技术进行强大灵活的屏幕自适应布局,配合JavaScript来实现丰富的动画过渡和信息交互。
二、功能设计
SAP系统运行状态监控平台由四个功能模块(指标调度模块、监控计算指标模块、指标汇总及分析处理模块、监控指标配置模块)构成。ERP信息系统状态评估系统应用功能如图1所示。
三、系统开发与功能实现
3.1系统进程监控
SAP应用服务器进程类型共有6种:DIA(对话进程)、UPD(更新进程)、ENQ(队列进程)、BTC(批处理进程)、SPO(脱机进程)、UP2(V2更新进程)。
特定类型的任务只能通过特定类型的进程进行处理,而每台服务器针对各类型都有一定的比例分配,若同种类型的任务同一时间段大量爆发,那么就会造成任务的堵塞,排队的任务就有可能出现等待超时而导致业务操作受影响,甚至对业务数据产生影响。我们通过对各服务器的进程使用情况的监控来进行压力风险规避,监控的参数包括各服务器各类型进程的进程使用率、进程CPU占比、进程占用内存,进程DB交互,进程I/O等。
3.2内存监控
内存对于系统来说毫无疑问是非常重要的参数。需要对每台服务器的内存进行监控,服务器上的内存一旦不够,发生的业务问题所带来的影响都无发预测和估计,当内存使用率接近极限值的时候需要进行告警。
虽然进程监控中也涉及一部分进程占用的内存监控,但还需从服务器层面对内存进行的监控,是服务器级别的系统健康运行的重要参数之一。这里主要针对空闲内存(Spared Memory)、堆内存(Heap Memory)和扩展内存(Extended Memory)进行监控。
3.3系统锁情况监控
业务对象(Business Object)在SAP中是很重要的存在,核心的系统业务操作实际上是对业务对象的操作,所有的业务操作都需要保证业务对象事务的ACID特性。以项目为例,围绕项目来进行业务发生和管控,假设要在这个项目下进行采购订单的创建,同时也要为这个项目进行预算调整分配,但不能同时进行两件事(比如预算调减,同时创建订单,最终结果很可能是超预算,这样的内控就没控住),而订单和预算是两个不同的东西,如何保证两个操作的串行发生,就需要对业务对象进行加锁以保证业务的不冲突。
锁的重要性不言而喻,而对于SAP这种业务高度集成的软件来说,保障其正常的使用,就显得尤为重要。这里就需要监控:
系统锁的总数:系统锁的数量有限制的,若系统当前锁个数超过这个限制,那么就会导致锁等待的发生,操作可能会因为超时而dump;
系统锁的信息维度分析:对系统正常运行,以1000个锁为例,若是在一个几千人使用的系统环境里,这个指标看起来是很健康的,但是,如果是由同一个人或同一个程序产生的,那么这种情况是否应该值得关注呢?单凭某一时刻的体量是无法暴露出这样的隐患的,所以要根据创建账号,创建程序,访问终端等维度对系统锁进行记录统计。
3.4系统TRFC/QRFC状态监控
TRFC(事务RFC,Transactional Remote-Function-Call)和QRFC(队列RFC,Queue Remote-Function-Call)是和外围系统或自身进行异步交互的重要方式之一,实际上QRFC是TRFC中的特例,所不同的是,QRFC是无序的,而QRFC是存在队列进行控制的,即串行发生的。若系统中的TRFC和QRFC出现信道堵塞或队列堵塞的话,那么也是会对业务产生影响的。所以不仅要监控未处理和处理错误的TRFC和QRFC数量,还要按照程序、账户、终端等维度进行监控记录统计,对于各维度极端异常的情况需要暴露给运维人员。
3.5系统dump数据监控