Tag Archives: MRTG

rrdtool 설치 하기

MRTG와 쌍벽을 이루는 그래프를 그리기 위한 툴인 rrdtool의 경우 yum등을 통해 손쉽게 설치가 가능합니다. 하지만 이번에는 수동으로 설치하는 방법을 알아볼까 합니다. 이 글은 [이것]을 참고하였습니다. 시간이 지나 새로운 버젼이 나오게 되면 과거버젼의 글이 되어버리므로 참고만 하시되 원본글을 보고 설치하시기 바랍니다.

설치 준비하기
최소한의 설치 준비를 위해 다음을 생각해 두어야 합니다.

1. 어느 디렉토리에서 설치를 위한 빌드를 준비할 것인가?
2. 어느 디렉토리에 설치할 것인가?

두가지를 결정하였다면 환경 변수로 등록해 둡니다.
[code]BUILD_DIR=/tmp/rrdbuild
INSTALL_DIR=/opt/rrdtool-1.4.2[/code]
빌드를 할 디렉토리를 만들어서 이동합니다.
[code]mkdir -p $BUILD_DIR
cd $BUILD_DIR[/code]
추가로 필요로 하는 라이브러리를 알아보기 위한 설치를 시도해 봅니다.
[code]wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.2.tar.gz
gunzip -c rrdtool-1.4.2.tar.gz | tar xf –
cd rrdtool-1.4.2
./configure –prefix=$INSTALL_DIR && make && make install[/code]
위의 결과가 정상적으로 끝난다면 필요한 라이브러리가 모두 있는것으로써 바로 사용이 가능해 집니다. 하지만 보통은 어떤 라이브러리들이 없는 쭉 나오게 됩니다. 그것을 적어두고 다음으로 넘어갑니다.

의존성 라이브러리 설치하기
설치를 하기에 앞서 라이브러리들이 서로 참조를 하기 때문에 다음을 수행하여 문제 없이 이루어 지도록 해줍니다.
[code]export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/pkgconfig
export PATH=$INSTALL_DIR/bin:$PATH
export LDFLAGS=”-Wl,–rpath -Wl,${INSTALL_DIR}/lib”
export MAKE=make[/code]
이후 다음의 라이브러리들중 필요로 하는 라이브러리만 선별적으로 순서대로 설치를 합니다.

– pkgconfig
[code]wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz
gunzip -c pkg-config-0.23.tar.gz | tar xf –
cd pkg-config-0.23
./configure –prefix=$INSTALL_DIR CFLAGS=”-O3 -fPIC”
$MAKE
$MAKE install[/code]
– zlib
[code]cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/zlib-1.2.3.tar.gz
gunzip -c zlib-1.2.3.tar.gz | tar xf –
cd zlib-1.2.3
./configure –prefix=$INSTALL_DIR CFLAGS=”-O3 -fPIC” –shared
$MAKE
$MAKE install[/code]
– libpng
[code]cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.18.tar.gz
gunzip -c libpng-1.2.18.tar.gz | tar xf –
cd libpng-1.2.18
env CFLAGS=”-O3 -fPIC” ./configure –prefix=$INSTALL_DIR
$MAKE
$MAKE install[/code]
– freetype
[code]cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/freetype-2.3.5.tar.gz
gunzip -c freetype-2.3.5.tar.gz | tar xf –
cd freetype-2.3.5
./configure –prefix=$INSTALL_DIR CFLAGS=”-O3 -fPIC”
$MAKE
$MAKE install[/code]
– libXML2
[code]cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/libxml2-2.6.32.tar.gz
gunzip -c libxml2-2.6.32.tar.gz | tar xf –
cd libxml2-2.6.32
./configure –prefix=$INSTALL_DIR CFLAGS=”-O3 -fPIC”
$MAKE
$MAKE install[/code]
– fontconfig
[code]cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/fontconfig-2.4.2.tar.gz
gunzip -c fontconfig-2.4.2.tar.gz   | tar xf –
cd fontconfig-2.4.2
./configure –prefix=$INSTALL_DIR CFLAGS=”-O3 -fPIC” \
  –with-freetype-config=$INSTALL_DIR/bin/freetype-config
$MAKE
$MAKE install[/code]
font-config의 경우, 설치중에 폰트캐시를 생성하게 됩니다. 하지만 시스템을 X를 제외하여 설치하였다면 폰트가 하나도 없게 되어 캐시를 생성해봤자 사용할 수 있는 폰트가 없기 때문에 모든 문자가 깨져 나오게 됩니다. 이때에는 사용하려는 트루타입 폰트(ttf)를 $INSTALL_DIR/etc/fonts(rpm 패키지로 설치되어있을 경우 /usr/share/fonts) 안에 설치하여 주신후에 fc-cache를 실행하여 주시면 됩니다.

– Pixman
[code]cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/pixman-0.10.0.tar.gz
gunzip -c pixman-0.10.0.tar.gz  | tar xf –
cd pixman-0.10.0
./configure –prefix=$INSTALL_DIR CFLAGS=”-O3 -fPIC”
$MAKE
$MAKE install[/code]
– Cairo
[code]cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/cairo-1.6.4.tar.gz
gunzip -c cairo-1.6.4.tar.gz   | tar xf –
cd cairo-1.6.4
./configure –prefix=$INSTALL_DIR \
   –enable-xlib=no \
   –enable-xlib-render=no \
   –enable-win32=no \
   CFLAGS=”-O3 -fPIC”
$MAKE
$MAKE install[/code]
– Glib
[code]cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/glib-2.15.4.tar.gz
gunzip -c glib-2.15.4.tar.gz  | tar xf –
cd glib-2.15.4
./configure –prefix=$INSTALL_DIR CFLAGS=”-O3 -fPIC”
$MAKE
$MAKE install[/code]
– Pango
[code]cd $BUILD_DIR
wget http://oss.oetiker.ch/rrdtool/pub/libs/pango-1.21.1.tar.bz2
bunzip2 -c pango-1.21.1.tar.bz2 | tar xf –
cd pango-1.21.1
./configure –prefix=$INSTALL_DIR CFLAGS=”-O3 -fPIC” –without-x
$MAKE
$MAKE install[/code]
다시 rrdtool 설치하기
필요한 의존 라이브러리를 설치하였다면 다시한번 설치를 시도해 봅시다.
[code]cd $BUILD_DIR/rrdtool-1.4.2
./configure –prefix=$INSTALL_DIR –disable-tcl –disable-python
$MAKE clean
$MAKE
$MAKE install[/code]
설치후에 $INSTALL_DIR/share/rrdtool/examples 안에 있는 예제를 실행하여 정상적으로 그래프가 그려지는지 확인하여 봅시다. 잘 된다면 설치 성공입니다.

사용자 삽입 이미지

위는 설치중에 나오는 시디 구매 장난;;

[RHEL] Ethernet Bandwidth Limit 걸기 (속도 제한/QOS)

2010년 2월 4일 추가 —-
이 기능은 잘 되지 않는것으로 판단됩니다. 자세한 부분은 댓글을 참고하세요.


리눅스의 사실상 기본 패키지인 iproute안에는 tc(Traffic Control)이라는 명령어가 포함되어 있습니다.

이 명령어를 사용하여 네트워크 스위치의 도움 없이도 자체적으로 자신의 이더넷 속도를 제한 할 수 있습니다.

이는 보통 네트워크에서 말하는 QOS(Quality Of Service)와 비슷한 기능을 제공합니다.

하지만 저비용으로 고효율을 낼 수 있다는 점에서 매우 괜찮은 방법인듯 합니다.

1) 요구 사항
– iproute RPM 패키지가 설치되어있어야 함
– 리눅스 커널의 iproute 파트의 Traffic Control 옵션(Netlink포함)이 활성화 되어있어야 함.
– 리눅스 커널 2.4버젼 이후의 경우 기본적으로 대부분의 Traffic Control 옵션이 활성화 되어있음.

2) 시스템 명령어 추가
– shaping이라는 명령을 추가합니다.
[code]$ vi /etc/init.d/shaping[/code]
– 다음의 소스코드를 입력합니다.
[code]#!/bin/bash
#  tc uses the following units when passed as a parameter.
#  kbps: Kilobytes per second
#  mbps: Megabytes per second
#  kbit: Kilobits per second
#  mbit: Megabits per second
#  bps: Bytes per second
#       Amounts of data can be specified in:
#       kb or k: Kilobytes
#       mb or m: Megabytes
#       mbit: Megabits
#       kbit: Kilobits
#  To get the byte figure from bits, divide the number by 8 bit
#
 
# tc명령어의 위치를 입력합니다.
TC=/sbin/tc
 
# 대역폭을 제한하기 위한 이더넷 인터페이스를 지정합니다.
IF=eth0
 
# 다운로드 속도 제한
DNLD=15mbit
 
# 업로드 속도 제한
UPLD=15mbit
 
# 속도 제한을 적용할 호스트의 IP 주소
IP=123.123.123.123
 
# Filter options for limiting the intended interface.
U32=”$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32″
 
start() {
# We’ll use Hierarchical Token Bucket (HTB) to shape bandwidth.
# For detailed configuration options, please consult Linux man
# page.
    $TC qdisc add dev $IF root handle 1: htb default 30
    $TC class add dev $IF parent 1: classid 1:1 htb rate $DNLD
    $TC class add dev $IF parent 1: classid 1:2 htb rate $UPLD
    $U32 match ip dst $IP/32 flowid 1:1
    $U32 match ip src $IP/32 flowid 1:2
# The first line creates the root qdisc, and the next two lines
# create two child qdisc that are to be used to shape download
# and upload bandwidth.
#
# The 4th and 5th line creates the filter to match the interface.
# The ‘dst’ IP address is used to limit download speed, and the
# ‘src’ IP address is used to limit upload speed.
}
 
stop() {
# Stop the bandwidth shaping.
    $TC qdisc del dev $IF root
}
 
restart() {
# Self-explanatory.
    stop
    sleep 1
    start
}
 
show() {
# Display status of traffic control status.
    $TC -s qdisc ls dev $IF
}
 
case “$1” in
  start)
    echo -n “Starting bandwidth shaping: “
    start
    echo “done”
    ;;
  stop)
    echo -n “Stopping bandwidth shaping: “
    stop
    echo “done”
    ;;
  restart)
    echo -n “Restarting bandwidth shaping: “
    restart
    echo “done”
    ;;
  show)
    echo “Bandwidth shaping status for $IF:”
    show
    echo “”
    ;;
  *)
    pwd=$(pwd)
    echo “Usage: tc.bash {start|stop|restart|show}”
    ;;
esac
 
exit 0[/code]
– 실행 권한을 주고 실행해 봅니다.
[code]$ chmod 755 /etc/init.d/shaping
$ /etc/init.d/shaping start[/code]
3) 결과 확인
사용자 삽입 이미지

– 빨간선을 기준으로 왼쪽이 기존의 상황이고 오른쪽이 트래픽 제한을 한 이후 입니다.
– 기존의 경우 엄청나게 들쭉 날쭉한 것을 알 수 있습니다.
– 오른쪽의 경우 강제로 제한이 걸리면서 둥글게 트래픽이 뭉개지는 것을 볼 수 있습니다.
– 제한을 건 속도에 정확하게 제한이 걸리는것으로 보이지는 않습니다.
– 테스트를 거치면서 IDC상황에 맞게 설정하시면 될것 같습니다.

참고 : http://www.topwebhosts.org/tools/traffic-control.php