FreeBSD의 변형을 실행하는 두 개의 서버가 있습니다. 하나는 pfSense 라우터이고 다른 하나는 FreeNAS 8 서버입니다. 이 두 서버는 SNMP를 실행하며 세 번째 Cacti 서버를 사용하여 정보를 수집하고 그래프로 표시합니다.
pfSense 서버와 FreeNAS 서버의 SNMP 데이터에는 메모리 사용량, CPU 사용량 또는로드 평균이 포함되지 않습니다.
pfSense 서버의 트래픽 그래프가 잘 보입니다. FreeNAS 서버의 디스크 사용량 보고서는 아름답게 보입니다. 메모리 사용량, CPU 사용량 또는 평균로드에 대한 데이터를 얻지 못합니다. pfSense 및 freeNAS 웹 관리자에서 그래프를 볼 수 있기 때문에 두 서버 모두이 데이터를 제공 할 수 있어야합니다. 그러나 관리의 편의를 위해 모든 그래프를 Cacti에 포함하고 싶습니다.
SNMP를 통해 pfSense 서버가 메모리 사용량, CPU 사용량 및 평균로드 데이터를 제공하도록하려면 어떻게해야합니까? SNMP를 통해 FreeNAS 서버가 메모리 사용량, CPU 사용량 및 평균로드 데이터를 제공하도록하려면 어떻게해야합니까? 두 서버 모두 동일한 절차가 작동한다고 가정합니다.
답변
이것에 대한 많은 연구 끝에 나는 문제가 무엇인지 발견했습니다. pfSense 및 FreeNAS는 FreeBSD begemot SNMP 데몬 (bsnmpd)을 통해 SNMP 지원을 제공합니다 . 메모리 사용량, CPU 사용량 및 평균로드 정보를 제공하려면 begemot SNMP 데몬에 추가 모듈이 snmp_ucd.so
로드 되어 있어야합니다 .
load 설명 하는 다음 포럼 스레드를 찾았 snmp_ucd.so
지만 두 시스템에는 없었습니다.
이를 해결하기 위해 가상 머신을 생성하고 FreeBSD 8.3을 설치했습니다. 이 가상 머신 내에서 FreeBSD Ports 시스템을 snmp_ucd.so
사용하여 다음을 사용하여 필요한 라이브러리 를 다운로드하고 빌드했습니다 .
cd /usr/ports/net-mgmt/bsnmp-ucd
make all install clean
cd /usr/ports/net-mgmt/bsnmptools
make all install clean
그 후, FreeBSD 가상 머신에서 pfSense 서버 및 FreeNAS 서버 모두 scp
로 복사 /usr/local/lib/snmp_ucd.so
했습니다.
그런 다음 FreeNAS GUI를 사용하여 다음 보조 매개 변수 를 추가했습니다 .
begemotSnmpdModulePath."ucd" = "/mnt/Garrison/jail/usr/local/lib/snmp_ucd.so"
이것은 /etc/snmpd.config
FreeNAS 서버에 자동으로 라인을 추가했고 그래프를 얻을 수있었습니다!
pfSense 서버는 GUI를 사용하여 변경 사항을 적용 할 수 없었기 때문에 더 까다 로웠으며 pfSense 스크립트가 자동으로 다시 작성되어 /etc/snmpd.config
변경 사항을 덮어 씁니다. pfSense가 작동하도록하려면 편집해야했습니다 /etc/inc/services.inc
. 읽은 줄 앞에 :
fwrite($fd, $snmpdconf);
나는 다음을 추가했다 :
//Josh Additions: Make load avg and CPU usage work:
$snmpdconf .= <<<EOD
# Josh additions:
begemotSnmpdModulePath."ucd" = "/usr/local/lib/snmp_ucd.so"
EOD;
그런 다음 SNMP를 비활성화하고 다시 활성화하면 변경 사항이 적용되고 CPU 사용량 그래프가 작동합니다! 이 변경 사항은 pfSense 업그레이드에서 거의 지속되지 않지만 변경 사항을 적용하는 더 쉽고 안정적인 방법을 찾을 수 없었습니다.