К основному контенту

Weblogic Diagnostic Framework Run Bash Script (reboot managed server) - (bad practices)

Вообщем переодически сервер дохнет по: The WebLogic Server encountered a critical failure java.lang.OutOfMemoryError: Metaspace Reason: There is a panic condition in the server. The server is configured to exit on panic И хотя это гавно пишет типа  Reason: There is a panic condition in the server. The server is configured to exit on panic чёт ни хуя он ни куда не exit.... Вообщем т.к разбираться с тем чем он жрётся нет ни времени ни желания (оно обязательно появится)... как вариант можно приделать костыль... костыль будет заключаться в ребуте сервера при возникновении этой ошибки. Что значит для этого надо... Желания и понимание что так жить нельзя, и вообще... Делаем новый модуль называем скажем:  Reboot-OOMMetaSpace Идём в в новый модуль делаем Policy: Называем его OOM-Metaspace и говорит что это Server log: Жмём next в Configuration Policy пишем: log.logMessage.contains('java.lang.OutOfMemoryError: Metaspace'...

Oracle Cloud Control 12c/13c modify target setup Life Cycle Status (emcli, multiple targets)

https://pardydba.wordpress.com/2012/10/17/how-and-why-you-should-set-target-lifecycle-status-properties-in-em12c/+&cd=1&hl=ru&ct=clnk&gl=ru

Итак есть куча таргетов middleware, host и т.д ... Менять руками  LifeCycle Status для всех таргетов внутри middleware это геморой поэтому сделать надо это скриптом.
По ссылке выше предлагается это сделать для хостов. Ниже будет описано как это сделать для всех таргетов.

В краце инструкция такова:
Ставим emcli:
oracle@omshost$ export JAVA_HOME=$OMS_HOME/../jdk16/jdk
oracle@omshost$ export PATH=$JAVA_HOME/bin:$PATH
oracle@omshost$ export ORACLE_HOME=$OMS_HOME
oracle@omshost$ cd $ORACLE_HOME
oracle@omshost$ mkdir emcli
oracle@omshost$ java -jar $ORACLE_HOME/sysman/jlib/emclikit.jar client -install_dir=$ORACLE_HOME/emcli
Oracle Enterprise Manager 12c Release 2.
Copyright (c) 1996, 2012 Oracle Corporation. All rights reserved.
EM CLI client-side install completed successfully.
oracle@omshost$ $ORACLE_HOME/emcli/emcli setup -url=https://omshost.domain.com:7803/em -username=sysman
Oracle Enterprise Manager Cloud Control 12c Release 2.
Copyright (c) 1996, 2012 Oracle Corporation and/or its affiliates. All rights reserved.


Enter password
Warning: This certificate has not been identified as trusted in the local trust store
--------------------------------------
[certificate details snipped]
--------------------------------------
Do you trust the certificate chain? [yes/no] yes
Emcli setup successful
Вытащить необходимые таргеты в зависимости от того что нам надо:
./emcli get_targets -noheader -script -targets="host"
./emcli get_targets -noheader -script -targets="oracle_database"

Посмотреть все возможные варианты я бы предложил командой:
./emcli list -sql='select target_type from mgmt$target'|sort -u

В моём случае надо изменить LifeCycle для домена weblogic OAM.
Вытаскиваем нужные таргеты и ставим им статус Prodaction, так как в поле Target Name может быть пробел то команда будет на самая простая:

./emcli get_targets -noheader -script|grep SEDOAM|awk '{for(i=4;i<NF;i++)printf "%s",$i OFS; if (NF) printf "%s",$NF;print ":"$3":LifeCycle Status:Production"}'> ~/oam_targets.txt

Для нескольких таргетов:
./emcli get_targets -noheader -script|grep -i 'OAM\|OVD\|IDM'|awk '{for(i=4;i<NF;i++)printf "%s",$i OFS; if (NF) printf "%s",$NF;print ":"$3":LifeCycle Status:Production"}' > ~/ooi_targets.txt

Вывод должен быть примерно такой:
/OAM_idm_domain/idm_domain/AdminServer/FMW Welcome Page Application(11.1.0.0.0):j2ee_application:LifeCycle Status:Production
/OAM_idm_domain/idm_domain/AdminServer/oamsso_logout(11.1.2.0.0):j2ee_application:LifeCycle Status:Production
/OAM_idm_domain/idm_domain/oam_server1/oamsso_logout(11.1.2.0.0):j2ee_application:LifeCycle Status:Production
/OAM_idm_domain/idm_domain/AdminServer/oam_admin(11.1.2.0.0):j2ee_application:LifeCycle Status:Production
/OAM_idm_domain/idm_domain/oam_Cluster/oamsso_logout(11.1.2.0.0):j2ee_application_cluster:LifeCycle Status:Production
OAM_idm_domain:oracle_ias_farm:LifeCycle Status:Production
/OAM_idm_domain/idm_domain/oam_server1/oam_server(11.1.2.0.0):oracle_oam:LifeCycle Status:Production
/OAM_idm_domain/idm_domain/OAMDomain:oracle_oam_cluster:LifeCycle Status:Production
/OAM_idm_domain/idm_domain/oam_Cluster:weblogic_cluster:LifeCycle Status:Production
/OAM_idm_domain/idm_domain:weblogic_domain:LifeCycle Status:Production
/OAM_idm_domain/idm_domain/AdminServer:weblogic_j2eeserver:LifeCycle Status:Production
/OAM_idm_domain/idm_domain/oam_server1:weblogic_j2eeserver:LifeCycle Status:Production

Далее надо пнуть этот вывод обратно в grid:
./emcli set_target_property_value -property_records="REC_FILE" -input_file="REC_FILE:/home/oracle/oam_targets.txt" -separator=property_records="\n"

P.S
Возможно ошибка вида:
Error: Session expired. Run emcli login to establish a session.
В этом случае надо залогиниться заново:
./emcli login -username=sysman


С какого то хуя я решил отредактировать этот пост добавлю скрипт ch-lifecycle-domain-status.sh:

#!/bin/bash
##################################################
# Change lifecycle in oem12/13 for targets
##################################################
# Modify params for you grid ###################@
export ORACLE_HOME=/opt/oracle/middleware/oem13.2
export PATH=$ORACLE_HOME/emcli:$PATH
#################################################
read -p "Enter weblogic Unique Domain Identifier : " WL_UID
read -p "Enter New Lifecycle Status : " LStatus

#read -p "Enter sysman password : " SYSMAN_PASSWD

emcli list_active_sessions >/dev/null 2>&1
if [ "$?" == "255" ]
then
read -s -p "Enter sysman password: " SYSMAN_PASSWD
emcli login -username=sysman -password=$SYSMAN_PASSWD >/dev/null 2>&1
#echo "Error: Session expired. Run emcli login to establish a session."
fi

echo -n "Generate list targets for modify... "
emcli get_targets -noheader -script|grep "$WL_UID"|sed 's/Status Pending/StatusPending/g'|sed 's/Under Blackout/UnderBlackout/g'|awk -v lstatus=$LStatus '{for(i=4;i<NF;i++)printf "%s",$i OFS; if (NF) printf "%s",$NF;print ":"$3":LifeCycle Status:"lstatus}' > ./targets.lst
if [ ! -s targets.lst ]
then
echo "Target not found!"
exit 1
fi
if [ "$?" = 0 ]
then
echo "Successful."
else
echo "Error"
exit 1;
fi
echo -n "Import modify LifeCycle Status for $WL_UID... "
emcli set_target_property_value -property_records="REC_FILE" -input_file="REC_FILE:./targets.lst" -separator=property_records="\n"
#rm ./targets.lst
exit 0

Короче в краце работает так, открывает Grid и копируем например имя weblogic domain для которого мы хотим помнять life cycle т.е например:

т.е берём например:
SED_ecm_domain

Берём life cycle статус у меня их 3:


Запускаем скрипт ./ch-lifecycle-domain-status.sh:
Enter weblogic Unique Domain Identifier : SED_ecm_domain
Enter New Lifecycle Status : Production
Generate list targets for modify... Successful.
Import modify LifeCycle Status for SED_ecm_domain... Properties updated successfully

В итоге все таргеты данного домена терь имею life circle статус Production.

Так же как вариант можно сделать группу например Production Hosts накидать в неё те хосты которые прод и сделать так:
emcli set_target_property_value -property_records="Production hosts:composite:LifeCycle Status:Production" -propagate_to_members

Где
Production hosts - имя группы
composite - т.е тип группа
LifeCycle Status - параметр который устанавливаем
Production - значение параметра

-propagate_to_members - применить каскадно

https://blogs.oracle.com/oem/leveraging-target-properties-to-enhance-enterprise-manager-capabilities-v2

Комментарии

Популярные сообщения из этого блога

Backup elasticsearch with curator.

Сжато кратко, в падлу много расписывать... Вообщем пробуем забэкапить elasticsearch 5.0 с помощью curator 4.2 Что имеем: 2 ноды 1) vapp-cn1 2) vapp-cn2 Репозиторий для бэкапа есть на обоих хостах находится в /backup/el_backup/front права для пользователя под который запущен elasticsearch есть, на обоих нодах в конфиге elasticsearch.yml указанно: path.repo: ["/backup/el_backup/front"] Настройка curator, бэкапить будем все индексы поэтому: 1. snapshot-script.yml actions:   1:     action: snapshot     description: >-       Snapshot logstash- prefixed indices older than 1 day (based on index       creation_date) with the default snapshot name pattern of       'curator-%Y%m%d%H%M%S'.  Wait for the snapshot to complete.  Do not skip       the repository filesystem access check.  Use the other options to create       the snapsho...

Weblogic Diagnostic Framework Run Bash Script (reboot managed server) - (bad practices)

Вообщем переодически сервер дохнет по: The WebLogic Server encountered a critical failure java.lang.OutOfMemoryError: Metaspace Reason: There is a panic condition in the server. The server is configured to exit on panic И хотя это гавно пишет типа  Reason: There is a panic condition in the server. The server is configured to exit on panic чёт ни хуя он ни куда не exit.... Вообщем т.к разбираться с тем чем он жрётся нет ни времени ни желания (оно обязательно появится)... как вариант можно приделать костыль... костыль будет заключаться в ребуте сервера при возникновении этой ошибки. Что значит для этого надо... Желания и понимание что так жить нельзя, и вообще... Делаем новый модуль называем скажем:  Reboot-OOMMetaSpace Идём в в новый модуль делаем Policy: Называем его OOM-Metaspace и говорит что это Server log: Жмём next в Configuration Policy пишем: log.logMessage.contains('java.lang.OutOfMemoryError: Metaspace'...