AppNexus 업무로 넘어 온 후 제일 먼저 했던 일이 Chronos 도입이었다.


OAS하면서 EJB Java코딩만 하던 나에게 완전 환경이 다른 AppNexus환경에서 해당 업무를 해내는 건 정말 골치 아픈 일이었다.도입한 이후로 몇가지 문제가 생겨도 그냥 Internet searching해서 대충 문제 봉합하는 정도..


얼마전에 구글에 등록된 퇴사자 계정을 Disable한 이후로 Chronos에 등록된 모든 Script가 동작하지 않는 문제가 발생했다.

내가 주기적으로 모니터링 하고 있었기에 크게 이슈화 되기 전에 문제를 해결했는데,

근본적으로는 Script 가 Fail했을 경우에 Notification해줬으면 금방 알 수 있었던 문제 이다.


일단 예전에 Chronos에 메일을 보내게 할려면 /etc/chronos/conf 폴더에 mail_server라는 파일을 만들고 해당 파일에 파일 서버명을 적으면 된다는 Article 을 보고 적용했던 일이 생각났다.ps java로 command를 확인해 보면 mail_server option 이 parameter로 잘 적용된 것도 보인다.


우선 Log를 Enable시켜 놓고, 메시지를 확인하면서 Chronos 소스 코드를 확인해 보았다.


chronos script를 확인해 보니 /etc/chronos/conf 폴더에 option이름으로 파일을 만들고 값을 저장하면 해당 옵션을 자바 구동시 넣어 주는 것을 확인했다.결국 ps 로 확인했다고 해서 option이 제대로 적용됐다는 보장이 없는 것이다.


결국은 Chronos 소스를 봐야 할 문제 ...

소스를 Checkout 해보니 언어는 Scala.. ( 예전에 한 참 Chronos일 할 때 Scala로 개발했다는 얘기를 들을 기억이.. )


예전에는 Scala 를 몰라 뜨아 하고 덮었을 텐데 다행히도 AppNexus 업무를 맡은 후 공부를 해 놔서 걱정이 없다.


소스를 보면서  mail_server가 정확한 option인건 확인을 했고,

Module class에서 @Singleton, @Provides Annotation으로 notification actor를 Initial 해주는 것도 확인이 되었다.


좀더 자세히 뒤져 보았더니 

메일 관련 Config중 

mail_server config는 <Server Address>:<Server Port>로 설정이 되어 있어야 하고,

mail_from 이 String으로 Define되어 있어 반드시 입력이 되어 있었어야 하는 것이었다.


결국 /etc/chronos/conf 폴더에 mail_server는 <Mail Server Addr>:25, mail_from은 우선 내 메일 주소를 넣어 보니 메일이 잘 온다.


Scala를 좀 뜯어 볼 줄 알았다면 일찌감치 해결 했을 문제를 2년 동안 전전 긍긍했던 것이다. :-(


오늘도 이렇게 지식의 힘들 느끼며 문제를 해결했다.



이슈를 추적하면서 한가지 궁금했던게...

대체 Chronos 소스가 어디 있는 건가 하는 문제였는데 ...


Script 를 따라 가다보니 /usr/bin/chronos가 실행 Script이고, 

파일을 열어 보니 윗 부분은 Schell script가 아랫부분은 Binary 코드가 있다.


좀 이상해서 검색 해보니 cat을 이용하여  schell script와 jar파일을 다른 File에 redirect하고 x permission을 주면 Shell script와 jar를 한 파일로 만들 수 있는 것이다.

https://coderwall.com/p/ssuaxa/how-to-make-a-jar-file-linux-executable


그리고 Chronos log  enable은 log4j 파일을 작성한 후 

/usr/bin/chronos 의 구동 부분에 -Dlog4j.configuration=file:/etc/chronos/log4j.properties 와 같이 옵션을 추가 하면 된다.


요즘 Docker+ Kubernates 가  Popular해서 Mesos+Chronos 가 밀리고 있는데 

2년 전에 Chronos 도입할 떄 내가 좀 더 기술적으로 잘 알았으면 

적어도 AppNexus에서는 좀 더 각광받는 기술이 되지 않았을 까 하는 생각이 들고 

언제는 기술적으로 준비가 되어 있어야겠다 하는 생각이 많이 든다. 






'개발자세상 > 자바세상' 카테고리의 다른 글

Scala future/blocking  (0) 2023.10.06
POI로 Pivot테이블 만들기  (0) 2017.11.28
Scala  (2) 2016.06.16
Mockup 테스트  (0) 2016.02.02
java.lang.OutOfMemoryError: unable to create new native thread  (0) 2015.08.15
Posted by headiron
,