wlst獲取weblogic數據源運行時信息

背景

weblogic能夠經過console查看數據源運行時統計信息,如當前活動數,最大容量,最小容量等,若是Server數量龐大或者須要作數據源統計監控功能,那麼須要經過程序定時獲取數據源運行時信息,有兩個方案能夠獲取到數據源運行時信息。html

  • 經過JMX獲取weblogic運行時MBean信息,從MBean中獲取數據源運行時信息。
  • 經過jython腳本獲取數據源運行時信息,這也是本文要介紹的方法。

console上查看數據源運行時信息

wlst 腳本

基本思路就是經過鏈接服務器獲取數據源運行時信息,經過csv格式輸出到文件裏,csv文件能夠經過excel打開作統計分析,也能夠將csv文件上傳到服務器經過第三方程序進行統計分析。java

import sys
url=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):
  for tempServer in allServers:
    jdbcServiceRT = tempServer.getJDBCServiceRuntime();
    dataSources = jdbcServiceRT.getJDBCDataSourceRuntimeMBeans();
    if (len(dataSources) > 0):
        for dataSource in dataSources:
            print "Server:" , tempServer
            print "Datasource:" , dataSource.getName()
            print "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(dataSource.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())+",")
            file.write(str(dataSource.getPrepStmtCacheDeleteCount())+",")
            file.write(str(dataSource.getPrepStmtCacheHitCount())+",")
            file.write(str(dataSource.getPrepStmtCacheMissCount())+",")
            file.write(str(dataSource.getProperties())+",")
            file.write(str(dataSource.getReserveRequestCount())+",")
            file.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")

相關屬性介紹

名稱 說明
名稱 此配置的名稱。WebLogic Server 使用 MBean 來實施並保存配置。
MBean 屬性:
JDBCDataSourceRuntimeMBean.Name
服務器 部署此數據源的服務器。
活動鏈接平均計數 此數據源實例中的平均活動鏈接數。
活動鏈接是指應用程序使用的鏈接。僅當已將資源配置爲容許收縮時,此值纔有效。
MBean 屬性:
JDBCDataSourceRuntimeMBean.ActiveConnectionsAverageCount
當前活動鏈接計數 當前正在由應用程序使用的鏈接數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.ActiveConnectionsCurrentCount
最大活動鏈接計數 實例化數據源以來數據源此實例中的活動數據庫鏈接的最大數量。
活動鏈接是指應用程序使用的鏈接。
MBean 屬性:
JDBCDataSourceRuntimeMBean.ActiveConnectionsHighCount
鏈接延遲時間 建立到數據庫的物理鏈接所花費的平均時間 (毫秒)。
使用全部鏈接時間的總和除以總鏈接數來計算該值。
MBean 屬性:
JDBCDataSourceRuntimeMBean.ConnectionDelayTime
鏈接總數 自部署數據源以來在其中累積建立的數據庫鏈接的總數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.ConnectionsTotalCount
當前容量 當前數據源鏈接池中的 JDBC 鏈接的計數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.CurrCapacity
最大當前容量計數 自部署數據源以來數據源的此實例中可用或正在使用 (當前容量) 的數據庫鏈接的最大數量。
MBean 屬性:
JDBCDataSourceRuntimeMBean.CurrCapacityHighCount
已啓用 指示數據源是處於啓用仍是禁用狀態:

若是已啓用數據源。

若是已禁用數據源。
MBean 屬性:
JDBCDataSourceRuntimeMBean.Enabled
失敗的保留請求計數 沒法完成的今後數據源發出的鏈接請求的累積動態計數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.FailedReserveRequestCount
從新鏈接失敗計數 數據源嘗試刷新數據庫鏈接並失敗的次數。
若是數據庫不可用或到數據庫的網絡鏈接中斷,鏈接就會失敗。
MBean 屬性:
JDBCDataSourceRuntimeMBean.FailuresToReconnectCount
最大可用數量 部署數據源以來,任意時刻此數據源實例中的空閒並可供應用程序使用的數據庫鏈接的最大數量。
MBean 屬性:
JDBCDataSourceRuntimeMBean.HighestNumAvailable
泄漏鏈接計數 泄漏鏈接數。泄漏鏈接是指在數據源中保留但在調用 close() 時未返回給數據源的鏈接。
MBean 屬性:
JDBCDataSourceRuntimeMBean.LeakedConnectionCount
可用數量 此數據源實例中當前空閒並可供應用程序使用的數據庫鏈接數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.NumAvailable
不可用數量 當前由應用程序使用的鏈接數,或在此數據源實例中測試的鏈接數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.NumUnavailable
預約義語句高速緩存訪問計數 訪問語句高速緩存的次數的累積動態計數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheAccessCount
預約義語句高速緩存添加計數 添加到語句高速緩存的語句的累積動態計數。
鏈接池中的每一個鏈接都有其本身的語句高速緩存。此數字是添加到鏈接池中全部鏈接的高速緩存的語句數之和。
MBean 屬性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheAddCount
預約義語句高速緩存當前大小 當前高速緩存在語句高速緩存中的預約義語句和可調用語句的數量。
鏈接池中的每一個鏈接都有其本身的語句高速緩存。此數字是鏈接池中全部鏈接的高速緩存的語句數之和。
MBean 屬性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheCurrentSize
預約義語句高速緩存刪除計數 從高速緩存丟棄的語句的累積動態計數。
鏈接池中的每一個鏈接都有其本身的語句高速緩存。此數字是從鏈接池中全部鏈接的高速緩存丟棄的語句數之和。
MBean 屬性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheDeleteCount
預約義語句高速緩存命中計數 高速緩存中的語句使用次數的累積動態計數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheHitCount
預約義語句高速緩存未命中計數 沒法使用高速緩存中的語句知足語句請求的次數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.PrepStmtCacheMissCount
保留請求計數 今後數據源發出的鏈接請求的累積動態計數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.ReserveRequestCount
狀態 數據源的當前狀態。
可能的狀態有:
正在運行
- 數據源已啓用 (已部署而且未掛起)。這是數據源的正常狀態。此狀態包括如下情形:數據庫服務器不可用而且建立了數據源 (必須啓用建立重試),或者全部鏈接均未經過鏈接測試 (包括建立、保留或按期測試時進行的測試)。
已掛起
- 已禁用數據源。
關閉
- 已關閉數據源而且已關閉全部數據庫鏈接。
超載
- 池中的全部資源都處於使用狀態。
未知
- 數據源狀態未知。
MBean 屬性:
JDBCDataSourceRuntimeMBean.State
成功的基於 RCLB 的借用計數 發現現有的鏈接知足運行時鏈接負載平衡策略的保留請求數。
MBean 屬性:
JDBCOracleDataSourceRuntimeMBean.SuccessfulRCLBBasedBorrowCount
失敗的基於 RCLB 的借用計數 根據運行時鏈接負載平衡策略未找到鏈接的保留請求數。
MBean 屬性:
JDBCOracleDataSourceRuntimeMBean.FailedRCLBBasedBorrowCount
成功的基於關係的借用計數 發現現有的鏈接知足關係策略的保留請求數。
MBean 屬性:
JDBCOracleDataSourceRuntimeMBean.SuccessfulAffinityBasedBorrowCount
失敗的基於關係的借用計數 未找到關係策略的現有鏈接的保留請求數。
MBean 屬性:
JDBCOracleDataSourceRuntimeMBean.FailedAffinityBasedBorrowCount
JDBC 驅動程序 用於建立數據庫鏈接的 JDBC 驅動程序的驅動程序類名稱。
MBean 屬性:
JDBCDataSourceRuntimeMBean.VersionJDBCDriver
最長等待秒數 自實例化鏈接池以來,應用程序等待此鏈接池實例中的鏈接的最大秒數 (最長鏈接保留等待時間)。
已完成的 getConnection 請求返回鏈接所花費的時間長於任何之前的請求時,將會更新此值。
MBean 屬性:
JDBCDataSourceRuntimeMBean.WaitSecondsHighCount
等待鏈接當前計數 等待數據庫鏈接的鏈接請求數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.WaitingForConnectionCurrentCount
等待鏈接失敗總數 今後數據源發出的必須等待才能得到鏈接而最終又未能得到鏈接的鏈接請求的累積動態計數。
等待的鏈接請求失敗的緣由有多種,其中包括等待時間超過了 ConnectionReserveTimeoutSeconds。
MBean 屬性:
JDBCDataSourceRuntimeMBean.WaitingForConnectionFailureTotal
最大等待鏈接計數 當前同時等待此數據源實例中的鏈接的最大應用程序請求數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.WaitingForConnectionHighCount
等待鏈接成功總數 今後數據源發出的必須等待才能得到鏈接而最終成功得到鏈接的鏈接請求的累積動態計數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.WaitingForConnectionSuccessTotal
等待鏈接總數 今後數據源發出的必須等待才能得到鏈接的鏈接請求 (包括最終得到或未得到鏈接的鏈接請求) 的累積動態計數。
MBean 屬性:
JDBCDataSourceRuntimeMBean.WaitingForConnectionTotal
實例名 此實例的名稱。
MBean 屬性:
JDBCOracleDataSourceInstanceRuntimeMBean.InstanceName
簽名 惟一標識實例的簽名。
MBean 屬性:
JDBCOracleDataSourceInstanceRuntimeMBean.Signature
當前權重 實例的當前權重。
MBean 屬性:
JDBCOracleDataSourceInstanceRuntimeMBean.CurrentWeight
最大不可用數量 自數據源部署以來數據源的此實例中由應用程序使用或由系統測試的最大數據庫鏈接數。
MBean 屬性:
JDBCOracleDataSourceRuntimeMBean.HighestNumUnavailable

運行腳本

要執行wlst腳本,你須要有weblogic環境,建議在服務器上執行。python

  • 先進入到$DOMAIN_HOME/bin/目錄,執行setDomainEnv.sh腳本,設置weblogic環境
cd /u01/Middleware/user_projects/domains/portal_domain/bin
. ./setDomainEnv.sh
注意第二行腳本以 .開頭,若是沒有這個點,設置不生效。
  • 將腳本上傳至服務器,經過wlst工具執行腳本
cd /home/oracle/scripts
java weblogic.WLST datasource.py localhost:7001 weblogic password

腳本須要指定console地址,管理員帳號,管理員密碼,腳本執行成功後,會在當前目錄生成一個datasource.csv文件,能夠直接用excel打開,也能夠將文件經過curl命令上傳至遠程服務器。web

統計多臺服務器

若是要統計多臺服務器,能夠再寫一個調用腳本,屢次調用datasource.py便可。數據庫

cd /u01/Middleware/user_projects/domains/portal_domain/bin
. ./setDomainEnv.sh
cd /home/oracle/scripts
java weblogic.WLST datasource.py localhost:7001 weblogic password
java weblogic.WLST datasource.py localhost:7002 weblogic password
java weblogic.WLST datasource.py localhost:7003 weblogic password
java weblogic.WLST datasource.py localhost:7004 weblogic password
java weblogic.WLST datasource.py localhost:7005 weblogic password
# ...

寫在最後

jython屬於偏小衆的語言,網上資料較少,但用法和python大部分一致,若是查不到jython的資料能夠試試查python。緩存

相關文章
相關標籤/搜索