게시물 1,376건
   
[SNMP] 원격 쉘스크립트 결과값 받아오기
글쓴이 : 최고관리자 날짜 : 2010-04-27 (화) 11:45 조회 : 18108
글주소 :
                                
MRTG 서버와 모니터링 대상서버가 분리되어있을 경우 원격에서 모니터링 대상서버로의 결과값을 받기를 원할때 사용하는 방법이다.
나같은 경우는 웹 접속자수, LISTEN 포트, 하드디스크 온도등을 체크하려고 한다.

아래와 같이 설정파일에 등록

/etc/snmp/snmpd.conf
###############################################################################
# Executables/scripts
# 쉘 스크립트를 이곳에 등록하여 그 결과를 모니터링 할 수가 있다.
# 여기서 예제로 설명하는 mrtg.cfg 를 보면 Target[mrtg_tab] 소스에 직접 쉘
# 스크립트를 지정하여 로컬 머신 web server, mysql server의 데몬과 세션을
# 모니터링 하는데, 밑에서처럼 두 쉘 스크립트를 이곳에 등록하여 모니터링 할
# 수도 있다.
# 이렇게 모니터링 하게 되면 쉘 스크립트의 결과가 MIB 객체로 등록이 되므로
# 원격 mrtg 머신에서도 이 쉘 스크립트를 모니터링 할 수 있는 장점이 있다.
# 그러나 이곳에 쉘 스크립트를 등록하여 이용하는 방법은 보안 문제를 유발 할
# 수 있음을 인지하여 주의 깊게 사용하기 바란다.
# 또한 이 방법의 경우에는 쉘 스크립트 결과가 1라인을 초과 한다면 그 결과는
# 짤려지게 된다.

exec http_conn /root/system_info.sh http_conn
exec listen_port /root/system_info.sh listen_port
exec system_uptime /root/system_info.sh system_uptime
exec hdd_temp1 /root/system_info.sh hdd_temp1
exec hdd_temp2 /root/system_info.sh hdd_temp2


스크립트 파일
1개의 파일로 원하는 명령어를 함수로 만들어버렸다...

#!/bin/sh
http_conn()
{
     web_conn=`netstat -an |grep  :80 |grep EST  |wc -l`
     echo $web_conn
}

listen_port()
{
     listen=`netstat -an |grep LISTEN |grep -v unix |wc -l`
     echo $listen
}

system_uptime()
{
        CHECK=`uptime |grep days`

        if [ "$CHECK" == "" ] ; then
             system_uptime=0
             echo $system_uptime
        else
             system_uptime=`uptime | awk '{print $3}'`
             echo $system_uptime
        fi
}

hdd_temp1()
{
        hdd_temp1=`hddtemp /dev/sda |awk '{print $3}'`
        echo $hdd_temp1
}

hdd_temp2()
{
        hdd_temp2=`hddtemp /dev/sdb |awk '{print $3}'`
        echo $hdd_temp2
}


case "$1" in

    http_conn)
        http_conn
    ;;
    listen_port)
        listen_port
    ;;
    system_uptime)
        system_uptime
    ;;
    hdd_temp1)
        hdd_temp1
    ;;
   hdd_temp2)
        hdd_temp2
    ;;
    *)
    echo $"Usage : 0$ { http_conn | listen_port | system_uptime | hdd_temp1 | hdd_temp2 }"
    ;;
esac



원격에서 snmpwalk 를 통해서 결과값을 확인

# snmpwalk XXX.XXX.XXX.XXX -v2c -c  public .1.3.6.1.4.1.2021.8.1.101
UCD-SNMP-MIB::extOutput.1 = STRING: 0
UCD-SNMP-MIB::extOutput.2 = STRING: 10
UCD-SNMP-MIB::extOutput.3 = STRING: 0
UCD-SNMP-MIB::extOutput.4 = STRING: 38
UCD-SNMP-MIB::extOutput.5 = STRING: 36


제대로 받아온다... ㅋㅋ
이제는 MRTG CFG 파일을 수정해서 결과값을 가지고 그리면 끝..!!
Target[hdd_temp]: .1.3.6.1.4.1.2021.8.1.101.4&.1.3.6.1.4.1.2021.8.1.101.4:public@xxx.xxx.xxx.xxx:::::2
MaxBytes[hdd_temp]: 500
Suppress[hdd_temp]: d
Title[hdd_temp]: hdd_temp
PageTop[hdd_temp]: hdd_temp
 <TABLE>
   <TR><TD>SYSTEM:</TD>     <TD>WEB</TD></TR>
   <TR><TD>IP:</TD> <TD>XXX.XXX.XXX.XXX</TD></TR>
 </TABLE>




이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
   

 



 
사이트명 : 모지리네 | 대표 : 이경현 | 개인커뮤니티 : 랭키닷컴 운영체제(OS) | 경기도 성남시 분당구 | 전자우편 : mojily골뱅이chonnom.com Copyright ⓒ www.chonnom.com www.kyunghyun.net www.mojily.net. All rights reserved.