zoukankan      html  css  js  c++  java
  • graylog2+syslog-ng+mongodb构建集中管理日志服务器 --转载

    原文地址:http://blog.chinaunix.net/uid-11065483-id-3654882.html

    由于公司内需要监控QQ的上下线记录,原本使用了分光+Panabit+Splunk的结构来做记录。Panabit的使用是相当舒服的,可是当一天内的Splunk的日志记录超过了500MB的时候,Splunk的Free版本却不能再使用了,这让我非常的郁闷。于是我开始寻找其他的解决方案,终于被我发现了Graylog2。Graylog2配合MongoDB可以快速检索LOG的信息,这对于每天有大量日志需要记录并偶尔需要检索重要信息的场景中,十分的有用。
        Graylog2安装完后的效果图如下:
        
        效果还可以吧,使用Quickfilter可以快速检索相关的Message。“一万年太久,只争朝夕”,咱说干就干!下面开始介绍如何安装Graylog2。

    一.源码包下载

    点击(此处)折叠或打开

    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

         你可以按上面的来下载,或者也可以到我的网盘上下载,地址是:http://www.kuaipan.cn/file/id_11613978115442246.htm。

    二.安装相关依赖包

    点击(此处)折叠或打开

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

        操作系统推荐使用CentOS 5.7 X64版本。我在使用CentOS 6版本的时候在进行到gem install bundler的时候会出现一个文件未找到,Google上的解决方案不多,但是我发现可以使用Find搜索之后根目录之后,再将此文件拷贝到上级目录中就可以解决了。我有强迫症,所以我还是推荐使用CentOS 5.7 X64版本。    

    三.安装并配置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

        Mongo的基本操作可以参见:http://blog.csdn.net/shirdrn/article/details/7105539    

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

    点击(此处)折叠或打开

    1. #vim /etc/init.d/mongod #内容如下
    2. ————————————————————————————————
    3. #!/bin/bash
    4. # chkconfig: - 90 11
    5. # description: mongodb server SysV script
    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. start() {
    16. echo -n $"Starting $prog: "
    17. daemon $mongod $OPTIONS
    18. RETVAL=$?
    19. echo
    20. [ $RETVAL = 0 ]
    21. return $RETVAL
    22. }
    23. stop() {
    24. echo -n $"Stopping $prog: "
    25. killproc -p ${lockfile} $mongod
    26. RETVAL=$?
    27. echo
    28. [ $RETVAL = 0 ] && rm -f ${lockfile}
    29. }
    30. case "$1" in
    31. start)
    32. start
    33. ;;
    34. stop)
    35. stop
    36. ;;
    37. restart)
    38. stop
    39. start
    40. ;;
    41. status)
    42. status -p ${lockfile} $mongod
    43. RETVAL=$?
    44. ;;
    45. *)
    46. echo $"Usage: $prog {start|stop|restart|status|}"
    47. exit 1
    48. esac
    49. exit $RETVAL

        
        3.修改权限+开机自启动

    点击(此处)折叠或打开

    1. chmod a+x /etc/init.d/mongod
    2. chkconfig --add mongod
    3. chkconfig mongod on
    4. service mongod start

        
        4.创建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

        这里的用户名:“Graylog和redhat”是后面Graylog2连接数据库需要使用的。如果后面Graylog2连接Mongo失败,可以使用命令:db.auth("graylog", ",redhat")将用户添加到认证中。

    四.安装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

        
        2.添加java环境变量

    点击(此处)折叠或打开

    1. #vim /etc/profile
    2. ——————————————————
    3. JAVA_HOME=/usr/local/jdk
    4. PATH=$JAVA_HOME/bin:$PATH
    5. export JAVA_HOME PATH
    6. ——————————————————
    7. #source /etc/profile最后不要忘记source一下

        
        3.安装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

        
        4.配置garylog2-server

    点击(此处)折叠或打开

    1. vim /etc/graylog2.conf
    2. ——————————————————————
    3. syslog_listen_port = 515 #将默认的514端口修改为其他未使用端口,因为514端口是syslog-ng默认的端口,这里需要用syslog-ng的514端口来接收其他服务器发来的日志,并进行处理的
    4. syslog_protocol = udp
    5. mongodb_user = graylog #访问mongodb的用户名
    6. mongodb_password = redhat #访问mongodb用户名的密码
    7. mongodb_host = localhost #mogodb的主机
    8. mongodb_database = graylog2 #存储日志的数据库
    9. mongodb_port = 27017 #访问mongodb的端口,默认是27017

        
        5.修改下graylog-server服务启动脚本配置文件

    点击(此处)折叠或打开

    1. sed -i 's/java/$JAVA_CMD/' /usr/local/graylog2/bin/graylog2ctl
    2. sed -i '2 aJAVA_CMD=/usr/local/jdk/bin/java' /usr/local/graylog2/bin/graylog2ctl

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

    点击(此处)折叠或打开

    1. vim /etc/init.d/graylog2 #内容如下
    2. —————————————————————————————————
    3. #!/bin/bash
    4. #
    5. # chkconfig: - 83 19
    6. # description: graylog2-server SysV script
    7. #
    8. GRAYLOG_BIN=/usr/local/graylog2/bin
    9. cd $GRAYLOG_BIN && ./graylog2ctl $1

        
        7.修改权限+自启动

    点击(此处)折叠或打开

    1. chmod a+x /etc/init.d/graylog2
    2. chkconfig --add graylog2
    3. chkconfig graylog2 on
    4. 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

        
        2.修改PATH中的环境变量

    点击(此处)折叠或打开

    1. PATH=......:/usr/local/ruby/bin #在PATH中添加ruby的路径,不要忘记再source一下

        
        3.安装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 #需要联网

        
        4.配置graylog2-web-interface

    点击(此处)折叠或打开

    1. vim /usr/local/graylog2-web-interface/config/mongoid.yml #内容如下
    2. —————————————————————————————————————————————————————————————————
    3. production:
    4. host: localhost #mongodb的主机
    5. port: 27017 #mongodb的端口号
    6. username: graylog #mongodb的用户名
    7. password: redhat #mongodb的用户名密码
    8. database: graylog2 #mongodb的数据库名

        
        5.配置日志切割

    点击(此处)折叠或打开

    1. cat > /etc/logrotate.d/graylog2-web-interface <<EOF
    2. /usr/local/graylog2-web-interface/log/*log {
    3. size=512M
    4. rotate 90
    5. copytruncate
    6. delaycompress
    7. compress
    8. notifempty
    9. missingok }
    10. EOF

        
        6.启动graylog2-web-interface

    点击(此处)折叠或打开

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

        这里我没有学上面再做一个服务脚本,而是直接跑到机器上在/etc/profile中添加TMOUT=0,然后再输入上面这句,就结束了。我喜欢屏幕上不停滚动的信息,很有科技感。 

        7.访问Graylog2的web界面
        打开浏览器输入-->http://服务器IP:3000<--就打开Graylog2的web界面了。首次使用基本只要增加一个管理员帐号就ok了。

    六.安装并配置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. #将日志发送到本机的udp515端口进行处理,515端口是graylog2-server的端口,
    11. destination d_local { udp("127.0.0.1" port(515) ); };
    12. log {
    13. source(s_local);
    14. source(s_network);
    15. destination(d_local);
    16. };
    17. EOF

        
        4.添加为系统服务

    点击(此处)折叠或打开

    1. vim /etc/init.d/syslog-ng #内容如下
    2. ____________
    3. #!/bin/bash
    4. #
    5. # chkconfig: - 60 27
    6. # description: syslog-ng SysV script.
    7. . /etc/rc.d/init.d/functions
    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. start() {
    15. echo -n $"Starting $prog: "
    16. daemon --pidfile=$pidfile $syslog_ng $OPTIONS
    17. RETVAL=$?
    18. echo
    19. [ $RETVAL = 0 ] && touch ${lockfile}
    20. return $RETVAL
    21. }
    22. stop() {
    23. echo -n $"Stopping $prog: "
    24. killproc -p $pidfile -d $STOP_TIMEOUT $syslog_ng
    25. RETVAL=$?
    26. echo
    27. [ $RETVAL = 0 ] && rm -f $lockfile $pidfile
    28. }
    29. case "$1" in
    30. start)
    31. start
    32. ;;
    33. stop)
    34. stop
    35. ;;
    36. status)
    37. status -p $pidfile $syslog_ng
    38. RETVAL=$?
    39. ;;
    40. restart)
    41. stop
    42. start
    43. ;;
    44. *)
    45. echo $"Usage: $prog {start|stop|restart|status}"
    46. RETVAL=2
    47. esac
    48. exit $RETVAL

        
        5.开机自启动

    点击(此处)折叠或打开

    1. chmod a+x /etc/init.d/syslog-ng
    2. killall syslogd
    3. chkconfig --add syslog-ng
    4. chkconfig syslog-ng on
    5. service syslog-ng start


        至此,Graylog2的配置已经完成了。大家把Syslog往Graylog2上吐就可以了。若有安装失败或者出错的地方欢迎留言。
        
        最后,要感谢http://ant595.blog.51cto.com/blog/5074217/1081094的博客,我只是在实验了之后,再广播一下。同时注明了我的操作而已。

  • 相关阅读:
    【笔记】程序员编程艺术 字符串转换成整数
    解决Eclipse 项目报错:Unbound classpath container: ‘JRE System Library [JavaSE-1.7]
    python_day1(初始Python)
    ActiveMQ 复杂类型的发布与订阅
    win8.1 Framework3.5安装不上的问题
    JVM探秘:内存溢出
    JVM探秘:Java对象
    JVM探秘:Java内存区域
    Vmware安装的linux系统开机黑屏,点关闭就显示虚拟机忙怎么怎么解决?
    Java基础--面向对象(上)
  • 原文地址:https://www.cnblogs.com/davidwang456/p/4485433.html
Copyright © 2011-2022 走看看