2016-05-23 5 views
1

Я пытаюсь получить журналы сервера Websphere через wsadmin. При подключении к ND мне может потребоваться получить журналы с удаленных узлов, где у меня нет доступа к SSH.Извлечение журналов JVM в Websphere с использованием wsadmin

Поскольку я могу просматривать журналы с помощью консоли управления, мне было интересно, могу ли я извлечь журналы с помощью wsadmin.

мне удалось сделать следующее:

s1 = AdminConfig.getid('/Node:'+nodeName+'/Server:'+serverName) 
    log = AdminConfig.showAttribute(s1, 'outputStreamRedirect') 

Для каждого сервера, это печатает что-то вроде этого:

[baseHour 24] 
[fileName ${SERVER_LOG_ROOT}/SystemOut.log] 
[formatWrites true] 
[maxNumberOfBackupFiles 5] 
[messageFormatKind BASIC] 
[rolloverPeriod 24] 
[rolloverSize 1] 
[rolloverType SIZE] 
[suppressStackTrace false] 
[suppressWrites false] 
[baseHour 24] 
[fileName ${SERVER_LOG_ROOT}/SystemErr.log] 
[formatWrites true] 
[maxNumberOfBackupFiles 5] 
[messageFormatKind BASIC] 
[rolloverPeriod 24] 
[rolloverSize 1] 
[rolloverType SIZE] 
[suppressStackTrace false] 
[suppressWrites false] 

Есть ли какой-либо объект в wsadmin, которые могли бы помочь мне получить содержимое этого атрибута fileName?

ответ

1

Это работает для одного сервера, но его легко редактировать для нескольких серверов и конфигураций.

Он находит путь к журналу и отправляет муравьевое задание для загрузки его содержимого, а затем получает журнал муравьев.

Разбор файла для получения только журнала должен быть достаточно простым.

from java.lang import String 
import jarray 

serverName = sys.argv[0] 
s1 = AdminConfig.getid('/Server:'+serverName) 
log = AdminConfig.showAttribute(s1, 'outputStreamRedirect') 
errLog = AdminConfig.showAttribute(s1, 'errorStreamRedirect') 
adminOperations = AdminControl.queryNames('WebSphere:*,type=AdminOperations,process='+serverName).splitlines()[0] 
sysOutLogPath = AdminControl.invoke(adminOperations, 'expandVariable', [AdminConfig.showAttribute(log, 'fileName')]) 
#sysErrLogPath = AdminControl.invoke(adminOperations, 'expandVariable', [AdminConfig.showAttribute(errLog, 'fileName')]) 
fileContent_outLog = '<project name="printLog" default="printLog"><target name="printLog"><loadfile property="logContents" srcFile="'+sysOutLogPath+'"/></target></project>' 
str = String(fileContent_outLog) 
bytes = str.getBytes() 
antAgent = AdminControl.makeObjectName(AdminControl.queryNames('WebSphere:*,type=AntAgent,process='+serverName)) 
AdminControl.invoke_jmx(antAgent, 'putScript', [String('printLog.xml'),bytes], jarray.array(['java.lang.String', '[B'], String)) 
AdminControl.invoke_jmx(antAgent, 'invokeAnt', [jarray.array([], String), String('printLog.xml'), String('printLog')], jarray.array(['[Ljava.lang.String;', 'java.lang.String', 'java.lang.String'], String)) 
logBytes = AdminControl.invoke_jmx(antAgent, 'getLastLog', [],jarray.array([], String)) 
tempFile = open('./'+serverName+'.SystemOut.log','w') 
tempFile.write(String(logBytes)) 
tempFile.close() 
Смежные вопросы