热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用graylog2+syslog-ng+MongoDB部署日志服务器

graylog2是一个开源的日志存储系统,是由java语言编写的server,能够接收TCP,UDP,AMQP的协议发送的日志信息,并且基于mongodb数据库服务器快速存储,能够通过一个基于ruby编写的web管理界面,让轻松管理你的日志。下面将在一台默认安装的rhel5.x的系统上来实现gray
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界面了. 
首次使用需要做一些配置,只需要添加一个管理员帐号即可,见以下图, 
.

输入用户信息

 登录界面

点击messages


可以看到,此时还没有日志信息,这是因为日志的收集程序,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  
export PKG_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 
 图一 用户登录

     

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

推荐阅读
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
author-avatar
台艾辉_435
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有