snmpd 에서 너무 적은 정보를 뿌려줍니다
수고하십니다!
최근 cacti 를 활용한 모니터링 시스템 구축을 공부하고있습니다..
몇가지 궁금한점이 있어 질문드립니다,
일단 제가 아는것까지 정리하겠습니다,
cacti 는 rrd 툴을 좀더 쉽게 사용하기 위한 웹기반의 NMS툴로 알고있습니다,
장비에서 script 방식이나, snmp 정보를 xml 로 파싱해서 얻는방법(data query) 을 이용하여,
rrd 에 축적하고 rra의 그래프로 그려내주는것으로 알고있습니다.
그런데 원격지의 snmpd 가 제대로 정보를 못뿌려주는 기분이 듭니다.
장비 제조사에서 나오는 snmp정보는 뿌려주는 정보가 괘 많아서
mib 정보에 대입하지 않으면 이게 무슨 역할의 OID인지 파악도 안될정도인데,
이상하게 LINUX에서 기본으로 설정된 snmpd 정보는 얼마 안됩니다.
하다못해 윈도우에서 wmi + snmp 정보도 꽤 그럴듯하게 나오는데...
그래서 찾아봤더니 snmpd 에 모듈을 올리면 특정 정보에 대해서 snmp 방식으로 뿌려줄 수 있다고 하고
예시로 랩탑 무선랜의 전력소모량을 측정해 snmp 로 뿌리는 예제를 봤습니다.
여기서 궁금증이 생겼습니다.
1. snmpd 에 올리는 모듈은 꼭 C나 C++로 짜야할까요? 그렇다면 왜 그렇게 되어야 할까요,
위의 예제 같은 경우라면 커널이나 드라이버에 접근하기위해 저급언어를 사용했다고 생각되어지지만..
디스크 공간이나, 특정프로세스의 실행여부같은건 스크립트를 통해서도 snmpd 에 제공할 수 있다고 생각되어집니다
2. 리눅스에서 기본설정된 snmpd와 윈도우에서 wmi와 연결되어 제공되는 snmpd의 정보의 차이가 너무 많습니다.
이것은 어디에서 기인한걸까요?
생각해보면 윈도우는 단일관리되는 항목이기때문에 OID 변동걱정없이 "그 정보는 그 위치에" 있을것이라 생각됩니다.
그러나 리눅스의 경우 커널을 어떻게 컴파일하느냐 부터 시작해서 배포판 종류도 많이 갈라지기때문에, 최소한 제공해야 할 정보만 제공하고
나머지는 사용자가 추가하는식으로 진행해야 해서 그런게 아닌가 생각됩니다.
그렇다면 리눅스에서는 간단한 정보 하나를 보기위해서도 C나 C++로 일일이 모듈을 만들어서 등록해야 할까요?;;
3. MIB정보와 OID 정보의 관계에 대해서,
일련의 숫자로 표현되는 OID 정보에 대해 "이게 뭐하는 놈이다" 라고 서술해주는것이 MIB이라고 간단히만 알고있습니다.
그러나 이것이 어떤 의미가 있을까요? 단순히 OID 와 사람이 인식할수 있는 텍스트로 맵핑하는게 전부인지요?
실제로 까봤더니 snmp 에서 뿌려주는 자료에 대한 자료값을 설정해주는게 아닌가 생각됩니다.
가령 시간의 경우 1970년을 기준으로 초단위로 계산되는데, MIB 파일에서 "이 값은 초단위의 시간을 의미하니, 이것을 사람이 인지할수있는 시간형태로 바꿔주자" 라는 식으로
변경하는게 아닐까 생각됩니다만, 확실하진 않기에 조언부탁드립니다
모니터링이라는게 간단하게 생각했는데 생각보다 분량이 많고 깊고 넓어서 놀랐습니다,
이 이외에도 궁금한걸 잔뜩 적어놨는데 당장 생각나는게 저정도인지라 올립니다,
일단 할수 있는 만큼 찾아보고 생각 한 후에 올리는것이지만, 풀리지 않는 점이 있어 올림을 이해해주시면 감사하겠습니다...ㅠㅠ
답변하기 어려우시거나 귀찮으시다면 생각이나 검색할 수 있는 키워드라도 부탁드리겠습니다..
하기의 자료는 linux 에서 기본상태로 출력되는 snmpd정보입니다.
어떤건 무의미한 값이 들어가있는것도 있고, 어떤건 초기화된값도 있고, 일정치가 않은것같습니다.
정보를 추가하려면 어떻게 해야할까요?
user@jaeho:~$ snmpwalk -c public -v 2c localhost
SNMPv2-MIB::sysDescr.0 = STRING: Linux jaeho 2.6.26-2-amd64 #1 SMP Thu Nov 25 04:30:55 UTC 2010 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (593149) 1:38:51.49
SNMPv2-MIB::sysContact.0 = STRING: Root (configure /etc/snmp/snmpd.local.conf)
SNMPv2-MIB::sysName.0 = STRING: jaeho
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (configure /etc/snmp/snmpd.local.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
SNMPv2-MIB::sysORDescr.1 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.3 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (20) 0:00:00.20
SNMPv2-MIB::sysORUpTime.8 = No more variables left in this MIB View (It is past the end of the MIB tree)
1. snmp를 이용한 Agent를 말씀하시는거
1. snmp를 이용한 Agent를 말씀하시는거 같은데요.
디스크 공간 모니터링은 net-snmpd의 snmpd.conf 수정만으로도 가능합니다.
특정 프로세서의 실행여부 모니터링은 스크립트를 걸어두거나, nagios같은 별도 Agent를 이용하시는게 편리합니다.
2,3. snmpd.conf에
view systemview included .1
를 추가하시고, #snmpwalk -c public -v 2c localhost를 실행해보세요.
그리고 mib와 oid는 같은거라고 생각하시면 됩니다. 하나는 문자, 하나는 숫자로 되어있습니다.
둘중 편리한걸 사용하시면 됩니다.
감사합니다^^
먼저 감사인사가 늦었습니다, 죄송합니다..
말씀해주신 부분에 대해서 한번 더 살펴봤더니, 제가 잘못 설정한 문제가 있었습니다.
초기상태에서는 기본적으로 보기권한이 제한 되어있었더군요,
이걸 OID .1 부터 트리탐색 해 나가도록 snmpd.conf 를 수정해줬더니 전체 항목이 그대로 표현되었습니다
(혹여 이 아티클을 참조하시는 다른 분들도 이 댓글에 올린 첨부파일을 참조해보시면 권한관계에 대해 아실수 있으리라 생각됩니다)
기타 특정 컨디션에서 실행되는 액션을 스크립트로서 다양하게 실행시킬 수 있는부분이 보입니다만 아직 살펴보지는 못했고
snmp 를 이용한 Agent 는 어떤건지 한번 찾아봐야겠습니다...ㅠㅠ;;(어떤녀석인지 잘 이해가 가지 않네요, 클라이언트에 설치되어 정보를 빼내주는 녀석을 말씀하시는것인지요? 그거라면 snmpd 가 이미 그 역할을 수행하고 있지는 않은지요..)
(이 문서를 참조하시는 다른 분들께서는 우분투의 snmpd.conf 파일을 참조해보시면 참 좋을것같습니다, 설명과 예시가 잘 나와있는듯합니다)
(데비안과 centos 에서 제공하는 snmpd.conf 의 주석과는 다른 차이가 있는듯..?)
아는것이 없어 질문이 어리석었습니다, 답변감사드립니다..
혹여 다른 의견을 내주실 분들도 댓글에 지도를 부탁드립니다..
댓글 달기