서버와 네트워크 모니터링 프로그램을 만들고자 합니다.

fr33style의 이미지

안녕하세요. 초짜 프로그래머입니다...

소프트웨어 멤버십에 제출하기 위한 프로젝트로
일종의 NMS/SMS 프로그램을 만들어 볼까 합니다.

SNMP를 이용해서 MIB 사용하고... 이런 내용의 글들을 봤는데,
웬지 그렇게 하기 싫어서요.

실력은 안 되지만 SNMP를 사용하지 않는 독자적인 application을 만드려고 합니다.

클라이언트에서는 /proc 등을 검사해
프로세스 사용량, 메모리 사용량, I/O 사용량, 디스크 사용량, 서비스 상태 등을 추출하고,
패킷 모니터링 해서 간단하게 통계낼 수 있는 정보를 서버로 전송하고자 합니다.

물론 서버는 기간별 통계내고, 현재 상황에서 임계치를 초과하였거나 침입탐지에 걸렸을 때
관리자에게 통보하는 기능을 구현할 생각이구요..

클라이언트는 특정한 윈도우도 포함하고 싶지만, 잘 모르는 관계로
리눅스 시스템으로 제한하고, 서버는 리눅스로 하려고 합니다.

일단 이런 식으로 잡아놨는데, 과연 시스템 프로그래밍과 네트웍 프로그래밍의 학습/연습을 위해서
이런 프로그램을 만드는 것이 효과가 있을까요? 아니면 NMS 프로그램 분석해서 약간 변형해서 만들까요?

시스템 프로그래밍, 소켓 프로그래밍 모두 맛만 본 상태라 공부하면서 만들면 의미가 있을 것 같은데요..
(사실 질문으로 쓰면서도 나름 머리 속을 정리하기 위한 목적도 있습니다)

여러가지 조언 부탁드립니다..

fr33style의 이미지

소프트웨어 멤버십에 도전하실 분이면 더욱 좋구요...
----------------------------------------
for(;;)
{ study() };

----------------------------------------
for(;;)
{ study() };

익명 사용자의 이미지

말 그대로 그냥 해보는 정도라면 모르지만, snmp를 전면적으로(잠시 하는것은 동의) 사용하는 것은 동의하지 않습니다.
또한 특정 운영체제에 의존적인 코딩( 예를들어, /proc 파일시스템을 읽고 해당 시스템의존적으로 파싱등)은 한번 쯤은 해볼 일이지만, 두번 다시 해서는 안된다는데 동의합니다.

연습으로 해보는 것(되는구나..!!!...로 만족하는 )이라면 모르나, 보다 쓸모있는 프로그램으로 가기 위해서는 dmtf라던지, CIM, WBEM등을 검토해 볼 것을 권장합니다.

jsj3579의 이미지

물론 의미는 있지만...코딩연습 이상의 의미는 없구요...
agent에서 /proc에서 정보 긁어와서 파싱하고, 저장하다, 자료가 일정용량을 넘어서면, UDP로 전송(노가다 코딩)
manager에서 이를 받아서 통합(이또한 노가다 코딩, 일종의 서버 코딩 연습)

UI(web based)에서 ssl로 연결해서 정보를 가지고 오거나 세팅해줍니다.

이렇게 3단계 구조로 짜시면 되는데요.......결론적으로 코딩 연습 정도 밖에 안됩니다...

powerson의 이미지

fr33style wrote:

안녕하세요. 초짜 프로그래머입니다...

말 그대로 초보라고 하시기 때문에, 위분이 노가다 코딩이라고 하시지만, 제 생각엔 경험상 좋을거라 생각됩니다. 코딩하는 사람에 따라서 노가다라 생각 될 수 있지만, 어떤 이에게는 좋은 경험이 될수도 있습니다. 현재 공부하시고 계시는 상태이기 때문에, 아주 기초적인 코딩이라 할지라도 값진 것이 될수도 있을 거 같네요.

익명 wrote:

특정 운영체제에 의존적인 코딩( 예를들어, /proc 파일시스템을 읽고 해당 시스템의존적으로 파싱등)은 한번 쯤은 해볼 일이지만, 두번 다시 해서는 안된다는데 동의합니다.

윈도우나 리눅스에서도 도는 프로그램이라면 그렇다고 할 수 있지만, 그건 프로그램의 성격에 따라 틀려질 수 있는 문제입니다. 해당 프로그램이 항상 리눅스에서만 돌리는데 굳이 윈도우를 생각하고 만들 이유가 있을까요?

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.

fr33style의 이미지

예, powerson님 말씀처럼 일단은 만들어 볼 생각입니다. ^^

시스템 관리 자체가 목적이 아니라 프로젝트로 만들어 보는 것이 목적이기 때문이죠.

아직 경험이 많지 않아 많은 경험도 될 것 같고요.

간략한 시나리오는 이렇습니다.

리눅스 클라이언트에서 정보수집(시스템 자원과 패킷 검사)
-> 서버로 전송(DB에 저장)
-> 서버에서 다시 관리자 단말기(임베디드 실습 키트)로 전송

아, 혹시 DB를 읽어 WEB에 그래피컬하게 그려주는 라이브러리 같은 게 있나요?
있을 거 같은데, 워낙 아는 게 없으니 못 찾겠네요.

rrdtool + HotSaNic 분석해서 화면 출력하는 것만 응용하는 방법 외엔 없으려나..

----------------------------------------
for(;;)
{ study() };

----------------------------------------
for(;;)
{ study() };

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.