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

一.源码包下载

cd /usr/src

#mongodb数据库,在此的主要作用是存储日志信息

wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-2.2.1.tgz

#graylog2日志服务器

wget http://cloud.github.com/downloads/Graylog2/graylog2-server/graylog2-server-0.9.5.tar.gz

#yaml是一种编程语言,

wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz

#ruby脚步语言

wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz

#graylog2-web界面

wget http://cloud.github.com/downloads/Graylog2/graylog2-web-interface/graylog2-web-interface-0.9.5p2.tar.gz

#eventlog,安装syslog-ng需要先安装eventlog

wget http://www.balabit.com/downloads/files/syslog-ng/sources/3.2.4/source/eventlog_0.2.12.tar.gz

#syslog-ng日志服务器,

wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.3.5/source/syslog-ng_3.3.5.tar.gz

#JDK,java环境

JDK下载地址, http://www.oracle.com/technetwork/java/javase/downloads/index.html 打开此链接下载相应的jdk版本,这里以jdk-6u21-linux-i586.bin

二.安装相关依赖包

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

三.安装并配置mongodb数据库

1.安装mongodb

useradd mongodb

mkdir -pv /data/db

chown -R mongodb:mongodb /data

tar xvf /usr/src/mongodb-linux-i686-2.2.1.tgz -C /usr/local/

cd /usr/local/

ln -sv mongodb-linux-i686-2.2.1 mongodb

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

vim /etc/init.d/mongod  #内容如下

#!/bin/bash

# chkconfig: - 90 11

# description: mongodb server SysV script

. /etc/rc.d/init.d/functions

if [ -f /etc/sysconfig/mongod ]; then

. /etc/sysconfig/mongod

fi

mongod=/usr/local/mongodb/bin/mongod

prog=mongod

lockfile=/data/db/mongod.lock

RETVAL=0

OPTIONS="--fork --logpath=/data/mongod.log"

start() {

echo -n $"Starting $prog: "

daemon  $mongod $OPTIONS

RETVAL=$?

echo

[ $RETVAL=0]

return $RETVAL

}

stop() {

echo -n $"Stopping $prog: "

killproc -p ${lockfile}  $mongod

RETVAL=$?

echo

[ $RETVAL=0] && rm -f ${lockfile}

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

status)

status -p ${lockfile} $mongod

RETVAL=$?

;;

*)

echo $"Usage: $prog {start|stop|restart|status|}"

exit 1

esac

exit $RETVAL

----------------------------------------------------

chmod a+x /etc/init.d/mongod

chkconfig --add mongod

chkconfig mongod on

service mongod start

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

/usr/local/mongodb/bin/mongo

>use admin

>db.addUser('admin','password')

>use graylog2

>db.addUser('graylog','redhat')

>exit

四.安装graylog2-server

1.安装JDK环境

cd /usr/src

chmod a+x jdk-6u21-linux-i586.bin

./jdk-6u21-linux-i586.bin

mv jdk1.6.0_21/ /usr/local/

cd /usr/local/

ln -sv jdk1.6.0_21 jdk

添加java环境变量,

vim /etc/profile

JAVA_HOME=/usr/local/jdk

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME PATH

source /etc/profile

2.安装graylog-server

cd /usr/src

tar -xvf graylog2-server-0.9.5.tar.gz -C /usr/local/

useradd graylog

chown -R graylog:graylog /usr/local/graylog2-server-0.9.5/

cd /usr/local

ln -sv graylog2-server-0.9.5 graylog2

cp /usr/local/graylog2/graylog2.conf.example  /etc/graylog2.conf

3.配置garylog2-server

vim /etc/graylog2.conf  修改内容如下

syslog_listen_port=515#将默认的514端口修改为其他未使用端口,因为514端口是syslog-ng默认的端口,这里需要用syslog-ng的514端口来接收其他服务器发来的日志,并进行处理的,

syslog_protocol=udp

mongodb_useauth=true

mongodb_user=graylog2#访问mongodb的用户名

mongodb_password=redhat#访问mongodb用户名的密码

mongodb_host=localhost#mogodb的主机

mongodb_database=graylog2#存储日志的数据库

mongodb_port=27017#访问mongodb的端口,默认是27017

......

......

为了方便起见这里修改下graylog-server服务启动脚本配置文件

sed -i 's/java/$JAVA_CMD/' /usr/local/graylog2/bin/graylog2ctl

sed -i '2 aJAVA_CMD=/usr/local/jdk/bin/java' /usr/local/graylog2/bin/graylog2ctl

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

vim /etc/init.d/graylog2  #内容如下

#!/bin/bash

#

# chkconfig: - 83 19

# description: graylog2-server SysV script

#

GRAYLOG_BIN=/usr/local/graylog2/bin

cd $GRAYLOG_BIN && ./graylog2ctl $1

-------------------------------------------

chmod a+x /etc/init.d/graylog2

chkconfig --add graylog2

chkconfig graylog2 on

service graylog2 start

五.安装graylog2-web-interface

1.安装ruby脚本语言环境

cd /usr/src

tar xvf yaml-0.1.4.tar.gz

cd yaml-0.1.4

./configure --prefix=/usr/local/yaml

make

make install

cd /usr/src

tar xvf ruby-1.9.2-p0.tar.gz

cd ruby-1.9.2-p0

./configure --prefix=/usr/local/ruby --enable-shared --disable-install-doc--with-opt-dir=/usr/local/yaml

make

make install

vim /etc/profile

在PATH环境变量中添加

PATH=......:/usr/local/ruby/bin

source /etc/profile

2.安装graylog2-web-interface

cd /usr/src

tar xvf graylog2-web-interface-0.9.5p2.tar.gz -C /usr/local/

cd /usr/local/

chown -R graylog:graylog /usr/local/graylog2-web-interface-0.9.5p2/

ln -sv graylog2-web-interface-0.9.5p2/ graylog2-web-interface

cd graylog2-web-interface

gem install bundler     #需要连网

bundle install      #需要联网

3.配置graylog2-web-interface

vim /usr/local/graylog2-web-interface/config/mongoid.yml

production:

host: localhost   #mongodb的主机

port: 27017       #mongodb的端口号

username: graylog #mongodb的用户名

password: redhat  #mongodb的用户名密码

database: graylog2    #mongodb的数据库名

--------------------------------------------------

vim /usr/local/graylog2-web-interface/config/general.yml #根据自己的需要修改,不做任何修改也没关系,

vim /usr/local/graylog2-web-interface/config/email.yml   #根据自己的需要修改,不做任何修改也没关系,

配置日志切割 cat > /etc/logrotate.d/graylog2-web-interface <

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

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

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

打开浏览器输入http://服务器IP:3000就打开graylog2的web界面了.

首次使用需要做一些配置,只需要添加一个管理员帐号即可,见以下图,

图1.

125bbf1663449785bf71dee5dcf13cd3.png

图2输入用户信息

826c2eb4bd02c3be536ecfbd3234a2df.png

图3 登录界面

d4cd7eca47ea46b4bd12cfa164dd7819.png

图4 点击messages

8d53073abd7bf54334726f7ff1c67a44.png

图5

0e5039b561c192e5f45e3d06c8e2c0fb.png

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

六.安装并配置syslog-ng服务,

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

1.安装eventlog

cd /usr/src/

tar xvf eventlog_0.2.12.tar.gz

cd eventlog-0.2.12

./configure--prefix=/usr/local/eventlog

make

make install

2.安装syslog-ng

cd /usr/src

tar xvf syslog-ng_3.3.5.tar.gz

cd syslog-ng-3.3.5

exportPKG_CONFIG_PATH=/usr/local/eventlog/lib/pkgconfig

./configure--prefix=/usr/local/syslog-ng

make

make install

3.配置syslog-ng,

cat>/usr/local/syslog-ng/etc/syslog-ng.conf<

@version: 3.3

@include "scl.conf"

source s_local {

system();

internal();

};

#设置日志的来源为本机udp的514端口

source s_network { udp(ip(0.0.0.0) port(514)); };

#将日志发送到本机的udp515端口进行处理,515端口是graylog2-server的端口,

destination d_local { udp("127.0.0.1" port(515) ); };

log {

source(s_local);

source(s_network);

destination(d_local);

};

EOF

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

vim /etc/init.d/syslog-ng

#!/bin/bash

#

# chkconfig: -  60 27

# description: syslog-ng SysV script.

. /etc/rc.d/init.d/functions

syslog_ng=/usr/local/syslog-ng/sbin/syslog-ng

prog=syslog-ng

pidfile=/usr/local/syslog-ng/var/syslog-ng.pid

lockfile=/usr/local/syslog-ng/var/syslog-ng.lock

RETVAL=0

STOP_TIMEOUT=${STOP_TIMEOUT-10}

start() {

echo -n $"Starting $prog: "

daemon--pidfile=$pidfile $syslog_ng $OPTIONS

RETVAL=$?

echo

[ $RETVAL=0] && touch ${lockfile}

return $RETVAL

}

stop() {

echo -n $"Stopping $prog: "

killproc -p $pidfile -d $STOP_TIMEOUT $syslog_ng

RETVAL=$?

echo

[ $RETVAL=0] && rm -f $lockfile $pidfile

}

case "$1" in

start)

start

;;

stop)

stop

;;

status)

status -p $pidfile $syslog_ng

RETVAL=$?

;;

restart)

stop

start

;;

*)

echo $"Usage: $prog {start|stop|restart|status}"

RETVAL=2

esac

exit $RETVAL

---------------------------------------

chmod a+x /etc/init.d/syslog-ng

killall syslogd

chkconfig --add syslog-ng

chkconfig syslog-ng on

service syslog-ng start

七.日志客户端配置

1.syslog客户端配置

vim /etc/syslog.conf

*.* @服务器IP

2.syslog-ng客户端配置

vim "syslog-ng的配置文件"

destination d_local { udp("127.0.0.1" port(514) ); };

八.测试

到这里基本已经配置完成来,下面来测试下,在客户端上创建一用户,

useradd test2

然后打开浏览器输入,http://服务器IP:3000

图一 用户登录

8f276b2c7051763b3a0b0d7197333b47.png

图2

182e62972e47ef3e43ae7b7f837342a9.png

可以看到上面创建test2用户时的日志已经显示出来了。到这里配置已经结束了。

syslog及syslog-ng的详细配置见 http://ant595.blog.51cto.com/5074217/1080922

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐