• graylog2+syslogng+mongodb构建集中管理日志服务器


    来源:http://ant595.blog.51cto.com/5074217/1081094

    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 <<EOF /usr/local/graylog2-web-interface/log/*log { size=512M rotate 90 copytruncate delaycompress compress notifempty missingok } EOF 

    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.



    图2输入用户信息


    图3 登录界面


    图4 点击messages


    图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 

     图一 用户登录

    图2      

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

  • 相关阅读:
    [LeetCode] 735. Asteroid Collision
    [LeetCode] 14. Longest Common Prefix
    [LeetCode] 289. Game of Life
    [LeetCode] 73. Set Matrix Zeroes
    [LeetCode] 59. Spiral Matrix II
    [LeetCode] 54. Spiral Matrix
    [LeetCode] 48. Rotate Image
    [LeetCode] 134. Gas Station
    [LeetCode] 70. Climbing Stairs
    [LeetCode] 71. Simplify Path
  • 原文地址:https://www.cnblogs.com/hasayaki/p/2875021.html
Copyright © 2020-2023  润新知