当前位置: 代码迷 >> 综合 >> Graylog2+rsyslog+log4j 全过程日志管理环境搭建(转)
  详细解决方案

Graylog2+rsyslog+log4j 全过程日志管理环境搭建(转)

热度:11   发布时间:2024-01-16 06:43:57.0

转自:https://blog.csdn.net/money9sun/article/details/71742127

需要关注Graylog2与ELK方式的日志优劣势对比。

 第一步:安装Graylog2环境(CentOS7)

     这里网上有很多的教程,直接看官网也是不错的,笔者绕了很大的圈子,最后是参照官网(http://docs.graylog.org/en/2.2/pages/installation/os/centos.html)和这篇博客(http://www.cnblogs.com/iamqiu/p/5749783.html)将环境搭建起来,简要概述如下:

     1、安装CentOS7.2 这个啥也不说了,保证能联网

     2、安装JDK   

           #yum -y install java-1.8.0-openjdk-headless.x86_64

        安装两个工具

                sudo yum install epel-release

          sudo yum install pwgen

    3、安装Mongodb

          3.1 编辑文件  #vi /etc/yum.repos.d/mongodb-org-3.2.repo

      3.2 加入如下文字:     

 

     [mongodb-org-3.2]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

      3.3 #sudo yum install mongodb-org

 

      3.4 注册并启动服务     

 

      $ sudo chkconfig --add mongod$ sudo systemctl daemon-reload$ sudo systemctl enable mongod.service$ sudo systemctl start mongod.service
  4、 安装 Elasticsearch

 

       4.1 rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

       4.2 编辑文件 /etc/yum.repos.d/elasticsearch.repo 

 

	[elasticsearch-2.x]name=Elasticsearch repository for 2.x packagesbaseurl=https://packages.elastic.co/elasticsearch/2.x/centosgpgcheck=1gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearchenabled=1

      4.3 sudo yum install elasticsearch

 

         4.4  修改配置文件  /etc/elasticsearch/elasticsearch.yml

       把 cluster.name 前面的# 去掉 然后 改成  cluster.name:graylog(这个名字可以自定义,但是要记住)

     4.5 注册并启动服务
 
       $ sudo chkconfig --add elasticsearch$ sudo systemctl daemon-reload$ sudo systemctl enable elasticsearch.service$ sudo systemctl restart elasticsearch.service

 

         4.6 测试

          # curl -X GET http://localhost:9200

          显示

          {
  "name" : "Justin Hammer",
  "cluster_name" : "graylog",
  "cluster_uuid" : "37q5FJC7Q7e6OZKEbEObMQ",
  "version" : {
    "number" : "2.4.5",
    "build_hash" : "c849dd13904f53e63e88efc33b2ceeda0b6a1276",
    "build_timestamp" : "2017-04-24T16:18:17Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.4"
  },
  "tagline" : "You Know, for Search"
         }

    表示正确

 

    5、安装Graylog2

     

    5.1安装
	$ sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-2.2-repository	_latest.rpm$ sudo yum install graylog-server

 

       5.2 配置

    

       生成密钥 : pwgen -N 1 -s 96  将生成的串保存下来   

       生成密码:  echo-nyourpassword|sha256sum

    

 

# vi /etc/graylog/server/server.conf

password_secret =  刚才生成的密钥字符串

root_password_sha2 = 刚才生成的密码字符串

 

root_timezone = Asia/Shanghai

web_listen_uri = http://0.0.0.0:9000/

rest_listen_uri = http://0.0.0.0:12900/

rest_transport_uri = http://192.168.128.131:12900/   (IP就是服务器的IP)

elasticsearch_cluster_name = graylog(和前面定义的cluster.name一致)

elasticsearch_shards = 1

elasticsearch_replicas = 0

 

             5.3  加入服务并启动

         

	$ sudo chkconfig --add graylog-server$ sudo systemctl daemon-reload$ sudo systemctl enable graylog-server.service$ sudo systemctl start graylog-server.service

 

     6 关闭防火墙  

 

#systemctl stop firewalld.service

#systemctl disable firewalld.service

 

#setenforce 0

#vim /etc/sysconfig/selinux

SELINUX=disable

 

   至此 Graylog2安装完成。浏览器输入 http://IP:9000/ 就可以看到界面了

   第二部: 安装rsyslog

      CentOS7 自带rsyslog 不需要安装,只需要配置,配置文件  /etc/rsyslog.conf

 

#################
#### MODULES ####
#################


$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support
$ModLoad immark  # provides --MARK-- message capability


# provides UDP syslog reception
$ModLoad imudp     # 打开UDP端口
$UDPServerRun 514   # 端口号

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514

# Enable non-kernel facility klog messages
$KLogPermitNonKernelFacility on

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.   
#
$FileOwner want  # 你自己的用户名
$FileGroup adm    # 你自己的用户组
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser want   # 你自己的用户名
$PrivDropToGroup adm # 你自己的用户组


#
# Where to place spool and state files
#
$WorkDirectory /var/lib/rsyslog

$IncludeConfig /etc/rsyslog.d/*.conf

*.* @127.0.0.1:5140;RSYSLOG_SyslogProtocol23Format 

# 转发到graylog2服务器的5140端口,因为是单机环境,所以就配了127.0.0.1 

# 端口号也就是一会儿要配置的graylog2 的一个端口,由于权限问题,尽量采用1024以后的端口

 

 第三步,在graylog2中添加一个input

 

 端口号设置为刚才设置的5140 然后点击 show received messages

 这是看到的应该是一些系统日志,如下:

 

第四部 : 将我们开发中的log放进graylog中

    有三种方式将log放进去,其实是有3种方式把log放到rsyslog里面

    这里我只说比较通用的log4j的方式

    我就直接贴代码和配置文件了 

    配置文件:

   log4j.rootLogger=Debug,CONSOLE,syslog
   log4j.appender.syslog=org.apache.log4j.net.SyslogAppender
   log4j.appender.syslog.SyslogHost=192.168.128.131 --graylog服务器的IP
   log4j.appender.syslog.Facility=local1
   log4j.appender.syslog.header=true
   log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
   log4j.appender.syslog.layout.ConversionPattern=%5p | %c{1}-%M [%d{yyyy-MM-dd HH:mm:ss}] - %m%n


   log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
   log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
   log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c %x - %m%n

 

    代码:

    import org.slf4j.Logger; 

    import org.slf4j.LoggerFactory;

    public class loggerTest {
    
private static final Logger logger = LoggerFactory.getLogger(loggerTest.class);

public static void main(String[] args) {
logger.info("这是一个info");
logger.error("这是一个error");
logger.debug("这是一个debug");
logger.warn("这是一个warn");
System.out.println(123);

    } 

    

   然后运行代码,到刚才的input的里面去看

  

    

   搞定。

   

    后记:

      1、笔者没有试过,直接把log4j和graylog2连起来可不可以,但是中间加一个rsyslog可以利用其过滤能力,将不同的log放到不同的input里面或者不放进graylog2,所以这种方式应该是比较合理的。

      2、一开始笔者用的是官网的镜像,但是有很多问题,最后还是自己搭的环境,希望大家还是自己的搭个环境。

   参考:

      http://www.cnblogs.com/iamqiu/p/5749783.html

      https://my.oschina.net/0757/blog/198329

     3、log4j配置文件是不能配置端口的,默认514