Вообщем переодически сервер дохнет по: 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'...
Вообщем дело такое.
weblogic 12.1.3 достаточно было дать роль Deployer для того что бы пользователь мог управлять datasource:
после этого под пользователем с групой Deployers (в данном случае пользователь Deployer) чудесным образов мы видим следующую картинку:
Важное замечание забыл, только не работало ни хуя ни одна кнопка=)
weblogic 12.2.1 аналогично выдаём роль Deployer:
после этого под пользователем testds с группой Deployers видим:
Т.е ни одной кнопки... позволяющей перезапустить или сделать что-то еще с datasoruce`ом.
Но тем не менее проверим как это работает через wlst:
[oracle@oracleadmintst mid]$ cd /opt/oracle/user_projects/domains/base_domain/
[oracle@oracleadmintst base_domain]$ cd bin
weblogic 12.1.3 достаточно было дать роль Deployer для того что бы пользователь мог управлять datasource:
после этого под пользователем с групой Deployers (в данном случае пользователь Deployer) чудесным образов мы видим следующую картинку:
Важное замечание забыл, только не работало ни хуя ни одна кнопка=)
weblogic 12.2.1 аналогично выдаём роль Deployer:
после этого под пользователем testds с группой Deployers видим:
Т.е ни одной кнопки... позволяющей перезапустить или сделать что-то еще с datasoruce`ом.
Но тем не менее проверим как это работает через wlst:
[oracle@oracleadmintst mid]$ cd /opt/oracle/user_projects/domains/base_domain/
[oracle@oracleadmintst base_domain]$ cd bin
[oracle@oracleadmintst bin]$ . setDomainEnv.sh
[oracle@oracleadmintst base_domain]$ java weblogic.WLST
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
wls:/offline> connect('testds','lalal','t3://oracleadmintst:7001')
Connecting to t3://oracleadmintst:7001 with userid weblogic ...
Successfully connected to Admin Server "AdminServer" that belongs to domain "base_domain".
Warning: An insecure protocol was used to connect to the server.
To ensure on-the-wire security, the SSL port or Admin port should be used instead.
wls:/base_domain/serverConfig/> domainRuntime()
Location changed to domainRuntime tree. This is a read-only tree
with DomainMBean as the root MBean.
For more help, use help('domainRuntime')
wls:/base_domain/domainRuntime/> cd('ServerRuntimes/AdminServer/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ecmtstDS')
wls:/base_domain/domainRuntime/ServerRuntimes/AdminServer/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ecmtstDS> ls()
Тут мы видим кучу параметров, нас интересуют следующие:
-r-x clearStatementCache Void :
-r-x dumpPool Void :
-r-x dumpPoolProfile Void :
-r-x forceShutdown Void :
-r-x forceSuspend Void :
-r-x poolExists Boolean : String(poolName)
-r-x reset Void :
-r-x resume Void :
-r-x shrink Void :
-r-x shutdown Void :
-r-x start Void :
-r-x suspend Void :
-r-x testPool String :
Вообщем попробуем что-то сделать с datasource например shutdown/start
wls:/base_domain/domainRuntime/ServerRuntimes/AdminServer/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ecmtstDS> cmo.shutdown()
wls:/base_domain/domainRuntime/ServerRuntimes/AdminServer/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ecmtstDS>
Вывода нет что говорит о том что всё прошло нормально т.е права на shutdown датасорса у нас есть не смотря на то что кнопок в графической консоли мы не видим.
Попробуем запустить его:
wls:/base_domain/domainRuntime/ServerRuntimes/AdminServer/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ecmtstDS> cmo.start()
Traceback (innermost last):
File "<console>", line 1, in ?
weblogic.management.NoAccessRuntimeException: [Management:141302]Access not allowed for Subject: principals=[testds, Deployers], on resource JDBCDataSourceRuntime, action: execute, target start.
at weblogic.utils.StackTraceDisabled.unknownMethod()
weblogic.management.NoAccessRuntimeException: weblogic.management.NoAccessRuntimeException: [Management:141302]Access not allowed for Subject: principals=[testds, Deployers], on resource JDBCDataSourceRuntime, action: execute, target start.
Т.е ни фига прав как выясняется нет, что очень забавно.
Что надо сделать что бы появились права:
http://localhost:7001/console->Security Realms->myrealm
Activate Changes.
Далее restart AdminServer. Если datasource смотрит на manager server то его надо будет тоже перезапустить.
После перезапуска у нас появляется следующая хрень:
http://localhost:7001/console->Security Realms->myrealm
Далее открываем
weblogic.management.runtime -> JDBCDataSourceRuntimeMBean->Next
Жмём Create Policy
Добавляем пользователя testds под которым мы пытаемся стартовать datasource а так же роль Admin что бы пользователи обладающие ролью Admin могли продолжать рестартать datasourc`ы т.к добавление этих свойств перетирает свойства по умолчанию.
Save
Заходим опять в wlst и видим о чудо всё работает=)
wls:/base_domain/domainRuntime/ServerRuntimes/AdminServer/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ecmtstDS> cmo.shutdown()
wls:/base_domain/domainRuntime/ServerRuntimes/AdminServer/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ecmtstDS> cmo.start()
wls:/base_domain/domainRuntime/ServerRuntimes/AdminServer/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ecmtstDS>
Тем не менее способ делать это по старому через web интерфейс (т.е что бы отображались кнопочки) я не нашёл))
P.S. В принципе данный способ позволяет дать грант на конкретный datasource кому угодно.
т.е если вы выдали пользователю testds например только группу Monitors
То по мимо JMX Policy Editor ( в нём как мы выяснили просто полюбому надо давать гранты) надо будет выдать права на конкретный datasource если этого не сделать то уже при просмотре появится ошибка:
wls:/base_domain/domainRuntime/ServerRuntimes/AdminServer/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ecmtstDS> ls()
dr-- JDBCDriverRuntime
dr-- JDBCReplayStatisticsRuntimeMBean
dr-- LastTask
dr-- WorkManagerRuntimes
Traceback (innermost last):
File "<console>", line 1, in ?
File "<iostream>", line 819, in ls
File "<iostream>", line 553, in raiseWLSTException
WLSTException: Error occurred while performing ls : Error while retrieving attribute names and values : MBean getAttribute failed: java.rmi.RemoteException: User "testds" does not have permission to perform operation "reserve" on resource "ecmtstDS" of module "none" of application "none" of type "ConnectionPool" User "testds" does not have permission to perform operation "reserve" on resource "ecmtstDS" of module "none" of application "none" of type "ConnectionPool"
Use dumpStack() to view the full stacktrace :
Что бы поправить ошибку идём в
http://localhost:7001/console->base_domain->Services->Data Sources->ecmtstDS->Security->Policies
Опять же по мимо самого пользователя которому надо дать права добавляем и роли по умолчанию т.е Admin и Deployer что бы у пользователей обладающих данными ролями остались права на данный datasource.
Далее в wlst мы видим:
wls:/base_domain/domainRuntime/ServerRuntimes/AdminServer/JDBCServiceRuntime/AdminServer/JDBCDataSourceRuntimeMBeans/ecmtstDS> ls()
-r-x clearStatementCache Void :
-r-x dumpPool Void :
-r-x dumpPoolProfile Void :
-r-x forceShutdown Void :
-r-x forceSuspend Void :
-r-x poolExists Boolean : String(poolName)
-r-x reset Void :
-r-x resume Void :
-r-x shrink Void :
-r-x shutdown Void :
-r-x start Void :
-r-x suspend Void :
-r-x testPool String :
Вот вообщем то и всё. Мб когда нить я дойду до того что бы показать кнопки в console но хер знает....
P.S weblogic (ADF) 12.2.1.1.0 ни хуя не работает!
Вообщем то если у вас стоит галочка Use Authorization Providers to Protect JMX Access то новейший weblogic разваливается на хуй с ошибками типа:
Sep 03, 2016 6:07:49 PM oracle.as.jmx.framework.logging.TraceLogger loadProperties
INFO: Failed to init jmx trace logger
java.lang.RuntimeException: java.lang.NullPointerException
at oracle.as.jmx.framework.wls.spi.WLSPlatformSupportImpl.getServerLogPath(WLSPlatformSupportImpl.java:149)
..........
.........
.........
<Sep 3, 2016, 6:07:50,670 PM MSK> <Warning> <oracle.dms.instrument> <DMS-50766> <A problem occurred while fetching the value of attribute PartitionRuntimes for the ServerRuntime MBean which may mean that one or more partitions are stopped or removed without their associated DMS metrics being cleared when necessary.
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
..........
.........
........
<Sep 3, 2016, 6:07:53,452 PM MSK> <Warning> <oracle.odl.management> <BEA-000000> <Failed to initialize WeblogicPlatformSupport
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
и т.д короче.
В догонку при попытке зайти в WLST будет срать ошибками доступа к Mbean, хотя поидее всё "заенаблено".
Короче индусы опять чёт разъебали....
Причём похоже данное гавно проявляется только на ADF.
Т.к после такой ошибки хуй чё стартанёшь идём в
vim /opt/oracle/user_projects/domains/base_domain12211/config/config.xml
Меняем
<sec:delegate-m-bean-authorization>true</sec:delegate-m-bean-authorization>
На
<sec:delegate-m-bean-authorization>false</sec:delegate-m-bean-authorization>
Т.к после такой ошибки хуй чё стартанёшь идём в
vim /opt/oracle/user_projects/domains/base_domain12211/config/config.xml
Меняем
<sec:delegate-m-bean-authorization>true</sec:delegate-m-bean-authorization>
На
<sec:delegate-m-bean-authorization>false</sec:delegate-m-bean-authorization>
Комментарии
Отправить комментарий