后台weblogic可以通过控制台查看数据源运行时统计信息,比如当前活动数,最大容量,最小容量等,如果服务器数量多或者数据源统计和需要有监控功能,那么就需要通过程序周期性的获取数据源的运行时信息。获取数据源的运行时信息有两种方案。通过JMX获取weblogic的运行时MBean信息,从MBean中获取数据源的运行时信息。通过jython脚本获取数据源的运行时信息,也是本文要介绍的方法。wlst脚本的基本思想是通过连接服务器获取数据源的运行时信息,输出到csv格式的文件中。csv文件可以用excel打开进行统计分析,也可以通过第三方程序将csv文件上传到服务器进行统计分析。importsysurl=sys.argv[1]username=sys.argv[2]password=sys.argv[3]connect(username,password,'t3://'+url)file=open("datasource.csv",'a')file.write("machine,server,Name,ActiveConnectionsAverageCount,ActiveConnectionsCurrentCount,ActiveConnectionsHighCount,ConnectionDelayTime,ConnectionsTotalCount,CurrCapacity,CurrCapacityHighCount,DeploymentState,FailedReserveRequestCount,FailuresToReconnectCount,HighestNumAvailable,HighestNumUnavailable,LeakedConnectionCount,NumAvailable,NumUnavailable,PrepStmtCacheAccessCount,PrepStmtCacheAddCount,PrepStmtCacheCurrentSize,PrepStmtCacheDeleteCount,PrepStmtCacheHitCount,PrepStmtCacheMissCount,Properties,ReserveRequestCount,State,WaitingForConnectionCurrentCount,WaitingForConnectionFailureTotal,WaitingForConnectionHighCount,WaitingForConnectionSuccessTotal,WaitingForConnectionTotal,WaitSecondsHighCount\n")allServers=domainRuntimeService.getServerRuntimes();if(len(allServers)>0):fortempServerinallServers:jdbcServiceRT=tempServer.getJDBCServiceRuntime();dataSources=jdbcServiceRT.getJDBCDataSourceRuntimeMBeans();if(len(dataSources)>0):fordataSourceindataSources:打印"Server:",tempServer打印"Datasource:",dataSource.getName()打印"ActiveCount",dataSource.getActiveConnectionsCurrentCount()file.write(url+,")file.write(str(tempServer.getName())+",")file.write(str(dataSource.getName())+",")file.write(str(dataSource.getActiveConnectionsAverageCount())+",")file.write(str(dataSource.getActiveConnectionsCurrentCount())+",")file.write(str(dataSource.getActiveConnectionsHighCount())+",")file.write(str(dataSource.getConnectionDelayTime())+",")file.write(str(dataSource.getConnectionsTotalCount())+",")file.write(str(dataSource.getCurrCapacity())+",")file.write(str(数据Source.getCurrCapacityHighCount())+",")file.write(str(dataSource.getDeploymentState())+",")file.write(str(dataSource.getFailedReserveRequestCount())+",")file.write(str(dataSource.getFailuresToReconnectCount())+",")file.write(str(dataSource.getHighestNumAvailable())+",")file.write(str(dataSource.getHighestNumUnavailable())+",")file.write(str(dataSource.getLeakedConnectionCount())+",")file.write(str(dataSource.getNumAvailable())+",")file.write(str(dataSource.getNumUnavailable())+",")file.write(str(dataSource.getPrepStmtCacheAccessCount())+",")file.write(str(dataSource.getPrepStmtCacheAddCount())+",")file.write(str(dataSource.getPrepStmtCacheCurrentSize())+",")文件。write(str(dataSource.getPrepStmtCacheDeleteCount())+",")file.write(str(dataSource.getPrepStmtCacheHitCount())+",")file.write(str(dataSource.getPrepStmtCacheMissCount())+",")file.write(str(dataSource.getProperties())+",")file.write(str(dataSource.getReserveRequestCount())+",")文件.write(str(dataSource.getState())+",")file.write(str(dataSource.getWaitingForConnectionCurrentCount())+",")file.write(str(dataSource.getWaitingForConnectionFailureTotal())+",")file.write(str(dataSource.getWaitingForConnectionHighCount())+",")file.write(str(dataSource.getWaitingForConnectionSuccessTotal())+",")file.write(str(dataSource.getWaitingForConnectionTotal())+",")file.write(str(dataSource.getWaitSecondsHighCount()))file.write("\n")相关属性说明名称说明名称此配置的名称WebLogicServer使用MBean来实现和保存配置。MBean属性:JDBCDataSourceRuntimeMBean.NameServer部署此数据源的服务器。ActiveConnectionsAvgCount此数据源实例中的平均活动连接数。活动连接是应用程序使用的连接。此值仅在资源已配置为允许收缩时有效。MBean属性:JDBCDataSourceRuntimeMBean.ActiveConnectionsAverageCount当前活动连接计数应用程序当前使用的连接数。MBean属性:JDBCDataSourceRuntimeMBean.ActiveConnectionsCurrentCount最大活动连接计数自数据源实例化以来,此数据源实例中的最大活动数据库连接数。活动连接是应用程序使用的连接。MBean属性:JDBCDataSourceRuntimeMBean.ActiveConnectionsHighCountConnectionLatency创建与数据库的物理连接所需的平均时间(以毫秒为单位)。通过将所有连接时间的总和除以连接总数来计算此值。MBean属性:JDBCDataSourceRuntimeMBean.ConnectionDelayTimeTotalConnections自部署以来在数据源中累计创建的数据库连接总数。MBean属性:JDBCDataSourceRuntimeMBean.ConnectionsTotalCount当前容量当前数据源连接池中的JDBC连接数。MBean属性:JDBCDataSourceRuntimeMBean.CurrCapacityMaximum当前容量计数自部署数据源以来,此数据源实例中可用或正在使用的数据库连接的最大数量(当前容量)。MBean属性:JDBCDataSourceRuntimeMBean.CurrCapacityHighCountEnabled指示数据源是启用还是禁用:如果数据源已启用,则为true。如果数据源被禁用,则为False。MBean属性:JDBCDataSourceRuntimeMBean.EnabledFailedReservedRequestCount来自此数据源的无法实现的连接请求的累积动态计数。MBean属性:JDBCDataSourceRuntimeMBean.FailedReserveRequestCountReconnectionFailedCount数据源尝试刷新数据库连接但失败的次数。如果数据库不可用或与数据库的网络连接中断,连接将失败。MBean属性:JDBCDataSourceRuntimeMBean.FailuresToReconnectCountMaximumavailablenumber自数据源部署以来,此数据源实例中的应用程序随时可用的最大数据库连接数。MBean特性:JDBCDataSourceRuntimeMBean.HighestNumAvailable泄漏连接计数泄漏连接数。泄漏连接是保留在数据源中但在调用close()时未返回到数据源的连接。MBean属性:JDBCDataSourceRuntimeMBean.LeakedConnectionCountAvailable此数据源实例中当前空闲且可供应用程序使用的数据库连接数。MBean属性:JDBCDataSourceRuntimeMBean.NumAvailableNumber应用程序当前使用的或在此数据源实例中测试的连接数。MBean特性:JDBCDataSourceRuntimeMBean.NumUnavailable准备好的语句缓存访问计数访问语句缓存的次数的累积动态计数。MBean属性:JDBCDataSourceRuntimeMBean.PrepStmtCacheAccessCount预定义语句缓存添加计数添加到语句缓存的语句的累积动态计数。连接池中的每个连接都有自己的语句缓存。这个数字是添加到连接池中所有连接的缓存语句的总和。MBean特性:JDBCDataSourceRuntimeMBean.PrepStmtCacheAddCount预定义语句缓存当前大小当前缓存在语句缓存中的准备好的和可调用的语句数。连接池中的每个连接都有自己的语句缓存。这个数字是连接池中所有连接的缓存语句的总和。MBean属性:JDBCDataSourceRuntimeMBean.PrepStmtCacheCurrentSize预定义语句缓存移除计数从缓存中丢弃的语句的累积动态计数。连接池中的每个连接都有自己的语句缓存。这个数字是连接池中所有连接从缓存中丢弃的语句的总和。MBean特性:JDBCDataSourceRuntimeMBean.PrepStmtCacheDeleteCount预定义语句缓存命中计数缓存中使用语句的次数的累积动态计数。MBean属性:JDBCDataSourceRuntimeMBean.PrepStmtCacheHitCount预定义语句缓存命中计数使用缓存中的语句无法满足语句请求的次数。MBean特性:JDBCDataSourceRuntimeMBean.PrepStmtCacheMissCount保留请求计数从此数据源发出的连接请求的累积动态计数。MBean特性:JDBCDataSourceRuntimeMBean.ReserveRequestCountStatus数据源的当前状态。可能的状态是:运行-数据源已启用(已部署且未挂起)。这是数据源的正常状态。此状态包括数据库服务器不可用和数据源已创建(必须启用创建重试)或所有连接均未通过连接测试(包括创建测试、保持测试或定期测试)的情况。已暂停-数据源已禁用。Closed-数据源关闭,所有数据库连接关闭。过载-池中的所有资源都在使用中。未知-数据源状态未知。MBean属性:JDBCDataSourceRuntimeMBean.State基于RCLB的成功借用计数发现现有连接满足运行时连接负载平衡策略的保留请求数。MBean属性:JDBCOracleDataSourceRuntimeMBean.SuccessfulRCLBBasedBorrowCountFailedRCLBBasedBorrowCount根据运行时连接负载平衡策略未找到连接的保留请求数。MBean属性:JDBCOracleDataSourceRuntimeMBean.FailedRCLBBasedBorrowCount成功的基于关系的借用计数找到满足关系策略的现有连接的保留请求数。MBean属性:JDBCOracleDataSourceRuntimeMBean.SuccessfulAffinityBasedBorrowCountFailedAffinityBasedBorrowCount未找到关系策略的现有连接的保留请求数。MBean属性:JDBCOracleDataSourceRuntimeMBean.FailedAffinityBasedBorrowCountJDBC驱动程序用于创建数据库连接的JDBC驱动程序的驱动程序类名称。MBean属性:JDBCDataSourceRuntimeMBean.VersionJDBCDriverMaxWaitSeconds自连接池实例化以来应用程序在此连接池实例中等待连接的最大秒数(最大连接保留等待时间)。当完成的getConnection请求返回连接所需的时间比之前的任何请求都长时,此值将更新。MBean属性:JDBCDataSourceRuntimeMBean.WaitSecondsHighCount等待连接当前计数等待数据库连接的连接请求数。MBean属性:JDBCDataSourceRuntimeMBean.WaitingForConnectionCurrentCountWaitingForConnectionCurrentCountWaitingForConnectionCurrentCountWaitingForConnectionCurrentCount来自此数据源的连接请求的累积动态计数,这些请求必须等待才能获得连接但无法获得连接。挂起的连接请求可能因多种原因而失败,包括等待时间超过ConnectionReserveTimeoutSeconds。MBean特性:JDBCDataSourceRuntimeMBean.WaitingForConnectionFailureTotal最大等待连接计数当前同时等待此数据源实例中的连接的最大应用程序请求数。MBean属性:JDBCDataSourceRuntimeMBean.WaitingForConnectionHighCountWaitingForConnectionHighCountWaitingForConnectionHighCount来自此数据源的连接请求的累积动态计数,必须等待才能获得连接并最终成功获得连接。MBean属性:JDBCDataSourceRuntimeMBean.WaitingForConnectionSuccessTotal等待连接总数必须等待才能获得连接的来自此数据源的连接请求的累积动态计数,包括最终获得或未获得连接的连接请求。MBean属性:JDBCDataSourceRuntimeMBean.WaitingForConnectionTotal实例名称此实例的名称。MBean属性:JDBCOracleDataSourceInstanceRuntimeMBean.InstanceNameSignature唯一标识实例的签名。MBean属性:JDBCOracleDataSourceInstanceRuntimeMBean.Signature当前权重实例的当前权重。MBean属性:JDBCOracleDataSourceInstanceRuntimeMBean.CurrentWeightMaximumUnavailableNumber自部署数据源以来,在该数据源实例中应用程序使用或系统测试的最大数据库连接数。MBean属性:JDBCORacleDataSourceRuntimeMBean.HighestNumUnavailable运行脚本执行wlst脚本需要有weblogic环境,建议在服务器端执行。首先进入$DOMAIN_HOME/bin/目录,执行setDomainEnv.sh脚本,设置weblogic环境cd/u01/Middleware/user_projects/domains/portal_domain/bin。./setDomainEnv.sh请注意,脚本的第二行以.如果没有这个点,则设置不生效。上传脚本到服务器,通过wlst工具执行脚本cd/home/oracle/scriptsjavaweblogic.WLSTdatasource.pylocalhost:7001weblogicpassword脚本需要指定控制台地址,管理员账号,管理员密码。脚本执行成功后,会在当前目录生成一个datasource.csv文件,可以直接用excel打开,也可以通过curl命令将该文件上传到远程服务器。统计多台服务器如果要统计多台服务器,可以再写一个调用脚本,多次调用datasource.py。cd/u01/Middleware/user_projects/domains/portal_domain/bin../setDomainEnv.shcd/home/oracle/scriptsjavaweblogic.WLSTdatasource.pylocalhost:7001weblogicpasswordjavaweblogic.WLSTdatasource.pylocalhost:7002weblogicpasswordjavaweblogic.WLSTdatasource.pylocalhost:7003weblogicpasswordjavaweblogic.WLSTdatasource.pylocalhost:7004weblogicpasswordjavaweblogic.WLSTdatasource.pylocalhost:7005weblogicpassword#...写在最后jython属于小众语言,网上资料很少。但用法与python大体相同。如果找不到jython的资料,可以试试查python。
