scribedのビルド・インストール手順

下記 tar-ball をとってくる。バージョンの組み合わせが違うとビルドがこけるので注意。

  • boost_1_38_0.tar.gz
  • thrift-0.5.0.tar.gz

ビルド・インストール手順

  tar zvxf boost_1_38_0.tar.gz
  tar zvxf thrift-0.5.0.tar.gz

  # 以下suで行う
  yum -y install openmpi-devel
  yum -y install libevent-devel
  yum -y install ruby-devel

  # 以下も boost, thrift のインストールに必要。なかったら入れる
  yum -y install make
  yum -y install gcc-c++
  yum -y install autoconf
  yum -y install automake
  yum -y install flex
  yum -y install zlib-devel  
  yum -y install zlib-devel  

  #boostのインストール
  cd boost_1_38_0
  ./configure
  make install
  cd ..
  
  #thriftのインストール
  cd thrift-0.5.0
  ./configure --without-php_extension --without-php --without-python_extension --without-python
  make install

  cd contrib/fb303
  ./bootstrap.sh
  make
  make install
  cd ../../../

  # scribeのソースをgitで取得してrev 63e4824をチェックアウト
  git clone https://github.com/facebook/scribe.git facebook-scribe-63e4824
  cd facebook-scribe-63e4824
  git checkout 63e4824838bf84e35da6a0817d8a72a6ec0b9fb3

  #scribeのインストール
  ./bootstrap.sh
  make
  make install

scribed の設定

cat > /etc/rc.d/init.d/scribed
#!/bin/sh

CMD=`basename $0`

USER=`whoami`
if [ $USER != 'root' ]
then
    echo "You must be root to run ${CMD}"
    exit 1
fi

LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
export  LD_LIBRARY_PATH
PID_FILE=/usr/local/scribe/scribe.pid
CMD_PATH=/usr/local/bin/scribed

start(){
    echo "Starting ${CMD} process"
    if [ -f $PID_FILE ]
    then
        cmd_pid=`cat $PID_FILE`
        pid_line=`pidof ${CMD}`
        pids=(`echo $pid_line`)
        for i in `seq 1 ${#pids[@]}`
        do
            if [ ${pids[$i-1]} -eq $cmd_pid ]
            then
                echo "${CMD} is already running"
                exit 1
            fi
        done
        rm $PID_FILE
        echo "${CMD} pid file found but process not found."
    fi
    $CMD_PATH &
    echo $! > $PID_FILE
}

stop(){
    echo "Shutting down ${CMD} process"
    if [ -f $PID_FILE ];
    then
        pid=`cat $PID_FILE`
        kill $pid
        sleep 2
        ps -p $pid > /dev/null
        if [ $? -eq 0 ];
        then
            kill -9 $pid
        fi
        rm $PID_FILE
    else
        echo "Scribe process wasn't running"
    fi
}

restart(){
    stop
    start
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    *)
        echo $"Usage: ${CMD} {start|stop|restart}"
        exit 2
esac

exit $?
^D
  chkconfig --add scribed
  chkconfig scribed on
  /etc/rc.d/init.d/scribed start

アプリサーバ、ログサーバそれぞれの scribe.conf を /usr/local/scribe に置く

  mkdir /usr/local/scribe
  cp /tmp/scribe.conf /usr/local/scribe/scribe.conf