Есть ли способ перечислить все состояния сервера Websphere с разных хостов?

Я пытаюсь создать скрипт, который будет отображать все состояния JVM.

до сих пор я создал скрипт, который в основном вызывает serverStatus.sh, а затем запускается с разных хостов, чтобы получить статус каждой JVM с разных машин. затем сценарий помещает его в текстовый файл в общей файловой системе. что я знаю, действительно отстой. мне просто интересно, есть ли такой способ, как wlst.sh, выполняет проверку.

Пример вывода:

  • Сервер1 машина1: РАБОТАЕТ
  • Server2 машина1: РАБОТАЕТ
  • Server3 машина2: РАБОТАЕТ
  • Server4 машина2: РАБОТАЕТ
  • Сервер5 машина5: ОСТАНОВЛЕНО

person Roo-Gi    schedule 15.04.2019    source источник


Ответы (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.
person Ek C.    schedule 16.04.2019
comment
пожалуйста, поправьте меня, если я ошибаюсь, я думаю, что он показывает только состояние серверов на той же машине, что и dmgr. мне все еще нужно продублировать сценарий и запустить его на другом узле/машинах, я прав? - person Roo-Gi; 17.04.2019
comment
Скрипт показывает состояние всех серверов в ячейке. Первый цикл for заполняет список (имя узла, имя сервера), который будет использоваться компонентом Server MBean во втором цикле for. Вам не нужно дублировать его на управляемые узлы. - person Ek C.; 19.04.2019
comment
@EkC. приведенный выше скрипт полезен. Мне также нужно имя хоста JVM/сервера, на котором он работает, чтобы автоматизировать некоторые вещи. Любая идея, как получить это, передав имя узла или сервера либо в вышеуказанном контексте, либо с помощью общей команды AdminTask? - person cnu; 04.10.2019
comment
Я могу использовать AdminTask.listServerPorts и другие команды, но пытаюсь увидеть, есть ли прямая команда без разбора данных. - person cnu; 04.10.2019