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的博客,我只是在实验了之后,再广播一下。同时注明了我的操作而已。

时间: 2024-10-02 18:43:34

graylog2+syslog-ng+mongodb构建集中管理日志服务器 --转载的相关文章

基于rsyslog+mysql+loganalyzer构建一个小而美的日志服务器

前言: 每当我们遇到问题抓耳挠腮,一脸懵那啥的时候,也许看一下日志就瞬间豁然开朗,所以,一个易用的日志服务器还是很重要的.我们先不介绍elk,那个牛逼吊炸天的日志分析系统.今天我们先来构建一个小的日志服务器.elk我们以后再说~ 正文: 当我们配置完一个服务,启动报错时,那感觉就像吃了啥一样,别提多难受,除非服务程序本身有检测配置文件的程序,不然我们就得依赖linux自己的集中日志服务器rsyslog了.不过,有时候也许我们想搜索一下某条日志,或者向用可视化的界面进行统计分析.此时我们可以把日志

rsyslog + mysql + loganalyzer 构建日志服务器

rsyslog支持的特性 支持多线程 支持tcp,ssl,tls.relp 可以把日志存储于关系型数据库中 支持过滤器,可以实现过滤日志中的任意部分. 支持自定义格式 适用于企业级的日志记录需求. 功能模块化 rsyslog用facility接收各个应用和程序的日志,并把日志分类.有以下几类 auth        与认证相关的 authpriv 与用户认证授权相关的,如用户登陆 cron     与周期任务相关的 daemon    与守护进程相关的 kern        与内核相关的 lp

Linux syslog日志服务器架设攻略

从目前的情况来看,Syslog(系统日志)这一历史悠久的日志系统仍旧占据着最主流的地位.由于与类 UNIX平台之间的渊源,Syslog是在实际应用环境中最容易获得的日志系统. 同时,还有很多的基于Syslog的扩展产品存在,这其中也包括大量基于UNIX平台构建内核的网络硬件设备,这些设备往往都内置了Syslog功能支持,例如Cisco路由器就是如此. 一. 配置syslog守护进程 syslog是Linux系统默认的日志守护进程.默认的syslog配置文件是/etc/syslog.conf文件.

Kiwi Syslog server 日志服务器搭建

Kiwi syslog server 是一款很不错的日志服务器软件,安装过程就不多说,Linux 服务器日志由于本身就是syslog的,所以不用转换,但是windows 系统的日志格式是event形式的,需要转换为syslog形式的日志. 一.windows 主机安装evtsys 首先需要下载evtsys这个日志转换工具,分为32位和64的系统,将evtsys复制进windows 主机的C:\windows\system32 目录下.然后在cmd命令行进入该目录,执行 Evtsys.exe –I

SolarWinds Kiwi Syslog Server+ MSSQL 日志服务器

Kiwi Syslog是属于SolarWinds的基于Windows的日志服务器,相信部分朋友都用过SolarWinds的管理软件,功能非常强大,有兴趣的朋友可以上其官网了解 http://www.solarwinds.cn. 今天我们主要是讲Syslog服务器,网上也能搜索到相当多的教程,但都只是讲到将日志保存为文件.试想一下,一年下来就有三百多个文件,如果某天真要通过日志排查故障,要从几百个文本文档中找到有用信息,光想想就觉得头痛了. 本文将介绍将日志信息保存到MSSQL数据库,通过开发We

利用Syslog Watcher在windows下部署syslog日志服务器

1.概述 syslog协议是各种网络设备.服务器支持的网络日志记录标准.Syslog消息提供有关网络事件和错误的信息.系统管理员使用Syslog进行网络管理和安全审核. 通过专用的syslog服务器和syslog协议将来自整个网络的事件记录整合到一个中央存储库中,对于网络安全具有重大意义,syslog日志服务器可收集,解析,存储,分析和解释系统日志消息给专业网络安全管理员,有助于提高网络的稳定性和可靠性. 通过Syslog Watcher可在windows平台搭建日志集中服务器,便于管理并满足合

Centos6.5下利用rsyslog+loganalyzer+mysql部署日志服务器

RHEL 6.x 搭建rsyslog日志服务器和loganalyzer日志分析工具 =============================================== rsyslog的介绍 logrotate日志滚动的介绍 rsyslog的存储途径 基于web的loganalyzer日志分析工具的搭建 ====================================================== 一.rsyslog的介绍 Linux的日志记录了用户在系统上一切操作,看日

CentOS7下利用rsyslog+loganalyzer配置日志服务器及Linux和windows客户端配置

一.简介: 随着机房内的服务器和网络设备增加,日志管理和查询就成了让系统管理员头疼的事. 系统管理员遇到的常见问题如下: 1.日常维护过程中不可能登录到每一台服务器和设备上去查看日志: 2.网络设备上的存储空间有限,不可能存储日期太长的日志,而系统出现问题又有可能是很久以前发生的某些操作造成的: 3.在某些非法入侵的情况下,入侵者一般都会清除本地日志,清除入侵痕迹: 4.zabbix等监控系统无法代替日志管理,无法监控如系统登录.计划任务执行等项目. 基于上述原因,在当前的网络环境中搭建一台用于

利用开源架构ELK构建分布式日志系统

本文介绍了如何使用成熟的经典架构ELK(即Elastic search,Logstash和Kibana)构建分布式日志监控系统,很多公司采用该架构构建分布式日志系统,包括新浪微博,freewheel,畅捷通等. 背景日志,对每个系统来说,都是很重要,又很容易被忽视的部分.日志里记录了程序执行的关键信息,ERROR和WARNING信息等等.我们可以根据日志做很多事情,做数据分析,系统监控,排查问题等等 .但是,任何一个中大型系统都不可能是单台Server,日志文件散落在几十台甚至成千上万台Serv