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

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'...

awk modify date format + awk in awk

Мы хотим преобразовывать буквенное (я бы даже сказал 3х буквенное) название месяца в числовое, например "Apr" в "4" и т.д
Очень интересное решение:
http://stackoverflow.com/questions/1158579/modification-of-date-format-within-a-text-file

Выглядит так:
$ echo |awk -v mon="SEP" '{mm=(index(":JAN:FEB:MAR:APR:MAY:JUN:JUL:AUG:SEP:OCT:NOV:DEC",mon)+2)/4; print mm}'
4

или

$ echo |awk -v mon="APR" '{mm=(index(":JAN:FEB:MAR:APR:MAY:JUN:JUL:AUG:SEP:OCT:NOV:DEC",mon)+2)/4; print mm}'
9

Гениально!!!=)

Там так же есть пояснение как это работает:

Text   Pos   +2   /4
----   ---   --   --
JAN      2    4    1
FEB      6    8    2
MAR     10   12    3
APR     14   16    4
MAY     18   20    5
JUN     22   24    6
JUL     26   28    7
AUG     30   32    8
SEP     34   36    9
OCT     38   40   10
NOV     42   44   11
DEC     46   48   12
В догонку:

Использование awk внутри awk:

Предположим мы хотим с помощью awk получить дату в seconds since 1970-01-01 00:00:00 UTC
В awk этим рулит функция 

mktime(datespec)
Turn datespec into a timestamp in the same form as is returned by systime(). It is similar to the function of the same name in ISO C. The argument, datespec, is a string of the form "YYYY MM DD HH MM SS [DST]". The string consists of six or seven numbers representing, respectively, the full year including century, the month from 1 to 12, the day of the month from 1 to 31, the hour of the day from 0 to 23, the minute from 0 to 59, the second from 0 to 60,54 and an optional daylight-savings flag.

На вход у нас есть строка вида: 127.0.0.1 - - [05/13/2014 02:15:53]
В качестве разделителя будем спользовать 3 символа -F[\]\[\ ]
1. ]
2. [ 
3. space (пробел)

В итоге выглядит так:
$ echo "127.0.0.1 - - [05/13/2014 02:15:53]" | awk -F[\]\[\ ] '{
> v=($5" "$6); 
> print v;
> split(v,fulldate," ");
> split(fulldate[1],date,"/");
> split(fulldate[2],time,":");
> filetime=mktime(date[3]" "date[1]" "date[2]" "time[1]" "time[2]" "time[3]);
> print filetime;}'
05/13/2014 02:15:53
1399932953
v=($5" "$6); - вырезаем необходимую дату 05/13/2014 02:15:53
split(v,fulldate," "); - формируем массив fulldate из переменной v разделитель " "(space)
т.е в массиве fulldate два элемента:
1. 05/13/2014
2. 02:15:53
Дальше по аналогии массив fulldate разбивается еще на два массива и 
результат сортируется так что бы его можно было скормить mktime


Комментарии

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

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 SOA email notification или какого х.. оно не работает.

От делать нех задокументируем.... Вообщем то всё рассписанно по ссылке: http://www.rubiconred.com/blog/email-notification-with-soa-suite-11g/ Ссылка походу сдохла!!! Придётся на всякий случай записать пока не забыл... Собственно основные настройки делаются на этой странице: Тут будет текст дабы не плодить картинок: MailAccessProtocol : POP3 RetryLimit : -1 MailDelFreq : 600 AutoDelete : not check Debug : not check CheckMailFreq : 30 ReceiveFolder: INBOX OutgoingMailServer :  mail4.ru OutgoingMailServerPort : 25 OutgoingMailServerSecurity : None OutgoingDefaultFromAddr :  pklmn@mail.ru OutgoingPassword: вроде ни чё не трогал... IncomingMailServer: mail3.ru IncomingMailServerPort: 110 IncomingMailServerSSL: not check IncomingMailIDs: pklmn@mail.ru IncomingUserIDs: pklmn IncomingUserPasswords: тут настраиваем пароль При настройке рекомендуется обращать внимания на всплывающие подсказки например: Sender Address должен выглядеть как E...

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...