저는 아직 로깅시스템에 대해서 들어본적도 구경해 본적도 없습니다.

하지만 아주 큰 시스템에서는 이미 사용하고 있겠거니...

제가 생각하는 개념과는 조금 다른 형태로 사용하고 있겠거니 생각은 합니다.^^;;



제가 말하는 로깅시스템은 프로그램으로 구현한 로깅시스템이 아닙니다.

제가 말씀드리고자 하는 것은 단순히 로그만 담아 놓는 시스템입니다.

로깅만을 위해서 로깅 전용 서버를 하나 추가해야 합니다.

비용적으로 문제가 될 수 도 있습니다.

하지만 제가 아래설명하는 것들은 그 비용에 대한 충분한 역할을 할 수 있을 것이라 생각이 됩니다.




왜!! 로깅시스템을 말하는가?

로그는 아주 중요합니다.

누구도 부인할 수 없을것입니다.

개발자의 판단에 의해서 필요한 로그만 남긴다고요?

하지만 여러분은 개발을 하면서 필요없는 로그를 남기고 있다는 생각이 드 실수도 있고.

디버깅중에 필요한 로그가 없어서 코드에 필요한 로그를 넣는 경우도 있습니다.



로깅을 많이 하면 좋긴 합니다..

하지만 시스템에서 그것을 처리하려면 하드를 엑세스 해야 합니다.

알고 계시듯 하드를 엑세스하는 것은 메모리를 엑세스하는 것보다.

몇배는 느리고..시스템에 부하가 있을 수 있습니다.

그리고 그 로그를 모니터링 하신다고요?

그 로그를 실시간 모니터링 하기 위해..

Unix같은 시스템에서 "tail -f" 같은 명령...그리고..

필요에 따라 "grep" 명령을 이용해서 모니터링을 하게 됩니다.



작은 규모의 시스템에서는 필요치 않을 수 있습니다.

하지만 모니터링을 하는 사람이 200명 가량되는..

프로그램을 개발한 개발자가 200명 가량 되는 프로젝트에서는.

(현재 제가 있는 KOCOM 차세대 시스템은 200명 가량이 개발/운용 모니터링 중입니다.)

모니터링에서 엄청난 부하를 주게 됩니다.

물론 개발중에도......시스템이 200명의 개발자를 버티지 못하고...

느리게 돌아가는 경우도 자주 있스빈다..



얼마전 모니터링을 하는데...전화가 오더군요..

시스템팀 : 지금 "tail -f log | grep" 몇개 나 띄워 두셨죠?
저          : "tail -f" 8개, "tail -f log | grep" 4개 띄웠습니다.
시스템팀 : 지금 운용시스템에 부하가 가서 그런데, 중요한것만 모니터링 하시고, 나머지
               모니터링은 오후에 해주실 수 없는지요?
저          : 운용에 지장이 된다면....그러도록 하겠습니다.

이런일은 충분히 일어날 가능성이 있습니다.

제가 직접 겪어 보았고요...

돈이 왔다갔다 하는 업무를 하고 있다 보니..

모니터링을 계속하게됩니다..

특히 운용초반에는 말이죠..

사소한 에러도 큰 사고가 될 수 있으니 말이죠...



자...이런일을 해소 하기 위해서..

로깅을 담당하는 서버를 하나 두는건 어떨 까요?

로깅 시스템이 로깅하는데만 도움이 될 것 같다고요?

저는 스템 전반적 성능의 향상도 가져올 수 있다고 생각합니다.

우선적으로!! 하드에 엑세스 하는 일이 줄어듭니다..

물론 큐 + 쓰레드로 구현을 해 놓았겠죠..

물론 성능 향상만 생각한다면 로깅용 "HDD"를 추가 하면 되겠지요..

하지만 실시간 모니터링이 가능해지는 것과..

중요한 로그들을 모두 담아 둘 수 있는 여유가 생기니..

그것이 이득이 될 것 같네요..



그리고 모니터링 시스템과 별개의 말씀인데..

로그를 담을때..

개발자의 판단으로 로그를 담는 것 외에.

시스템이 일괄적으로 로깅을 해주었으면 좋겠다는 생각이 듭니다.

예를 든다면.. memcpy 같은 함수를 사용할때나..

DB 엑세스를 할때...

DB엑세스에서 In/Out/처리 메시지 등등..

소켓통신시에서도.. In/Out/처리메시지 등등을..

일괄적으로 남겨 두고..

처리메시지가 "에러"인경우는 에러의 레벨을 높게...

형태로 에러를 모아두는 것입니다..

개발자가 필요에 의해 디버깅을 하는데..

로그가 남아 있지 않으면 낭패 이잖아요..

운용중에는 더 큰 문제가 될 수도 있습니다..

사용자가 에러를 발생시켰는데..

로그가 부족해서 판단이 안되는 경우가 생기면..

사용자한테 전화해서...

똑같은 상황을 한번 더 재현해달라고 부탁해야 합니까?

그런 아니잖아요,.^^

신고
  1. Favicon of http://www.linuxwin.com/tt/oneday BlogIcon Oneday 2007.03.06 15:13 신고

    훔... 현재 일본 IBM호스팅 센터에서 근무하고 있는중인데요. 많은 업체들이 로그서버를 운영하고 있습니다.
    단.. 로그서버를 단독으로 운영하는 경우는 대량의 서버가 아닌 한 별로 없고 메일서버+로그서버, 또는 네임서버+로그서버 같이 해서 운영하고 있습니다.
    로그서버가 없다고 하더라도 메일메일 백업한 로그들을 특정 서버의 대용량 스토리지에 저장하기도 하구요. 그걸 또 1주일이나 3일에 한번씩 LTO로 백업도 하죠. 그 백업 LTO는 방재시스템이 되어 있는 금고로 옮겨져서 보관되죠.

    오래된 호스팅센터라 여러 사건이 있었고 그만큼 로깅과 백업에 대한 중요성을 잘 아는 곳이라 제가 있는 곳은 잘 구성되어 있네요. 대신 Firewall 로그는 좀 압박입니다. HDD가 쉴새없이 돌아가더군요.. ㅎㅎ;;

    • Favicon of http://iamgil.com BlogIcon 길OI 2007.03.06 15:18 신고

      제가 알고 있는 것 보다 잘 되어 있군요..


      제가 보아온 곳들은....단지..

      LOG용 하드 하나 더 달아 놓은 수준의 프로젝트를 많이 봐서요..

      그런곳의 규모가...개발자 200명이 붙어 있는 곳이니..

      로깅시에 서버가 부담을 느끼기에 충분하죠...

      이곳도 하드만 나누는게 아니라..로깅서버를 운영했으면 하는 바램입니다.^^

  2. Favicon of http://www.linuxwin.com/tt/oneday BlogIcon Oneday 2007.03.06 15:15 신고

    아참 그리고 우리나라서는 모르겠지만 만약 정말 이상한 경우가 있다면.. 사용자에게 연락하여 어떤 방법으로 접근했는지 파악한후 휴일이나 서버 중지시간에 '재현테스트(사이겐테스트)'를 실제로 하는 경우도 있습니다. ^^

    • Favicon of http://iamgil.com BlogIcon 길OI 2007.03.06 15:20 신고

      에러가 나타났을때 즉각 조치가 가능한 수준의 로깅이 있었으면 하는 바램으로 썼던 글인데.^^;;..


      재현테스트는 이곳에서도 하긴 하는데....

      문제가 생기고 나서 바로바로 해보기도 어렵고 해서요.^^;;

+ Recent posts

티스토리 툴바