ubuntu 에서 한글 로케일 설정
apt-get install language-pack-ko
prototype.js 와 javascript 를 공부하면서 배웠던것을 써먹어 보기도 할겸, 겸사겸사 한번 만들어 봤습니다. 보기싫은 alert 창 대신에 lightbox 느낌으로 경고를 해줄수 있게 됩니다.
사용 방법은 간단합니다.
압축 해제 하고 나서 나오는 js 파일과, css 파일을 각각 필요한 장소에 복사 하시고, 필요한 곳에서 링크를 걸어주세요 그리고서, 다음과 같이 코드를 작성해 주시면 되겠습니다.
전체 코드는 압축 해제하면 나오는 embox.html 을 참조 하세요. ^^;
embox 클래스의 문법은 다음과 같습니다.
options 에 옵션을 넣느냐 마느냐에 따라서 동작 방식이 달라지게 됩니다.
현재는 4개의 options 를 정의 할 수 있습니다. width와 height 를 정의 하지 않으면 default 값이 들어가게 되고요, btnValue 를 지정하게 되면 경고창에 나오게 되는 버튼에 표시되는 문자를 정의 할 수 있습니다. 마지막으로, url 옵션은 btnValue 와 함께 쓰여야 하는데요, url 을 써주게 되면 창이 닫히면서 지정한 url 로 페이지가 이동하게 됩니다.
정리를 해보자면
간단하죠? ^^;
시스템지원과워크샵-소래포구 |
[]# for filename in $(ls -l targetdir | grep -v '^d' | awk '{print $8}'); do sed -e 's/OLD STRING/NEW STRING/g' targetdir/$filename > NEWDIR/$filename; done;
오늘은 코드 이야기좀 하겠습니다. 일종의 삽질기 입니다...;;
고수분들이 보시면 황당한 해법일 수도 있겠으나, 나름 고민한 최선의 방법 이네요. 크흑.
더 좋은 방법을 알고 계시면 트랙백 달아주세요....
어떤 데몬의 모니터링 스크립트를 만들다 보면 다음과 같은 문제점에 봉착할때가 있습니다.
해당 데몬이 제 역할을 수행하고 있는지를 확인하는데 사용하는 tool 로써 'monitorTool' 이라는게 있다면 보통 다음과 같이 실행을 시켜 보겠지요
[]# monitorTool example.co.kr
그럼 결과는 보통 3가지로 나타나게 됩니다.
1. OK
2. FAIL
3. WAIT
해당 툴을 가지고 모니터(상태 체크) 스크립트를 짤때 문제가 되는것은 3번 입니다. 시간이 중요한 상태체크에서 WAIT 가 걸려 버리면, 보통 일정 TIMEOUT을 주고 해당 시간이 지나서 리턴이 되게 되면 FAIL 로 처리하게 됩니다.
이게 보통의 로직이죠. 그런데, perl 과 같은 스크립트에서 다른 바이너리 명령어를 써서 모니터링을 할때는 이런 처리를 하기가 쉽지 않네요.
왜냐하면 보통 외부 프로그램을 실행 시킬때는 exec() , system() , open() 함수로 실행을 하기 때문이지요. 이때 메인 스크립트에서 TIMEOUT 을 줄수 있는 방법은 없습니다. ( 혹시 아시는분 트랙백....혹은. 댓글.... 부탁 드려요..) 그래서 저는 c로 monitorTool를 실행할 컨테이너를 하나 만들었습니다. c 에서는 쓰레드로 빼서, TIMEOUT을 줄 수 있으니 가능 하더군요.
perl 스크립트 에서..
...
open(FH, "./runMonitorTool $REMOTE_HOSTNAME |");
my $ret = <FH>;
...
이런식으로 하면, runMonitorTool 이라는 c 프로그램이 찍는 output 메세지 들을 FH 에서 받을 수가 있습니다. 따라서, C 프로그램에서 상태에따라 다른 값을 넘겨주면 좀더 세세한 제어가 가능해 지겠죠.
TIMEOUT 문제는 해결된거 같은데 아직 문제는 남아 있습니다.
monitorTool 이 사용자에게 알려주는 정보는 해당 시스템이 괜찮다 아니다를 메세지를 찍어서 보여주게 된다고 가정을 하면, 지금까지 한 프로그램은 큰 오류가 있습니다. WAIT에 걸리지 않고, 장애시 바로 리턴하게 되면 이때도 장애로 인식하지 않는것이죠. TIMEOUT에 걸리지 않았으니까요.
이 문제를 해결하기 위해서는 monitorTool 이 뿌려대는 메세지를 파싱해서 장애 판단을 해야 합니다. 하지만, C 에서 외부 프로그램을 실행하고, 그 외부 프로그램이 실행하면서 뿌려대는 메세지를 받을수가 없더군요. ( 이것또한 방법을 아시는 분은 저에게 트랙백이나.. 댓글을...쿨럭..;;;; ) 하지만, 프로그램이 실행후 끝나는 종료 코드는 얻어 올수 있지요.
그래서, 마지막으로 monitorTool 을 실행시킬 perl 코드를 짭니다. -_-;;; perlRunMonitor.pl 을 만듭니다. 이넘은 무슨 짓을 하냐면 단순히 monitorTool 을 실행시키고 메세지를 받아서 파싱하여 장애 판단후 종료 코드를 주어서 종료합니다.
이를테면 다음과 같죠
#!/usr/bin/perl
.....
open (FH , "monitorTool server |");
my $statusOK = 0;while(my $ret = <FH>) {
if( $ret =~ /I am OK/g ){
$statusOK =1;
break;
}
}
close FH;if( $statusOK == 0 ){
exit 1;
}
이렇게 되면, 지정된 OK 문자열이 파싱될경우를 제외하고는 종료코드 1을 리턴하게 됩니다. 지정된 OK 문자열이 파싱될경우에는 정상 종료를 하게 되지요.
그럼 C 에서는 종료 코드를 얻어와서 그에 맞게 처리해 주고, TIMEOUT 이 나면 이것또한 에러처리를 해주게 됩니다.
그럼 정리를 해보면 다음과 같습니다.
PERL Main Script -> C Run Container -> Perl Run Script
아 삽질이군여. 좀더 좋은 방법을 아시면 알려주세요오오오....