· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
cacti에 메일수신 그래프추가

cacti: 메일수신 그래프추가

방창현(winchild@sds.co.kr) (주)삼정데이타서비스

최종수정일: 2009 년 4월 2일 16시37분


소개

LINUX 에서 snmpd 에 특정한 OID 에서 프로그램이 동작하여 시스템의 정보를 SNMP 로 전송하도록 설정하는 방법이다. 이것은 메일의 갯수를 세어 보내는 설정에 대하여 설명한다.


스크립트 프로그램의 작성

mailcount 프로그램은 qmail 의 수신하는 메일의 갯수를 세는 프로그램이다. /var/qmail/count 디렉토리의 "ham", "spam", "unsure", "virus" 디렉토리에 있는 "total" 파일의 크기를 읽어서 SNMP 의 요청에 응답한다.

일단 해당프로그램을 설치하고 실행해 본다. -v 옵션은 확인하기 위한것 이다

# cd /usr/local/src/mail-utility
# cvs update
P mailcount.c
P Makefile
# make
cc -c -o mailcount.o mailcount.c
cc -o mailcount mailcount.o
#
# ./mailcount
5284
11055
0
560
# ./mailcount -v
ham = 5285
spam = 11058
unsure = 0
virus = 560
#

snmpd.conf 에 실행프로그램 추가

/etc/snmp/snmpd.conf 에 특정 OID (여기서는 .1.3.6.1.4.1.2021.51 를 사용) 으로 SNMP 를 요청할때 메일큐의 값을 리턴하도록 해당 프로그램을 설정한다. qmHandle 프로그램은 메일큐의 모니터링을 위한 스크립트 이다.

# Run a shell script containing:
#
# #!/bin/sh
# echo hello world
# echo hi there
# exit 35
#
# Note:  this has been specifically commented out to prevent
# accidental security holes due to someone else on your system writing
# a /tmp/shtest before you do.  Uncomment to use it.
#
# exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest
exec .1.3.6.1.4.1.2021.50 qmHandle /etc/snmp/qmHandle.sh
exec .1.3.6.1.4.1.2021.51 mailcount /usr/local/src/mail-utility/mailcount


설정후 snmpd 를 재시작한다.

# /etc/rc.d/init.d/snmpd restart
Stopping snmpd:                                            [  OK  ]
Starting snmpd:                                            [  OK  ]
#


SNMP 로 확인

해당 OID 로 원하는 값이 리턴되는지 확인한다.
[# snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.51
UCD-SNMP-MIB::ucdavis.51.1.1 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.51.2.1 = STRING: "mailcount"
UCD-SNMP-MIB::ucdavis.51.3.1 = STRING: "/usr/local/src/mail-utility/mailcount"
UCD-SNMP-MIB::ucdavis.51.100.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.101.1 = STRING: "5346"
UCD-SNMP-MIB::ucdavis.51.101.2 = STRING: "11151"
UCD-SNMP-MIB::ucdavis.51.101.3 = STRING: "0"
UCD-SNMP-MIB::ucdavis.51.101.4 = STRING: "561"
UCD-SNMP-MIB::ucdavis.51.102.1 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.51.103.1 = ""
#

NMS 서버에서도 확인해 봐서, SNMP 요청에 제대로 응답하는지 확인한다.


cacti 에 그래프 추가하기

이와 같은 여러개의 데이터를 하나의 cacti 에 그래프를 추가하려면 두가지 방법이 있다. 그것은 Data Input Methods 의 목록에서 나오는 Get SNMP Data 를 사용하는 방법과 Get SNMP Data (Indexed) 를 사용하는 방법이다.

한번의 실행으로 여러개의 데이터를 하나의 rrd 데이터베이스에 넣는 방법은 Get SNMP Data (Indexed) 인데 이것을 사용하려면 /home/cacti/resource/snmp_queries 디렉토리에 interface.xml 과 같은 XML 스크립트를 만들고 연결시켜야 한다. 합리적인 방법이고 효율도 좋으나 데이터를 보내는방법이 RFC 에 일치해야 하고, 복잡하다.

다른 방법으로 하나의 OID 의 단일값을 취할때는 이전의 메일큐의 갯수를 세어서 그래프를 그릴때같이 Get SNMP Data 이용하면 되는데 이럴때는 여러개의 데이터소오스를 묶어서 표현할수 있도록 그래프템플릿을 만들어 주면 된다.


데이터템플릿의 생성

데이터 템플릿을 생성하는 방법은 Get SNMP Data 로서 해당 OID 값에 해당하는 내용으로 추가한다. 일반적인 내용은 같으며 맨나중에 해당 데이터의 순서에 해당하는 값을 넣는다. 그리고 메일의 갯수는 지속적으로 증가하는 값을 가지므로 Data Source Type 에 COUNTER 를 넣는다.

아래의 화면 예제는 HAM 메일의 갯수를 저장하는 Data Source Type 의 예제이다.
mail_ham_counter_dt.jpg
[JPG image (93.09 KB)]

표현하고자 하는 데이터의 Data Templates 를 모두 만든다.
graph_template.jpg
[JPG image (103.81 KB)]


그래프템플릿의 생성

그래프 아이템을 추가하면서, 데이터템플릿과 연결한다. 필요에 따라서 Graph Item Type 에서 "AREA", "LINE1" 등을 선택하여 사용한다. "AREA" 를 이용할경우 앞의 그래프가 뒤의 그래프를 가리므로 고려해서 지정해야 한다.


맨아래의 데이터 소오스는 모든 데이터소오스의 합계로서 CDEF Function 에서 "Total All Data Sources" 를 선택하면 해당 소오스의 데이터를 모두 합산한 수치와 그래프를 그려준다.

세부아이템을 선택시에 데이터 소오스를 연결한다.
mail_ham_counter_dt.jpg
[JPG image (93.09 KB)]


생성된 그래프

mail_count_graph.jpg
[JPG image (76.4 KB)]

그래프가 그려진 수치가 좀 이상한데 수치값은 m (밀리) 이다. 즉 1/1000 수치가 된다. 이것은 초당 얼마의 데이터가 증가했는가를 표시하는 것이다. 본 데이터의 경우 ham 에 160.39 m 인데 이것은 초당 0.16개의 메일데이터가 증가했다는 표시가 된다. 그래프의 단위는 300 초마다 이므로 0.16 x 300 = 97 개가 증가한것이 된다.

맨아래의 회색은 전체 데이터소오스의 합산이다.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-04-02 16:37:57
Processing time 0.0040 sec