有没有办法列出来自不同主机的Websphere的所有服务器状态?

时间:2019-04-15 10:57:34

标签: websphere jython wsadmin

我正在尝试创建一个显示所有JVM状态的脚本。

到目前为止,我已经创建了一个脚本,该脚本主要调用serverStatus.sh,然后从不同的主机运行以从不同的计算机获取每个JVM的状态。然后脚本将其放入共享文件系统中的文本文件中。我知道这真的很烂。 我只是想知道是否有像wlst.sh这样的检查方式。

示例输出:

  • Server1的计算机1:正在运行
  • Server2机器1:正在运行
  • Server3 machine2:正在运行
  • Server4机器2:正在运行
  • Server5机器5:已停止

1 个答案:

答案 0 :(得分:1)

如果您在ND环境中,则可以使用wsadmin脚本检查Server MBean的状态(请参见Server MBean - Javadoc)。

这是一个可能有用的代码段。

nodes=AdminConfig.getid('/Node:/').splitlines()
nodenames=[ AdminConfig.showAttribute(node,'name') for node in nodes ]
j2eeServerTuples=[]
for nodename in nodenames:
    serversString="/Node:%s/Server:/" % (nodename)
    servers=AdminConfig.getid(serversString).splitlines()
    for server in servers:
        if AdminConfig.showAttribute(server,'serverType') in ['APPLICATION_SERVER','DEPLOYMENT_MANAGER','NODE_AGENT'] :
            j2eeServerTuples.append( (nodename, AdminConfig.showAttribute(server,'name')) )

for (nodename,servername) in j2eeServerTuples:
    mBeanString = 'WebSphere:*,name=%s,type=Server,j2eeType=J2EEServer,node=%s' % (servername, nodename)
    serverMBean = AdminControl.queryNames(mBeanString)
    if (len(serverMBean) == 0):
        (state, pid) = ("UNREACHABLE", "-----")
    else:
        (state, pid) = (AdminControl.getAttribute(serverMBean,'state'), AdminControl.getAttribute(serverMBean,'pid'))

    print "%20s: %-30s => %15s : %s" % ( nodename, servername, state, pid)

上面脚本的一些技巧。

  1. 该脚本与dmgr对话,因此它必须正在运行。
  2. wsadmin有其开销,因此与多次调用wsadmin相比,最好在长时间运行的循环中运行它。