![]() ![]() | ||
|
![]() ![]() | ||
|
![]() ![]() | |
한국정보보호진흥원에서 권고중인 웹방화벽 웹서버의 재설치 없이 DSO방식으로 설치한다 /usr/local/apache2/bin/apxs -cia /usr/local/modsecurity-apache-1.9.2/apache2/mod_security.c 설치후 /usr/local/modules 디렉토리에 mod_security.o 가 생성되며 /usr/local/conf/httpd.conf에 LoadModule 에 mod_security.o 가 삽입된다. httpd.conf안에 다음을 추가한다. <IfModule mod_security.c> 첨부한 정책내용 </IfModule> * 정책은 KrCERT에서 제작한 APM용 기본정책 |
![]() ![]() | |
웹 어플리케이션 시큐리티, 과연 올해 시장이 있을까? 아니면 내년? 웹 방화벽의 시장성에 대해서는 약간 의문이 생긴다. 이러한 제품을 구매할 능력이 있는 회사가 얼마나 될까? 또한 웹의 보안문제로 인한 피해 규모 및 이로인한 파급효과가 얼마나 될지? 자료의 유출이나, 웹 사이트 해킹에 대한 피해액이 과연 이러한 제품을 구매할 만한 가치가 있게 만드는 것일까? 당장 머리속에 떠오르는 의문들이다. 사실 이런걸 예측한다면 만드는 것마다 성공하겠지만 어쨌든 이러한 관점에 대해서는 계속 고민을 해 봐야 할만한 문제라고 생각한다. 기술적인 관점에서는 아직 깊이 서베이를 해보지 않아서 단편적인 지식만 있는 상태이다. 하지만 대강 (항상 그렇지만) 파악한 바로는 - learning based approach - rule-based approach 이렇게 두 가지가 있는 것으로 알고 있다. 약간 다른 관점에서 vulnerability scanner가 있지만 성향이 약간 달라 현재 고려대상에서 제외하는게 좋을 것 같다고 판단했다. learning 방식에 대해서는 구체적으로 파악하지는 못 했지만, 정상적인 HTTP request/reponse 에서 규칙을 추출하는게 아닌가 한다. 어떤 dynamic page에 대한 request의 parameter의 전달 형태와, response의 형태를 규칙을 자동으로 생성하고 적용시에 이와 위배되는 request와 reponse가 발견되면 차단하는 걸로 파악이 된다. 반변 rule-based approach는 학습 방법과는 달리, 잘 알려진 attack이나 페이지의 변조, 데이터의 유출 등에 대한 rule-set을 미리 정의하여 이 규칙에 위배되는 request를 차단하는 방식으로 파악하고 있다. 현재 나의 관심 대상인 mod_security는 후자의 방식을 채택한 것으로 아파치의 module로 사용되며, mod_proxy와 같이 이용시에 웹 서버와 무관하게 적용할 수 있을 것으로 보인다. 현재 쓸만한 오픈소스의 조사가 더 필요하긴 하지만 mod_security와 같이 범용적으로 사용할 수 있는 오픈소스는 그다지 많지 않으리라고 파악하고 있다. 뭐, 더 있다면 좋겠지만... 아파치+mod_proxy+mod_security의 조합은 범용적으로 쓸 수 있기에는 좋은 조합이지만 언제나 그렇듯이 performance에 치명적인 단점이 있으리라고 생각한다. 이 부분에 대해서는 좀더 효율적인 구조로 변경을 통한다면 좀더 상용제품에 가까운 웹 방화벽을 만들 수 있지 않을까 한다. 시간이 되면 효용성에 대한 분석과 더불어 소스코드에 대한 좀더 심화된 분석이 필요하다. 사실 잠깐 코드를 들여다 보았는데, 스윽 본거라 뭐라고 적을만한 내용은 아직까지는 없다. 하지만 기능과 rule-set 측면에서 적용가능한 보안 정책에 대해서는 이제부터라도 조사를 시작해야 할 것 같다.... < 자료 > - 아파치 + mod_proxy + mod_security 의 조합에 대한 overview성격의 자료 http://www.securityfocus.com/infocus/1739 - mod_security 에 대한 자세한 정보는 - 웹 어플리케이션 시큐리티에 대한 정보는 |
![]() ![]() | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
![]() ![]() | |
FreeBSD 시스템을 다시 만지게 됬는데.. 아파치 에로로그에서 내뱉는 걸 보면 tail -f /var/log/httpd-error.log 에서 File 'NONEXISTENT/charsets/?.conf' not found (Errcode: 2) 가 뜨는게 있다. 이럴땐.. cp /usr/local/share/mysql/charsets/euc_kr.conf /root/src/mysql-4.0.17/sql/share/charsets/ 물론 euc_kr.conf 파일 있을때.. |
맨밑에 레이어 추가하는 부분에다가
<div id="layer" style="position:absolute; background:black; width:170; left:450; top:0; height:160; z-index:5; visibility:hidden;">
<iframe frameborder='no' style='border:0px; width:100% ;height:164px;filter:Alpha(Opacity=10)'></iframe>
</div>
아이프레임을 추가해주시면 됩니다. 이런식에 문제가 발생하는 이유는요. 셀렉트 박스는 컴퍼넌트라서 항상 최상위에 존재 하죠. 그리고 레이어는 단지 화면에 표시해주는 거뿐이라서 아무리 z-index가 높다고 하더라도 셀렉트 컴퍼넌트 밑에 존재 하게 됩니다.
이런식에 문제를 해결하기 위해서는 컴퍼넌트를 사용해서 그위에 위치하게 하면 되는데 그 컴퍼넌트를 iframe으로 사용하면 되요
(출처 : 'z-index' - 네이버 지식iN)
![]() ![]() | ||||||||
Part 1: 백업 계획 모든 사용자들은 적어도 한번쯤 백업을 계획한다. 그러나 유감스럽게도, 우리 대부분은 “백업하지 않는” 것이 오히려 습관처럼 되어있다.
Disclaimer: 이 기사는 단행본, 하우투 문서들, 맨 페이지, 유즈넷 뉴스그룹, 그리고 셀 수 없는 시간을 키보드와 씨름하며 얻은 유용한 정보들을 제공한다. 비록 모든 주제에 대해 통달했다는 것을 뜻하지는 않지만, 초급자가 중급 사용자가 되는 발판이 될 것이다. 모든 예제들은 우리 홈 네트워크로부터 그대로 가져왔으므로 우리가 아는 한 잘 동작한다. 이 가이드를 어떻게 사용할까 ·[Enter]처럼 각 괄호에 담긴 단어들은 키보드에서 그 키를 누르거나 마우스 1번 버튼을 누르라는 뜻이다. ·{your name here}처럼 구불구불한 괄호 안에 담긴 단어들은 사용자가 입력해야 할 “진짜” 데이터에 대응하는 데이터를 뜻한다. ·이탤릭체로(기울어진) 쓰여진 텍스트는 사용자 자신이 셸 프롬프트에 써넣어야 할 명령을 뜻한다.
필요한 것 들 ( Prerequisites) 당신의 시스템에 리눅스가 설치되었다면, 필요한 모든 것이 이미 갖추어져 있을 것이다.
백업 계획 (Backup Plan) 당신이 홈 네트워크에서 백업을 계획하고 있다면, 몇 가지 작업순서를 정할 필요가 있다. 하드디스크가 전혀 못쓰게 되더라도(crash), 백업의 진정한 가치는 실수로 지운 파일이나 변경된 파일 모두를 반드시 되살리는 것이다. 언제고 당신은 (아마 그리 오래지 않아) 어떤 중요한 파일들을 지우거나 변경할 것이다. 그리고 백업도 없이 부트마저 불가능하게 만들게 될 것이다. 사실 이런 것을 털어놓기는 부끄럽지만, 나는 실제로 /root 디렉터리를 한 방에 날려버렸었다.
Note▶ 당신의 시스템이 크랙된 적이 있다면 백업은 깊이 생각한 후에 결정해야 한다. 백업은 수행과정을 매우 단순하게 하거나 녀석들이 시스템을 망치지 못하도록 계획되어야 한다.(특히 홈 네트워크에서는)
얼마나 백업을 할 것인가 백업하는 공간은 바로 돈이므로 나는 모든 백업을 최소한으로 유지하려 애쓴다. 그래서 나는 단지 선택된 디렉터리만 백업할 뿐, 전체 파일 시스템은 백업하지 않는다. /usr와 /opt 등 디렉터리는 인스톨 시디롬에 그 대부분이 들어있으므로, 하드 드라이브가 손상되더라도 기본적인 것들은 그저 다시 설치하면 그만이다. 그러나, 시스템 환경이나 사용자 설정값이 들어있는 /etc나 /home 디렉터리는 어디에서도 복구할 수 없으므로 정말 중요하다.
어떻게 백업하는가 테이프 드라이버는 홈 네트워크 백업용으로 사용하기에는 대체로 너무 비싸고, 플로피 디스크는 실용성이 없다. (나는 백업 디스크 수가 132 장을 넘었을 때 플로피 디스크를 포기해버렸다) 우리는 여분의 하드 드라이브를 사용하는 방법이 가장 좋은 해결책이라고 생각한다. 단, 여기서 말하는 하드 드라이브가 파티션이 아니라는 것에 주의한다! 내 하드 드라이브에 문제가 생긴 모든 경우에 드라이브 전체가 죽거나 못쓰게 되었지, 피해가 하나의 파티션에 끝나지 않았다.
백업 프로그램들 모든 un*x 계열의 배포판에는 백업에 사용할 수 있는 세 개의 일반적인 프로그램이 포함되어 있다: tar, cpio, 그리고 dump가 그 것으로 각각의 유틸리티는 저마다 장점과 단점을 가지고 있다. TAR: CPIO:
DUMP:
우리의 백업 방법 우리는 run-backup이라는 이름을 가진 백업 스크립트를 사용한다. 이 글의 끝인 Part 3에 쓰여진 글을 그대로 하드 드라이브의 적당한 위치로 옮긴 다음, 아래 명령을 수행해 실행할 수 있도록 설정한다: chmod 777 run-backup [Enter]
run-backup 이 스크립트는 변수 네 개만 바꾸면 어떤 컴퓨터에서도 실행할 수 있도록 디자인되었다: COMPUTER, DIRECTORIES, BACKUPDIR, 그리고 TIMEDIR. 현재 우리는 리눅스 박스 두 대와 솔라리스 박스 두 대에서 이 스크립트를 실행하고 있다. BACKUPDIR은 우리 머신에 nfs로 마운트 되어 있지만, 컴퓨터에 연결된 다른 어떤 하드 드라이브라도 상관없다.
스크립트가 하는 일은 무엇인가? 스크립트가 실행되면, 먼저 오늘이 이 달의 첫 번째 날인지 검사한다. 만약 그렇다면, 스크립트는 DIRECTORIES 변수에 설정된 디렉터리와 파일리스트 전체를 tar로 묶고, 예를 들어 myserver-01Nov.tgz처럼 파일이름에 컴퓨터 이름과 날짜, 그리고 tgz를 붙인 다음, BACKUPDIR 변수에 설정된 디렉터리에 집어넣는다. 백업본의 파일이름들은 각각 서로 다르므로, 당신이 지우지 않는 한 BACKUPDIR 속에 계속 남아있을 것이다. 그 다음에, 오늘이 만약 이 달의 첫 날은 아니지만 일요일이라면, 스크립트는 DIRECTORIES에 설정된 목록 전체에 대한 백업을 만들고, BACKUPDIR 안에 있는 일요일 파일에 덮어쓴다. 다시 말하면, 백업 디렉터리에는 오직 하나의 일요일 파일만 있어서 매주 일요일마다 이 파일을 덮어쓰는 것이다. 그런 방법으로 하드 드라이브 공간을 쓸데없이 낭비하지 않도록 만들면서도 여전히 한 주 전의 전체 백업은 남아있게 된다. 스크립트는 또 일요일의 날짜를 TIMEDIR 디렉터리에 넣어둔다. 만약 오늘이 첫 번째 일요일이 아니라면, 스크립트는 전체 백업이 있었던 일요일 이후에 변경된 파일에 대해서만 모두 증분 백업을 만든다. 그런 이유로 일요일이 지나고 매 요일의 백업은 마지막 파일보다 계속 커지게 될 것이다. 당신은 최근 24시간 이내에 변경된 파일만 증분 백업을 하고 매 요일의 백업은 최소한으로 유지하려고 애쓰겠지만, 혹시 당신의 하드 드라이브가 이번 금요일에 먼 남쪽(?)으로 가버린다면, 당신은 일요일, 월요일, 화요일, 수요일, 그리고 목요일의 백업을 복원해야만 할 것이다. 일요일과 다른 요일들의 백업으로 백업본은 계속 더 많은 파일을 포함하지만, 당신은 단지 일요일과 목요일의 백업만으로 복원해야한다. 아래에 백업 디렉터리의 간단한 보기가 있다: root 828717 Oct 1 16:19 myserver-01Oct.tgz
스크립트를 어떻게 실행시킬까? 우리는 매일 새벽 1시(모두 잠들어 있을 시간)에 cron 작업으로 스크립트를 실행한다. cron에 대한 자세한 도움말은 Part 2에 있다. 주의: 증분 백업은 일요일에 백업한 시간을 알아야한다. 만약 당신이 주중에 백업 스크립트를 시작했다면, TIMEDIR 디렉터리 안에 시간파일을 만들어야 한다.(echo $NOW > $TIMEDIR/$COMPUTER-full-date #update full backup date) 예문으로 제공되는 스크립트에서 이 파일 이름은: myserver-full-date이고 그 속에는 다음 한 줄이 들어있다: 26-Sep
복원 Restoring: 복원은 백업보다 상대적으로 쉬운데, 한 가지만 잘 기억하자: tar는 파일이름 앞에 / 문자를 포함하지 않는다. 그러므로 /etc/passwd 파일을 복원한다면 먼저 / 디렉터리로 옮겨간 다음에 아래처럼 명령을 써야한다: tar -zxvf {wherever_file_is}/myserver-Sun.tgz etc/passwd
다음 달에는 dhcp를 살펴보기로 한다. Copyright 1999, JC Pollman and Bill Mote
Part 2: Cron 리눅스 배포판에는 작업일정 관리와 관련된 프로그램으로 두 가지가 따라 나온다: cron과 at가 그 것으로, 둘 다 시스템이 부트될 때 데몬으로 실행된다 - 그래서 이들 프로그램은 결코 끝나지 않는다(시스템이 종료되거나 데몬을 죽이기 전까지). cron 스케줄은 일정을 반복해서 수행하고 at은 한번만 수행한다. cron은 crontab 파일로부터 실행에 필요한 정보를 읽어들인다. 시스템과 각각의 사용자는 자신의 crontab 파일을 가진다. 시스템의 crontab은 /etc/crontab에 있다. 이 파일은 그대로 둔다. run-backup 일정을 설정하기 위해, root 사용자로 자신의 crontab 파일을 만들어야 한다. 루트의 crontab 파일을 만들자 먼저 EDITOR 변수를 정의한다. 이 변수는 아마 로그인하는 모든 사용자들이 반드시 읽어들이는 /etc/profile 에 넣어두는 방법이 가장 좋을 것이다. /etc/profile을 열고 아래 두 줄을 추가한다. EDITOR=vi [Enter] 만약 vi보다 더 좋아하는 에디터가 있다면, 당신이 좋아하는 것으로 바꾸길 바란다. 바뀐 변수가 시스템에 반영되려면 로그아웃한 다음 다시 로그인해야한다. 그 다음 아래처럼 쓴다: crontab /etc/crontab [Enter] 이 명령은 시스템의 crontab을 복사하여, 당신이 사용할 crontab 파일을 만든다. 이제, 아래 명령으로 당신의 crontab 파일을 편집한다: crontab -e [Enter] crontab은 실행되는 프로그램과 설정파일 모두에 사용되는 이름이라는 것을 기억한다 - passwd랑 비슷하다. 아마 아래와 비슷한 줄들이 보일 것이다(原註: 이 예문은 RedHat 배포판의 crontab이다): SHELL=/bin/bash # run-parts 우리가 실행하려는 명령들이 아니므로 HOME=/ 줄 아래 모든 것을 지우고, run-backup 스크립트가 저장되어 있는 디렉터리 이름을 PATH에 추가한다. crontab 안에서 각각의 줄은 프로그램 하나씩을 실행한다. crontab 파일은 특별한 형식을 가지는데: 프로그램이 실행되는 데 필요한 다섯 개의 필드로 구성된다. 주의: 시스템 crontab 안에는 프로그램을 실행하기 위해 cron 데몬에게 알려주어야 하는 특별한 사용자(예를 들어 root)가 설정되어 있지만, 사용자 crontab에는 이 필드가 필요 없다. 다섯 개의 필드는 다음과 같다: minutes hours day-of-month month day-of-week 맨 페이지에 따르면: 시간과 날짜 필드는:
어떤 필드에 애스터리스크(*, asterisk)가 있다면, “처음부터-끝까지” 항상 설정되어 있다는 의미이다. 숫자로 된 범위는 허용된다. 하이픈(-, hyphen)으로 두 숫자를 구분하여 범위를 설정하며 앞에 있는 숫자가 뒤보다 작아야한다. 특정 범위는 그 사이 숫자들을 포함한다. 예를 들어, 시간 필드에 사용된 8-11은 8, 9, 10 그리고 11시에 정해진 항목을 실행한다. 목록은 허용된다. 목록은 숫자들(또는 범위들)을 쉼표(,)로 구분하여 설정한다. 예를 들어: “1,2,5,9”, “0-4,8-13”. 간격 수치(step values)는 범위에 덧붙여 사용할 수 있다. 범위 뒤에 “month”와 “day of week” 필드에는 이름이 사용될 수도 있다. 특정한 요일이나 달을 구분할 수 있도록 앞에서 세 글자 정도를 사용한다(문제가 없는 경우). 범위나 목록에는 이름이 허용되지 않는다. 날짜와 요일이 함께 설정되어 있다면, 두 설정 모두 적용된다. 예를 들어 “30 4 1,15 * 5”라고 다섯 개의 필드가 설정되었다면 매달 1일과 15일, 4시 30분에 명령을 실행하고, 또 매주 금요일마다 같은 명령을 실행한다. 이제, 우리가 매일 새벽 한 시 5분이 되면 백업 스크립트를 실행하려 한다면, 우리 crontab 파일은 다음과 같을 것이다: SHELL=/bin/bash 5 1 * * * /usr/local/bin/run-backup 그리고 스크립트는 무슨 일이 있었는지 알리기 위해 작업이 끝난 후에는 root에게 email을 보낸다. run-backup 스크립트가 만족할만하게 작동해서 굳이 메일을 확인할 필요가 없다거나, crond로부터 자꾸 날아드는 email이 귀찮아졌다면 MAILTO 줄을 다음과 같이 고친다: MAILTO=”” 더 많은 정보를 원한다면, 맨 페이지를 살펴본다: man crontab
Part 3: run-backup 스크립트 #!/bin/sh # 아래 변수 다섯 개를 당신의 컴퓨터/백업에 알맞은 것으로 바꾼다. COMPUTER=myserver # 컴퓨터 이름 # 이 아래 줄은 모두 손대지 말고 그대로 둔다. PATH=/usr/local/bin:/usr/bin:/bin # 그 달의 첫 날에 영구적인 전체 백업을 만든다. # 그렇지 않다면 NEWER 날짜보다 새로운 파일들만 백업한다. if [ $DOM = “01” ]; then # 달마다 하는 전체 백업 if [ $DOW = “Sun” ]; then # 매주 일요일마다 전체 백업 else # 증분 백업 - 지난주의 백업을 덮어쓴다.
|
![]() ![]() | |
스마티(Smarty) 템플릿 사용하기 |
![]() ![]() | ||||||||||||||||||||||||||||||||||
제 목 : 서버 모니터링 툴의 강자, RRDtool 가이드 (작성중. alpha 버전) 작성자 : 좋은진호(truefeel) 작성일 : 2003.9.22(월)~ 그래픽 모니터링 툴인 RRDtool과 그 프론트엔드 툴 HotSaNIC의 설치, 운영가이드이다. 1. RRDtool의 이해 2. RRDtool 설치 3. HotSaNIC 설치 4. RRDtool 직접 다루기 5. 문제 해결 6. 이용 사례 1. RRDtool의 이해 RRDtool에 대해 들어가기 전에 먼저 MRTG 툴을 설명할 필요가 있을 듯 하다. MRTG(Multi Router Traffic Grapher)는 이름에서도 드러난대로, SNMP 프로토콜을 사용하여 라우터를 거쳐가는 트래픽을 실시간 그래픽을 통해 모니터링하는데 가장 많이 사용한다. 이외에 시스템을 모니터링하는 여러 addon들이 있다. DISK 사용량, CPU사용량, 메모리 사용량, 데몬, 세션 개수 등.. 심지어는 P2P인 당나귀의 트래픽, 프락시 서버인 Squid 트래픽까지 실시간(실시간이라기 보다는 특정 시간간격으로 변화하여 보여준다는게 더 정확하지만)으로 웹에서 볼 수 있다. RRDtool은 MRTG처럼 실시간 그래픽 모니터링 기능을 가지고 있으면서 보다 더 개선된 형태의 툴이다. 보다 빠르고 시스템 로드를 덜 잡아먹는다. 또한 MRTG의 제약이었던 2개 이상의 데이터를 하나의 그래픽을 통해 표시할 수 있다. 그래픽의 유연성(?)면에서도 단연 RRDtool이 압도한다. [ MRTG로 트래픽 모니터링하는 화면 ] ![]() [ RRDtool과 HotSaNIC으로 CPU 사용률을 모니터링하는 화면 ] ![]() 2. RRDtool 설치 RRDtool : http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ RRDtool의 시스템 요구사항은 다음과 같다. Perl 5.005 (컴파일시에 문제가 발생하면 더 최신 것을 설치해본다.) GNU make GNU gcc 위 RRDtool 사이트에서 최신 버전을 받아온다. /usr/local/rrdtool에 하는 것으로 가정한다.
3. HotSaNIC 설치 HotSaNIC : http://hotsanic.sourceforge.net/archive/ HotSaNIC은 RRDtool을 사용하는 툴로 시스템 통계정보를 그래프로 생성해준다. * 시스템 요구 사항 - RRDtool - iptables 또는 ipchains (네트워크 트래픽 통계용으로 쓰기 위함) 위 사이트에서 받은 최신 버전은 컴파일없이 환경설정만으로 바로 사용하므로 /usr/local에서 압축을 푼다.
모니터링중이 아니라면 N) 있다면
3) 필요한 디렉토리 생성 이제 RRDtool의 웹용 이미지와 html이 저장될 디렉토리와 로그 파일 저장 디렉토리를 생성한다. 디폴트로 로그는 HoSaNIC 홈의 var/log에 생성된다. (html 홈은 /usr/local/apache/htdocs/ 라고 가정)
4) 환경 파일의 주요 설정 HoSaNIC 홈/settings가 주 설정 파일이고 HoSaNIC 홈/modules/모듈명/settings는 각 모듈별 설정 파일이다. 주 settings 파일에서 주요 설정을 살펴보자.(반드시 확인할 것에 * 표시해둠)
각 모듈별 설정은 해당 디렉토리의 settings을 보면 자세히 설명이 되어 있다. 여기서는 ping, diskio, apps에 대해서만 예를 들어본다. * ping 모듈 ( HoSaNIC홈/modules/ping/settings ) 192.168.123.15(파일서버)에 대해 ping을 한다면, 다음을 추가하면 된다.
설정했는데 ping 이미지가 생성안된다면 '5. 문제해결'에 해결방법을 설명해뒀다. * diskio 모듈 ( HoSaNIC홈/modules/ping/settings ) /proc/stat 에서 disk_io 라인을 살펴보면 다음과 같이 되어 있다. disk_io: (2,0):(1,1,2,0,0) (3,0):(306090,39930,942826,266160,5212040) (3,1):(55015,28746,1435800,26269,909568) (8,0):(50,50,253,0,0) 여기서 (3,0) = hda, (3,1) = hdb, (8,0) = sda를 각각 의미한다. 따라서 hda와 hdb의 disk 입출력을 보려면 다음과 같이 설정한다.
* apps 모듈 ( HoSaNIC/modules/apps/settings )
5) 실행 자~ 이제 웹페이지를 생성하고 rrdgraph만 실행하면 모니터링할 수 있다.
이제 웹브라우저를 띄우고 보면 된다. 아직 이미지도 안나온는데 뭘 보라는 것일까? 최소 15분(settings의 DTIME)이 지내야 모듈내의 큰 이미지들이 생성되고 24시간(CTIME)이 지나면 메인의 작은 이미지가 보일 것이다. 24시간 전이라도 적당한 시기에 ./convert.pl을 실행하면 메인에서도 이미지를 볼 수 있다. 부팅할 때 자동으로 rrdgraph가 실행되록 하려면 어떻게 해야할까? rrdgraph 스크립트를 /etc/rc.d/init.d 에 복사를 한 후 chkconfig로 서비스를 추가한다.
4. RRDtool 직접 다루기 HoSaNIC은 이미 정해진 모듈을 통해서 RRDtool을 다루는 것이다. 이제 시스템관리자가 원하는 데이터를 RRDtool로 직접 조작하여 통계용 이미지를 생성하는 방법을 알아본다. 간단히 과정을 정리해보면. - RRDtool용 자체 DB(일반적으로 .rrd로 지정)를 생성한다.(create) -> - 데이터를 업데이트하거나 (update) 가져온다.(fetch) -> - 이미지를 생성한다. (graph) 1) rrdtool 명령 익히기 DB 생성, 이미지 만드는 것은 모두 RRDtool홈/bin/rrdtool 명령을 통해서 한다.
rrdtool에서 사용 가능한 명령은 무엇이 있을까? ---------- ----------------------------------------------------------------------- 명 령 설 명 ---------- ----------------------------------------------------------------------- create 새로운 RRD DB를 만든다. update DB에 새 데이터를 저장한다. graph 저장된 DB자료를 이용해서 이미지를 생성한다. (.gif 또는 .png) dump RRD DB의 데이터를 XML 포맷으로 뽑아준다. restore XML 포맷에서 RRD DB로 저장한다. fetch RRD DB에서 데이터를 얻어온다. tune RRD DB의 설정을 변경한다. last RRD DB의 최종 업데이트 시간을 알려준다. info RRD DB의 헤더 정보를 보여준다. (파일명, 최근업데이트일, 설정값...) rrdresize RRA 크기를 변경한다. 가능하면 사용하지 말기를 xport RRD DB의 데이터를 XML 포맷으로 뽑아준다. (출력 포맷 지정) ---------- ----------------------------------------------------------------------- 2) 샘플 DB 생성 3) 이미지 만들기 5. 문제 해결 1) HoSaNIC 로그 파일을 보니 Can't locate RRDs.pm in @INC (@INC contains... 오류가 있습니다. RRDtool 설치할 때 make site-perl-install 를 하지 않아 RRDs.pm 펄 모듈이 설치되지 않아서 입니다. RRDtool 소스 디렉토리에 가서 make site-perl-install을 하세요. 2) makeindex.pl 실행할 때 다음 오류가 발행합니다. WEBDIR (path to HotSaNIC's output directory) does not exist. 시스템 모니터링 결과가 저장될 웹디렉토리를 생성하지 않았다. 위 글중 '3 - 3) 필요한 디렉토리 생성'을 확인해봐라. 3) 시간이 한참지났는데 ping 이미지가 생성이 안됩니다. 물론 ping설정은 했습니다. 로그를 보니 Can't locate asm/unistd.ph in @INC (did you run h2ph?).. 가 있습니다. 펄용 헤더 파일이 없기 때문입니다. 펄 헤더로 변환해주는 h2ph로 해결할 수 있습니다. cd /usr/include; h2ph -r -l . 6. 이용 사례 HanIRC의 채널별 사용자 통계를 보여준다. 5분간격의 데이터를 1시간 단위로 자동 업데이트한다. 장혜식님의 py-rrdtool을 사용한 페이지 http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/gallery/ * 참고 자료 http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/manual/index.html http://myhome.hanafos.com/~itup/index.html http://kltp.kldp.org/stories.php?story=03/02/13/1717339 |
0