【问题标题】:Is there a way to List the all Server status of Websphere from different hosts?有没有办法列出来自不同主机的 Websphere 的所有服务器状态?
【发布时间】:2019-09-05 08:20:06
【问题描述】:

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

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

示例输出:

  • Server1 machine1:正在运行
  • Server2 机器 1:正在运行
  • Server3 machine2:正在运行
  • Server4 machine2:正在运行
  • Server5 machine5:已停止

【问题讨论】:

    标签: websphere jython wsadmin


    【解决方案1】:

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

    这是一个可能有用的代码 sn-p。

    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。

    【讨论】:

    • 如果我错了请纠正我,我认为它只显示与 dmgr 同一台机器中的服务器的服务器状态。我仍然需要复制脚本并将其运行到其他节点/机器,对吗?
    • 脚本显示单元内所有服务器的状态。第一个 for 循环填充 (nodename, servername) 列表,供第二个 for 循环中的 Server MBean 使用。您无需将其复制到托管节点。
    • @EkC。上面的脚本很有帮助。我还需要运行它的 JVM/服务器的主机名来自动化一些事情。知道如何通过在上述上下文或通用 AdminTask 命令中传递节点或服务器名称来获得它吗?
    • 我可以使用 AdminTask.listServerPorts 和其他命令,但尝试查看是否有直接命令而不解析数据。
    猜你喜欢
    • 1970-01-01
    • 2020-08-14
    • 2010-12-13
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    相关资源
    最近更新 更多