서버 모니터링에 관련된 함수들?

ssehoony의 이미지

서버 모니터링 프로그램을 만들려고 하는데요.

cpu 사용량, system load, disk free space, mem free space, 현재 떠있는 프로세스들 등

top 이나 ps, df 에서 보여주는 것들을 C/C++ 에서 외부 유틸을 사용하기 않고 함수 call 로 얻어 오고 싶은데요.
이와 관련된 함수들이 뭐뭐가 있는지 궁금합니다.

happyjun의 이미지

OS를 적어주셔야 답이 나올 것 같습니다.

대부분 아시는 것과 같이 top, ps, df의 소스를 보시면 됩니다.

----------------------------------------
http://moim.at
http://mkhq.co.kr

ssehoony의 이미지

음.. 모든 OS 에 적용할만 표준 함수가 없나 보군요.

솔라리스하고 linux 에서 알고 싶습니다.

ps 같은 프로그램 소스를 분석하는게 좋은 자세라고 생각하는데, 개발 일정이 짧게 잡혀서 이렇게 질문 드립니다.

Necromancer의 이미지

linux의 경우 함수가 존재하기보다는
/proc 아래 파일들을 읽으면 됩니다.

Written By the Black Knight of Destruction

myohan의 이미지

이름
       sysinfo - 전체적인 시스템 통계 정보를 반환한다.

사용법
       #include <sys/sysinfo.h>

       int sysinfo(struct sysinfo *info);

설명
       sysinfo는 다음 구조체 안에 정보를 반환한다.

              struct sysinfo {
                   long uptime;              /* 부팅 이후 지나간 초단위 시간*/
                   unsigned long loads[3];   /* 1, 5, 그리고 15 분 부하 평균*/
                   unsigned long totalram;   /* 사용할 수 있는 총 메모리 크기*/
                   unsigned long freeram;    /* 이용할 수 있는 메모리 크기*/
                   unsigned long sharedram;  /* 공유 메모리의 양*/
                   unsigned long bufferram;  /* 버퍼에 의해 사용된 메모리*/
                   unsigned long totalswap;  /* 총 스왑 공간의 크기*/
                   unsigned long freeswap;   /* 이용할 수 있는 스왑 공간*/
                   unsigned short procs;     /* 현재 프로세스의 수*/
                   char _f[22];              /* 구조체를 64 bytes로 채운다(pad)*/
              };

       sysinfo는 전체적인 시스템 통계 정보를 가져올 수 있는 간단한 방법을 제공한다.  또한 /dev/kmem를 읽는것보다 훨씬 호환성이 좋다.  사용 예를 볼려면, intro(2)를
       참조해라.

반환값
       성공시, 0을 반환한다. 에러시, -1을 반환하며, errno는 적당한 값으로 설정된다.

에러
       EFAULT struct sysinfo가 가리키는 포인터가 유효하지 않다.

호환
       이 함수는 리눅스에 의존적이므로 호환성을 염두에 둔 프로그램에서 사용해서는 안된다.

       리눅스 커널은 0.98.pl6 이후에 sysinfo시스템 콜을 가지고 있다.  리눅스 libc는 5.3.5 이후에 sysinfo() 루틴을 포함하였으며 glibc에서는 1.9 이후에  포함하였다.

가 있습니다 :D

---------------------------------------
blog : http://myohan.egloos.com

happyjun의 이미지

제가 알고 있는 방법은 다음과 같습니다. 당연히 표준적이고 더 쉬운 방법이 있을 수도 있습니다.

>> linux

* cpu : /proc/stat 를 읽어 cpu~ 부분을 사용

* disk : setmntent(), getmntent(), statfs(), endmntent() 사용

* memory : /proc/meminfo 를 읽어 Mem:~ 부분을 사용

* process : /proc/숫자(pid) 읽기

>> solaris

* cpu : kstat_open(), kstat_chain_update(), kstat_lookup(), kstat_read(), kstat_data_lookup(), kstat_close() 을 이용해서

* disk : "/etc/mnttab"과 getmntent(), statvfs() 사용

* memory : sysconf(), swapctl() 사용

* process : /proc/pid 읽기

----------------------------------------
http://moim.at
http://mkhq.co.kr

익명 사용자의 이미지

* HPUX
$ man 하나씩또는 대충..
pstat_getcrashdev(), pstat_getcrashinfo(), pstat_getdisk(),
pstat_getdynamic(), pstat_getfile(), pstat_getfile2(),
pstat_getfiledetails(), pstat_getipc(), pstat_getlv(), pstat_getlwp(),
pstat_getmpathname(), pstat_getmsg(), pstat_getnode(),
pstat_getpathname(), pstat_getproc(), pstat_getprocessor(),
pstat_getprocvm(), pstat_getsem(), pstat_getshm(), pstat_getsocket(),
pstat_getstable(), pstat_getstatic(), pstat_getstream(),
pstat_getswap(), pstat_getvminfo(), pstat() - get system information

익명 사용자의 이미지

* SMS(System Management System)와 유사한 시스템을 구현하려 한다면,
각 시스템별로 상이한 인터페이스를 사용하지 마시고, DMTF(www.dmtf.org)의
표준 스펙을 사용하시길 권고합니다.
- WBEM 스펙사용
- WBEM 구현(공개/상용)
- 참고
SNIA CIMON(SNIA) ,Pegasus(The Open Group), WMI(MS), OpenWBEM(Caldera International), WBEM Services(Sun)등

* 최근 릴리즈된 운영체제들은 대체로 이를 내장하고 있는것으로 알고 있습니다.

익명 사용자의 이미지

AIX 인 경우 perfstat API를 이용하시면 됩니다.

redbook 중 AIX 5L performance Tools Handbook의
14장 APIs for performance monitoring
을 참고하시면 됩니다.
4.3.3에는 추가 fileset을 설치해야 하며 5.1부터는 default로 perfstat관련 API가 설치됩니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.