예전에 한번 하드디스크가 꽉 차버리는 바람에, 웹 서비스가 제대로 되지 않던 때가 있었다. 이상하게 사이트가 느려지기 시작하더니, 어느 순간부터는 로그인도 안되는 것이 아닌가. 이 문제로 거의 반나절을 헤메다가 원인을 알고 해결했을 때의 허무함이란!!.
조금만 신경을 썼다면 쉽게 원인을 파악할 수 있었을 것이다. 로그인이 안된다는 건 세션관리에 문제가 있다는 건데, Apache(:12)의 세션관리가 파일기반이였으니, 파일시스템에 뭔가 문제가 있다는 식으로 분석이 가능했을 것이다. 그러나 사람의 경험에 따른 문제대응 방식이란 원래가 완전할 수가 없는 법이다. 당시 내 사이트는 외부의 몇몇 해킹시도가 있어서 여기에 신경쓰고 있을 때였다. 거기에다가 사이트개편과 관련되어서 이것 저것 신경을 쓰다보니, 아무래도 제대로된 판단이 늦어질 수 밖에 없었다.
그래서 RRD(:12)를 응용해서 디스크용량 관리 툴을 만들기로 마음을 먹었고, 마음을 먹은지 거의 3개월만에 초기 버전이라고 할만한 응용을 만들었다.
Contents
소개
RRD 데이터 베이스 생성
디스크 사용량 수집
#include <stdio.h> #define MAXLINE 256 int main(int argc, char **argv) { FILE *fp; int state; char buf[MAXLINE]; int type = 0; char fsname[12]; char block[12]; char used[12]; char *checkFs = argv[1]; fp = popen("/bin/df -B 1", "r"); if (fp == NULL) { return 1; } while(fgets(buf, MAXLINE, fp) != NULL) { if(strstr(buf, checkFs)) { sscanf(buf,"%s %s %s %s", fsname, block, used); printf("%s:%s\n", block,used); } } pclose(fp); return 0; }그래프 생성
Recent Posts
Archive Posts
Tags