graylog2 是一个开源的日志存储系统,是由java语言编写的server,能够接收TCP,UDP,AMQP的协议发送的日志信息,并且基于mongodb数据库服务器快速存储,能够通过一个基于ruby编写的web管理界面,让轻松管理你的日志。下面将在一台默认安装的rhel5.x的系统上来实现graylog2+syslog-ng+mongodb构建集中管理日志服务器

一.源码包下载

   
   
   
   
  1. cd /usr/src 
  2. #mongodb数据库,在此的主要作用是存储日志信息
  3. wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.2.1.tgz 
  4. #graylog2日志服务器 
  5. wget http://cloud.github.com/downloads/Graylog2/graylog2-server/graylog2-server-0.9.5.tar.gz 
  6. #yaml是一种编程语言,
  7. wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz 
  8. #ruby脚步语言
  9. wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz 
  10. #graylog2-web界面
  11. wget http://cloud.github.com/downloads/Graylog2/graylog2-web-interface/graylog2-web-interface-0.9.5p2.tar.gz 
  12. #eventlog,安装syslog-ng需要先安装eventlog
  13. wget http://www.balabit.com/downloads/files/syslog-ng/sources/3.2.4/source/eventlog_0.2.12.tar.gz 
  14. #syslog-ng日志服务器,
  15. wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.3.5/source/syslog-ng_3.3.5.tar.gz 
  16. #JDK,java环境 
  17. JDK下载地址, http://www.oracle.com/technetwork/java/javase/downloads/index.html 打开此链接下载相应的jdk版本,这里以jdk-6u21-linux-i586.bin  

二.安装相关依赖包

   
   
   
   
  1. yum -y install gcc* openssl-devel glib2-devel 

三.安装并配置mongodb数据库
1.安装mongodb

   
   
   
   
  1. useradd mongodb 
  2. mkdir -pv /data/db 
  3. chown -R mongodb:mongodb /data 
  4. tar xvf /usr/src/mongodb-linux-i686-2.2.1.tgz -C /usr/local/ 
  5. cd /usr/local/ 
  6. ln -sv mongodb-linux-i686-2.2.1 mongodb 

2.为mongodb提供服务启动脚本,并启动

   
   
   
   
  1. vim /etc/init.d/mongod  #内容如下 
  2. #!/bin/bash 
  3. # chkconfig: - 90 11 
  4. # description: mongodb server SysV script 
  5.  
  6. . /etc/rc.d/init.d/functions 
  7. if [ -f /etc/sysconfig/mongod ]; then 
  8.         . /etc/sysconfig/mongod 
  9. fi 
  10. mongod=/usr/local/mongodb/bin/mongod 
  11. prog=mongod 
  12. lockfile=/data/db/mongod.lock 
  13. RETVAL=0 
  14. OPTIONS="--fork --logpath=/data/mongod.log"   
  15.  
  16. start() { 
  17.         echo -n $"Starting $prog: " 
  18.         daemon  $mongod $OPTIONS  
  19.         RETVAL=$? 
  20.         echo 
  21.         [ $RETVAL = 0 ]  
  22.         return $RETVAL 
  23. stop() { 
  24.     echo -n $"Stopping $prog: " 
  25.     killproc -p ${lockfile}  $mongod 
  26.     RETVAL=$? 
  27.     echo 
  28.     [ $RETVAL = 0 ] && rm -f ${lockfile} 
  29. case "$1" in 
  30.   start) 
  31.     start 
  32.     ;; 
  33.   stop) 
  34.     stop 
  35.     ;; 
  36.   restart) 
  37.     stop 
  38.     start 
  39.     ;; 
  40.   status) 
  41.     status -p ${lockfile} $mongod 
  42.         RETVAL=$? 
  43.     ;; 
  44.   *) 
  45.     echo $"Usage: $prog {start|stop|restart|status|}" 
  46.     exit 1 
  47. esac 
  48. exit $RETVAL 
  49. ---------------------------------------------------- 
  50.  
  51. chmod a+x /etc/init.d/mongod 
  52. chkconfig --add mongod 
  53. chkconfig mongod on 
  54. service mongod start 

3.创建graylog2所需数据库实例

   
   
   
   
  1. /usr/local/mongodb/bin/mongo 
  2. >use admin 
  3. >db.addUser('admin','password') 
  4. >use graylog2 
  5. >db.addUser('graylog','redhat') 
  6. >exit 


四.安装graylog2-server
1.安装JDK环境

   
   
   
   
  1. cd /usr/src 
  2. chmod a+x jdk-6u21-linux-i586.bin 
  3. ./jdk-6u21-linux-i586.bin 
  4. mv jdk1.6.0_21/ /usr/local/ 
  5. cd /usr/local/ 
  6. ln -sv jdk1.6.0_21 jdk 
  7.  
  8. 添加java环境变量, 
  9. vim /etc/profile 
  10. JAVA_HOME=/usr/local/jdk 
  11. PATH=$JAVA_HOME/bin:$PATH 
  12. export JAVA_HOME PATH 
  13.  
  14. source /etc/profile 

2.安装graylog-server

   
   
   
   
  1. cd /usr/src 
  2. tar -xvf graylog2-server-0.9.5.tar.gz -C /usr/local/ 
  3. useradd graylog 
  4. chown -R graylog:graylog /usr/local/graylog2-server-0.9.5/ 
  5. cd /usr/local 
  6. ln -sv graylog2-server-0.9.5 graylog2 
  7. cp /usr/local/graylog2/graylog2.conf.example  /etc/graylog2.conf 

3.配置garylog2-server

   
   
   
   
  1. vim /etc/graylog2.conf  修改内容如下 
  2. syslog_listen_port = 515    #将默认的514端口修改为其他未使用端口,因为514端口是syslog-ng默认的端口,这里需要用syslog-ng的514端口来接收其他服务器发来的日志,并进行处理的, 
  3. syslog_protocol = udp 
  4.  
  5. mongodb_useauth = true 
  6. mongodb_user = graylog2     #访问mongodb的用户名 
  7. mongodb_password = redhat   #访问mongodb用户名的密码 
  8. mongodb_host = localhost    #mogodb的主机 
  9. mongodb_database = graylog2 #存储日志的数据库 
  10. mongodb_port = 27017        #访问mongodb的端口,默认是27017  
  11. ...... 
  12. ...... 
  13.  
  14. 为了方便起见这里修改下graylog-server服务启动脚本配置文件 
  15. sed -i 's/java/$JAVA_CMD/' /usr/local/graylog2/bin/graylog2ctl 
  16. sed -i '2 aJAVA_CMD=/usr/local/jdk/bin/java' /usr/local/graylog2/bin/graylog2ctl 

4.将graylog2-server添加为系统服务并启动

   
   
   
   
  1. vim /etc/init.d/graylog2  #内容如下 
  2. #!/bin/bash 
  3. # chkconfig: - 83 19 
  4. # description: graylog2-server SysV script 
  5.  
  6. GRAYLOG_BIN=/usr/local/graylog2/bin 
  7. cd $GRAYLOG_BIN && ./graylog2ctl $1 
  8.  
  9. ------------------------------------------- 
  10. chmod a+x /etc/init.d/graylog2 
  11. chkconfig --add graylog2 
  12. chkconfig graylog2 on 
  13. service graylog2 start 

五.安装graylog2-web-interface
1.安装ruby脚本语言环境

   
   
   
   
  1. cd /usr/src 
  2. tar xvf yaml-0.1.4.tar.gz 
  3. cd yaml-0.1.4 
  4. ./configure --prefix=/usr/local/yaml 
  5. make 
  6. make install 
  7. cd /usr/src 
  8. tar xvf ruby-1.9.2-p0.tar.gz 
  9. cd ruby-1.9.2-p0 
  10. ./configure --prefix=/usr/local/ruby --enable-shared --disable-install-doc --with-opt-dir=/usr/local/yaml 
  11. make 
  12. make install 
  13.  
  14. vim /etc/profile 
  15. 在PATH环境变量中添加 
  16. PATH=......:/usr/local/ruby/bin 
  17.  
  18. source /etc/profile 

2.安装graylog2-web-interface

   
   
   
   
  1. cd /usr/src 
  2. tar xvf graylog2-web-interface-0.9.5p2.tar.gz -C /usr/local/ 
  3. cd /usr/local/ 
  4. chown -R graylog:graylog /usr/local/graylog2-web-interface-0.9.5p2/ 
  5. ln -sv graylog2-web-interface-0.9.5p2/ graylog2-web-interface 
  6. cd graylog2-web-interface 
  7. gem install bundler     #需要连网 
  8. bundle install      #需要联网 

3.配置graylog2-web-interface

   
   
   
   
  1. vim /usr/local/graylog2-web-interface/config/mongoid.yml    
  2. production: 
  3.   host: localhost   #mongodb的主机 
  4.   port: 27017       #mongodb的端口号 
  5.   username: graylog #mongodb的用户名 
  6.   password: redhat  #mongodb的用户名密码 
  7.   database: graylog2    #mongodb的数据库名 
  8.  
  9. -------------------------------------------------- 
  10. vim /usr/local/graylog2-web-interface/config/general.yml #根据自己的需要修改,不做任何修改也没关系, 
  11. vim /usr/local/graylog2-web-interface/config/email.yml   #根据自己的需要修改,不做任何修改也没关系,
  12.  
  13. 配置日志切割 cat > /etc/logrotate.d/graylog2-web-interface <

4.启动graylog2-web-interface,自己可以照着上面的服务启动脚本的例子写一个SysV风格的脚本

   
   
   
   
  1. cd /usr/local/graylog2-web-interface && ./script/rails server -e production & 

5.首次访问graylog2-web界面的配置

   
   
   
   
  1. 打开浏览器输入http://服务器IP:3000就打开graylog2的web界面了. 
  2. 首次使用需要做一些配置,只需要添加一个管理员帐号即可,见以下图, 

图1.

graylog2+syslog-ng+mongodb构建集中管理日志服务器_第1张图片

图2输入用户信息
graylog2+syslog-ng+mongodb构建集中管理日志服务器_第2张图片

图3 登录界面
graylog2+syslog-ng+mongodb构建集中管理日志服务器_第3张图片

图4 点击messages
graylog2+syslog-ng+mongodb构建集中管理日志服务器_第4张图片

图5 

graylog2+syslog-ng+mongodb构建集中管理日志服务器_第5张图片

可以看到,此时还没有日志信息,这是因为日志的收集程序,syslog-ng还没有配置,如下

六.安装并配置syslog-ng服务,
其实也可以不用将syslog-ng配置成服务,graylog2也可以通过网络来接收日志信息,这里将syslog-ng配置为服务的目的是,通过syslog-ng统一收集日志并通过syslog-ng的强大过滤功能,可以对自己感兴趣的日志进行过滤处理
1.安装eventlog

   
   
   
   
  1. cd /usr/src/  
  2. tar xvf eventlog_0.2.12.tar.gz  
  3. cd eventlog-0.2.12  
  4. ./configure --prefix=/usr/local/eventlog  
  5. make  
  6. make install 

 2.安装syslog-ng

   
   
   
   
  1. cd /usr/src  
  2. tar xvf syslog-ng_3.3.5.tar.gz  
  3. cd syslog-ng-3.3.5  
  4. export PKG_CONFIG_PATH=/usr/local/eventlog/lib/pkgconfig  
  5. ./configure --prefix=/usr/local/syslog-ng  
  6. make  
  7. make install 

3.配置syslog-ng,

   
   
   
   
  1. cat > /usr/local/syslog-ng/etc/syslog-ng.conf <<EOF 
  2. @version: 3.3  
  3. @include "scl.conf"  
  4. source s_local {  
  5.         system();  
  6.         internal();  
  7. };  
  8. #设置日志的来源为本机udp的514端口  
  9. source s_network { udp(ip(0.0.0.0) port(514)); };  
  10.  
  11. #将日志发送到本机的udp515端口进行处理,515端口是graylog2-server的端口,  
  12. destination d_local { udp("127.0.0.1" port(515) ); };  
  13. log {  
  14.         source(s_local);  
  15.         source(s_network);  
  16.         destination(d_local);  
  17. };  
  18. EOF 

4.添加为系统服务,并启动

   
   
   
   
  1. vim /etc/init.d/syslog-ng  
  2. #!/bin/bash  
  3. #   
  4. # chkconfig: -  60 27  
  5. # description: syslog-ng SysV script.   
  6. . /etc/rc.d/init.d/functions  
  7.  
  8. syslog_ng=/usr/local/syslog-ng/sbin/syslog-ng  
  9. prog=syslog-ng  
  10. pidfile=/usr/local/syslog-ng/var/syslog-ng.pid  
  11. lockfile=/usr/local/syslog-ng/var/syslog-ng.lock  
  12. RETVAL=0 
  13. STOP_TIMEOUT=${STOP_TIMEOUT-10}  
  14.  
  15. start() {  
  16.         echo -n $"Starting $prog: "  
  17.         daemon --pidfile=$pidfile $syslog_ng $OPTIONS  
  18.         RETVAL=$?  
  19.         echo  
  20.         [ $RETVAL = 0 ] && touch ${lockfile}  
  21.         return $RETVAL  
  22. }  
  23.  
  24. stop() {  
  25.     echo -n $"Stopping $prog: "  
  26.     killproc -p $pidfile -d $STOP_TIMEOUT $syslog_ng  
  27.     RETVAL=$?  
  28.     echo  
  29.     [ $RETVAL = 0 ] && rm -f $lockfile $pidfile  
  30. }  
  31.  
  32. case "$1" in  
  33.   start)  
  34.     start  
  35.     ;;  
  36.   stop)  
  37.     stop  
  38.     ;;  
  39.   status)  
  40.         status -p $pidfile $syslog_ng  
  41.     RETVAL=$?  
  42.     ;;  
  43.   restart)  
  44.     stop  
  45.     start  
  46.     ;;  
  47.   *)  
  48.     echo $"Usage: $prog {start|stop|restart|status}"  
  49.     RETVAL=2 
  50. esac  
  51. exit $RETVAL  
  52.  
  53. ---------------------------------------  
  54.  
  55. chmod a+x /etc/init.d/syslog-ng  
  56. killall syslogd  
  57. chkconfig --add syslog-ng  
  58. chkconfig syslog-ng on  
  59. service syslog-ng start 

 七.日志客户端配置
1.syslog客户端配置

   
   
   
   
  1. vim /etc/syslog.conf  
  2. *.* @服务器IP 

 2.syslog-ng客户端配置

   
   
   
   
  1. vim "syslog-ng的配置文件"  
  2. destination d_local { udp("127.0.0.1" port(514) ); }; 

 八.测试

   
   
   
   
  1. 到这里基本已经配置完成来,下面来测试下,在客户端上创建一用户,  
  2. useradd test2    
  3. 然后打开浏览器输入,http://服务器IP:3000 

 图一 用户登录

graylog2+syslog-ng+mongodb构建集中管理日志服务器_第6张图片

图2     
graylog2+syslog-ng+mongodb构建集中管理日志服务器_第7张图片

可以看到上面创建test2用户时的日志已经显示出来了。到这里配置已经结束了。
syslog及syslog-ng的详细配置见 http://ant595.blog.51cto.com/5074217/1080922