MRTG - 윈디하나의 솔라나라
|
솔라리스에 번들되어있는 Net-SNMP를 활성화 한다. 11.3의 경우 5.4.1 버전이 번들되어있다.
windy@wl ~ $ sudo vi /etc/net-snmp/snmp/snmpd.conf ... windy@wl ~ $ sudo svcadm enable svc:/application/management/net-snmp:default
솔라리스에 번들되어있는 Net-SNMP를 활성화 한다.
root@wl ~ # svcadm disable svc:/application/management/snmpdx:default 1) root@wl ~ # vi /etc/sma/snmp/snmpd.conf 2) ... dlmod seaProxy /usr/sfw/lib/libseaProxy.so dlmod seaExtensions /usr/sfw/lib/libseaExtensions.so #dlmod seaProxy /usr/sfw/lib/amd64/libseaProxy.so #dlmod seaExtensions /usr/sfw/lib/amd64/libseaExtensions.so root@wl ~ # svcadm enable svc:/application/management/sma:default 3)1) 솔라리스에서 제공했던 SNMPD를 종료한다.
솔라리스9에도 SNMP서버가 번들되어있다. 솔라리스 9을 전체 설치 했다면 mibiisa(1M) 라는 데몬을 볼 수 있는데 (ps -ef | grep mibiisa
로 확인), 이 데몬이 SNMP 에이전트이다.
커뮤니티 이름은 /etc/snmp/conf/snmpd.conf
에서 read-community
부분을 통해 확인할 수 있으며 기본값은 public
이다. public
은 모든 네트워크 장비의 기본 커뮤니티 문자이므로, 이 커뮤니티 문자는 반드시 수정하자. IP만 알면 네트워크 트래픽 정보를 빼낼 수 있기 때문이다. 설정 파일 하단의 private
라 되어있는 쓰기 가능한 커뮤니티 문자도 다른 문자로 수정해준다.
이 데몬은 Net-SNMP 보다는 기능이 덜하기 때문에 이 문서에서 소개하는 일부 예제가 제대로 동작하지 않을 수 있다.
windy@wl ~ $ netstat -na | grep 161 1) *.161 Idle windy@wl ~ $ snmpd -Dregister_mib -Dmib_init -L 2) ... windy@wl ~ $ snmpget -v 1 -c public localhost sysUpTime.0 3) DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (58776) 0:09:47.761) UDP 161번 포트가 열려있는지 확인한다.
/usr/sfw/bin
에 있다./usr/sfw/bin
에 있다.
# wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz
# tar xvfz libiconv-1.16.tar.gz
# cd libiconv-1.16
# ./configure --prefix=/usr/local --enable-static --enable-shared 1)
# make
# sudo make install
1) 64비트로 컴파일 하려면 CFLAGS="-m64"
를 사용하자.
configure
전에 include/config/ftoption.h
의 FT_CONFIG_OPTION_SUBPIXEL_RENDERING
을 언코멘트 하면 서브픽셀렌더링을 사용할 수 있지만, 기본적으로 비활성화되어있다. 마이크로소프트의 특허때문이다. FreeType & Patents를 읽어보자."/usr/local/include/ft2build.h", line 56: cannot find include file: <freetype/config/ftheader.h>와 유사한 오류가 나면
/usr/local/include/ft2build.h
파일을 지운다. 이 파일은 더이상 사용되지 않으며 /usr/local/include/freetype2/ft2build.h
으로 대체되었다.# wget https://download.savannah.gnu.org/releases/freetype/freetype-2.11.0.tar.xz # tar xvfJ freetype-2.11.0.tar.xz # cd freetype-2.11.0 # ./configure --with-harfbuzz=no CFLAGS="-m64" LDFLAGS="-m64" # make # sudo make install
# wget https://github.com/libgd/libgd/releases/download/gd-2.3.3/libgd-2.3.3.tar.xz # tar xvfJ libgd-2.3.3.tar.xz # cd libgd-2.3.3 # ./configure --with-xpm=/usr --with-tiff=/usr --with-liq=/usr --with-webp=/usr CFLAGS="-m64" LDFLAGS="-m64" ... Support for Zlib: yes Support for PNG library: yes Support for JPEG library: yes Support for WebP library: no Support for TIFF library: yes Support for Freetype 2.x library: yes Support for Fontconfig library: yes Support for Xpm library: yes Support for liq library: no Support for pthreads: yes .... # vi Makefile 1) CFLAGS= -m64 # vi src/Makefile 1) CFLAGS= -m64 # make # make install2)
CFLAGS
파라메터의 -warn all
만 삭제한다.
소스를 받아 설치하자.
windy@wl ~/src $ wget https://oss.oetiker.ch/mrtg/pub/mrtg-2.17.10.tar.gz
windy@wl ~/src $ tar xvfz mrtg-2.17.10.tar.gz
windy@wl ~/src $ cd mrtg-2.17.10
root@wl ~/src/mrtg-2.17.10 $ CFLAGS="-m64" LDFLAGS="-m64" ./configure \
--with-gd-inc=/usr/local/include \
--with-gd-lib=/usr/local/lib \
--with-z \
--with-png
root@wl ~/src/mrtg-2.17.10 $ make
root@wl ~/src/mrtg-2.17.10 $ make install 1)
1) MRTG 는 /opt/mrtg-2
에 설치되어있다.
public
)를 알아야 한다. 아래 예제는 호스트 주소를 localhost, 커뮤니티 문자를 public으로 가정하였다.root@wl /usr/local/mrtg-2/bin # mkdir ../cfg root@wl /usr/local/mrtg-2/bin # mkdir /usr/local/apache2/htdocs/mrtg root@wl /usr/local/mrtg-2/bin # ./cfgmaker \ --global 'WorkDir: /usr/local/apache2/htdocs/mrtg' \ --global 'Language: korean' \ --global 'Options[_]: bits,growright' \ --output /usr/local/mrtg-2/cfg/public.cfg \ public@localhost root@wl /usr/local/mrtg-2/bin # ./indexmaker \ -output /usr/local/apache2/htdocs/mrtg/index.html \ /usr/local/mrtg-2/cfg/public.cfg root@wl /usr/local/mrtg-2/bin # crontab -e 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/public.cfg※ 위와 같이 설정한 후 웹 브라우저에서 http://localhost/mrtg에 방문하면 호스트의 네트워크 트래픽(비트단위)가 보일 것이다. MRTG는 5분마다 실행되며 5분마다 그 내용이 바뀐다.
MRTG는 네트워크 트래픽 외에 여러가지 속성을 볼 수 있다. SNMP에서 지원되는건 모두 다 표현할 수 있는데, /usr/local/mrtg-2/cfg/public.cfg
을 열어보면 Target[*]: .1.3.6.1.2.1.2.2.1.10.*&.1.3.6.1.2.1.2.2.1.16.*:public@192.168.0.1:
이란 부분이 보인다. (*부분은 각각의 호스트마다 다르다) .1.3.6.1.2.1.2.2.1.10. 부분은 MIB라 일컬어지는 것으로 데이터의 종류를 나타내는 값이다. 몇몇 약속된 값이 있는데, 이를 변경해 전송 비트가 아닌 패킷수, 오류패킷수, 심지어는 CPU점유율, 메모리 점유율등을 알아낼 수 있다. 이 값을 사용하려면 .cfg파일을 일일이 고쳐야 하므로 여간 번거로운 일이 아니다. 이런 문제를 해결하기 위해 cfgmaker(1)에서는 템플릿을 사용할 수 있다.
cfgmaker(1) 에서 사용할 수 잇는 템플릿은 두가지 종류다. 인터페이스 템플릿과 호스트템플릿이 그것이다.
인터페이스 템플릿의 경우 아래와 같이 사용해볼 수 있다. 여기서 사용한 인터페이스 템플릿은 interface-genericsnmp.template으로 인터넷에서 받았다. 템플릿 파일은 /opt/mrtg-2/cfg/interface-genericsnmp.template에 있다고 가정한다.
root@wl /usr/local/mrtg-2/bin # ./cfgmaker \ --if-template=/opt/mrtg-2/cfg/interface-genericsnmp.template \ --global 'WorkDir: /usr/local/apache2/htdocs/mrtg-interface' \ --global 'Language: korean' \ --global 'Options[_]: bits,growright' \ --output /opt/mrtg-2/cfg/public-interface.cfg \ public@localhost root@wl /usr/local/mrtg-2/bin #
만약 라우터/스위치가 아닌 서버에 대해 사용하고 있다면 템플릿 파일의 PageTop[xxx]
에 $sysname $html_if_snmp_descr($if_ip)
을 사용하는 것이 좋을 것이다.
호스트 템플릿의 경우 아래와 같이 사용해볼 수 있다. 여기서 사용한 호스트 템플릿은 host-genericsnmp.template으로 인터넷에서 받았다.
root@wl /usr/local/mrtg-2/bin # ./cfgmaker \ --host-template=/opt/mrtg-2/cfg/host-genericsnmp.template \ --global 'WorkDir: /usr/local/apache2/htdocs/mrtg-host' \ --global 'Language: korean' \ --output /opt/mrtg-2/cfg/public-host.cfg \ public@localhost root@wl /usr/local/mrtg-2/bin #
이후 indexmaker(1)를 사용해 인덱스를 생성해주자.
root@wl /usr/local # vi /usr/local/mrtg-2/cfg/public.cfg 1)
...
LogFormat: rrdtool
PathAdd: /opt/rrdtool/bin/
LibAdd: /opt/rrdtool/lib/perl
root@wl /usr/local #
1) Options[_]: bits,growright
위에 넣은 다음 MRTG를 다시 실행하면(크론에 의해 실행될때까지 기다리면 된다) 자동으로 기존의 로그 파일을 읽어 RRD포맷으로 변환한다.
root@wl ~ # cd /usr/local/apache2/htdocs/mrtg root@wl /usr/local/apache2/htdocs/mrtg # wget http://download.tsdn.dk/software/mrts/mrts-v0.1.1.php.gz root@wl /usr/local/apache2/htdocs/mrtg # gunzip mrts-v0.1.1.php.gz root@wl /usr/local/apache2/htdocs/mrtg # ln -s mrts-v0.1.1.php mrts.php root@wl /usr/local/apache2/htdocs/mrtg # vi mrts-v0.1.1.php $dir = '/usr/local/apache2/htdocs/mrtg'; $rrdcommand = '/usr/local/rrdtool/bin/rrdtool'; root@wl /usr/local/apache2/htdocs/mrtg # vi /usr/local/apache2/conf/httpd.conf ... <Directory "/usr/local/apache2/htdocs/mrtg"> php_admin_value safe_mode 0 </Directory> ... root@wl /usr/local/apache2/htdocs/mrtg # /usr/local/apache2/bin/apachectl restarthttp://localhost/mrtg/mrts.php 를 방문해 장치를 선택하면 아래와 같은 화면이 보일 것이다.
RSS ATOM XHTML 5 CSS3 |
Copyright © 2004-2024 Jo HoSeok. All rights reserved. |