博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rsyslog日志服务器搭建
阅读量:5071 次
发布时间:2019-06-12

本文共 8224 字,大约阅读时间需要 27 分钟。

1、rsyslog简介

1.1 rsyslog是什么

    rsyslog是比syslog功能更强大的日志记录系统,可以将日志输出到文件,数据库和其它程序。

    ryslog 是一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地,并可定制和过滤、筛选。据官网介绍,现在可以处理100万条信息。
特性:
       1、可以直接将日志写入到数据库。
       2、日志队列(内存队列和磁盘队列)。
       3、灵活的模板机制,可以得到多种输出格式。
       4、插件式结构,多种多样的输入、输出模块。
       5、可以把日志存放在Mysql ,PostgreSQL,Oracle等数据库中

1.2 rsyslog工作流程

    从这个图当中可以看出来rsyslog的工作方式非常简单,就是一个server端对多个client端,基于514端口的tcp、udp通信协议。

1.3 Rsyslog日志服务器的优势

    1. 日志统一,集中式管理

    2. 日志实时传送到一个更加安全的远端服务器上,真正记录用户行为,使日志的2次更改可能性大大降低,从而能够对日志进行真实回放,便于问题追踪。

2、系统环境

    Rsyslog Server OS:CentOS 6.8

    Rsyslog Server IP:10.10.16.253
    Rsyslog 版本:rsyslog-8.30.0-8.el6.i686
    防火墙已关闭/iptables: Firewall is not running.
    SELINUX=disabled
    Rsyslog Client OS:RHEL 6.4
    Rsyslog Client IP:10.10.16.254

2.1 升级rsyslog

    操作系统是Centos 6.8,默认安装的Rsyslog版本是5.8.10,可通过rsyslogd -v命令查看:

# rsyslogd -vrsyslogd 5.8.10, compiled with:    FEATURE_REGEXP:                Yes    FEATURE_LARGEFILE:            No    GSSAPI Kerberos 5 support:        Yes    FEATURE_DEBUG (debug build, slow code):    No    32bit Atomic operations supported:    Yes    64bit Atomic operations supported:    Yes    Runtime Instrumentation (slow code):    NoSee http://www.rsyslog.com for more information.

使用yum对rsyslog进行升级(需要root权限)

# cd /etc/yum.repos.d# wget http://rpms.adiscon.com/v8-stable/rsyslog.repo    # yum update rsyslog# rsyslogd -vrsyslogd 8.30.0, compiled with:    PLATFORM:                x86_64-redhat-linux-gnu    PLATFORM (lsb_release -d):            FEATURE_REGEXP:                Yes    GSSAPI Kerberos 5 support:        No    FEATURE_DEBUG (debug build, slow code):    No    32bit Atomic operations supported:    Yes    64bit Atomic operations supported:    Yes    memory allocator:            system default    Runtime Instrumentation (slow code):    No    uuid support:                Yes    Number of Bits in RainerScript integers: 64See http://www.rsyslog.com for more information.升级完成之后,版本为8.30.0

注意:Rsyslog服务端和客户端都进行升级。

2.2 客户端配置

  一、防火墙配置

    如果启用了iptables防火墙,注意开放默认的514端口,也可以配置文件使用其他端口。
    iptables -A INPUT -m state --state NEW -m udp -p udp -i eth0 --dport 514 -j ACCEPT
    iptables -A INPUT -m state --state NEW -m tcp -p tcp -i eth0 --dport 514 -j ACCEPT
   说明:rsyslog可以通过tcp协议传输日志,也可以通过udp协议传输。有些服务器采用的tcp协议,有些用了udp协议,想对比看看哪种更适合我们的环境,因此所有服务器都建立了以上两条规则。
  二、配置rsyslog
    编辑配置文件/etc/rsyslog.conf,去掉以下配置项前的注释,如果没有就添加该配置项。
    module(load="imuxsock")
    module(load="imklog")
    module(load="imfile") #添加文件输入模块

# 以上为基本配置,必须要有

2.3 服务端配置

   防火墙配置与客户端一致

   开启相关日志模块

module(load="imudp") # needs to be done just onceinput(type="imudp" port="514")

#允许514端口接收使用UDP和TCP协议转发过来的日志

# Provides TCP syslog reception

# for parameters see http://www.rsyslog.com/doc/imtcp.html

module(load="imtcp" MaxSessions="500") # needs to be done just once

input(type="imtcp" port="514")

 

# /etc/init.d/rsyslog restart  #修改完记得重启rsyslog服务

# 以上是系统环境的默认配置

3、收集多台tomcat应用日志

3.1 客户端配置

    配置rsyslog:编辑配置文件/etc/rsyslog.conf,去掉以下配置项前的注释,如果没有就添加该配置项。

module(load="imuxsock")module(load="imklog")module(load="imfile")   #文本文件输入模块,只针对客户端#新增配置ruleset(name="remote"){action(type="omfwd"target="202.106.149.226"   #远程rsyslog server ip 生产环境需要做端口映射202.106.149.226:514----10.10.16.253:514port="514" #端口:protocol="tcp" #使用协议queue.type="linkedList" #使用异步处理 queue.spoolDirectory="/home/yaoduwww/rsyslog" #队列目录,需在客户端创建queue.fileName="remoteQueue_10_10_16_225" #队列名称queue.maxDiskSpace="5g" #队列占最大磁盘空间queue.saveOnShutdown="on" #保存内存数据如果rsyslog关闭action.resumeRetryCount="-1" #无限重试插入失败    )stop}

  新增子配置文件:/etc/rsyslog.d/tomcat-8080.conf  #可以增加多个分别对不同应用实例的日志进行收集

[root@web rsyslog]# cat /etc/rsyslog.d/tomcat-8080.conf$WorkDirectory /home/yaoduwww/rsyslog  #默认为/var/lib/rsyslog,这里可以自己定义input(type="imfile"        File="/usr/local/tomcat/logs/catalina.out"  #日志路径        #StateFile="catalina.out-8080"  #新版本中不需要设置        Facility="local1"        Severity="info"        Tag="catalina-10.10.16.254-8080" #定义日志标签,重要,服务端根据这个标签可以识别日志        PersistStateInterval="1" #回写偏移量数据到文件间隔时间(秒),根据实际情况而定        Ruleset="remote" #rsyslog.conf中定义的rule名称        )#########################################################################input(type="imfile"        File="/usr/local/tomcat/logs/localhost_access_log.2017-11-08.txt"        #StateFile="localhost-8080"        Facility="local3"        Severity="info"        Tag="access-10.10.16.254-8080"        PersistStateInterval="1"        Ruleset="remote"        )

    【注意】:根据实际情况,可以在/etc/rsyslog.d添加多个配置文件,如果服务器上面有两个tomcat实例,因此还有一个配置文件是tomcat-8090.conf,跟上面类似,只是应用不同,日志路径,端口不同。

     最后在/etc/rsyslog.conf中修改匹配项目

*.info;mail.none;authpriv.none;cron.none;               /var/log/messages修改为:*.info;mail.none;authpriv.none;cron.none;local1.none;local2.none;local3.none;local4.none;local5.none;local6.none /var/log/messages # 作用:为不将自定义的日志记录到/var/log/message文件中,不然的话日志量大很容将/根目占满,后果可想而知。

3.2 服务端配置

    编辑/etc/rsyslog.conf,去掉以下配置项前的注释,如果没有就添加该配置项。注意:服务端/home/yaoduwww目录无须创建,自己会生成。

$PreserveFQDN on #用于正确的获取主机名,暂时应该没用到#$FileOwner developer #存储的文件属主,需创建用户useradd devloper#$FileGroup yaodu  #文件属组,需创建groupadd yaodu$FileCreateMode 0644 #生成的文件权限$DirCreateMode 0755 #生成的目录权限$Umask 0022$PrivDropToUser root #可以删除日志的用户$PrivDropToGroup root #可以删除日志的用户组#### MODULES ####module(load="imuxsock") # provides support for local system logging (e.g. via logger command)module(load="imklog")   # provides kernel logging support (previously done by rklogd)#module(load"immark")  # provides --MARK-- message capability# Provides UDP syslog reception# for parameters see http://www.rsyslog.com/doc/imudp.htmlmodule(load="imudp") # needs to be done just onceinput(type="imudp" port="514")# Provides TCP syslog reception# for parameters see http://www.rsyslog.com/doc/imtcp.htmlmodule(load="imtcp" MaxSessions="500") # needs to be done just onceinput(type="imtcp" port="514")#以下为部分配置,可自己定义模板$template  SpiceTmpl,"%msg:2:$%\n" #定义一个模块,去掉开头的空格$template  ChannelmanageCatalinaDynaFile,"/home/yaoduwww/rsyslog/%fromhost-ip%/channelmanage/catalina_%$YEAR%-%$MONTH%-%$DAY%.log" #>定义>文件存储路径及名称,%%中间的为变量$template  ChannelmanageInfoDynaFile,"/home/yaoduwww/rsyslog/%fromhost-ip%/channelmanage/channelmanage_%$YEAR%-%$MONTH%-%$DAY%.log" #定义文件存储路径及名称,%%中间的为变量$template  ChannelmanageAcessDynaFile,"/home/yaoduwww/rsyslog/%fromhost-ip%/channelmanage/access_%$YEAR%-%$MONTH%-%$DAY%.log":rawmsg,contains,"catalina-10.10.16.254-8080" ?ChannelmanageCatalinaDynaFile;SpiceTmpl #contains过滤tag为catalina-10.139.54.53-8080日>志存>储到ChnnelmanageCatalinaDynaFile模板定义的日志中去:rawmsg,contains,"channe-10.10.16.254-8080" ?ChannelmanageInfoDynaFile;SpiceTmpl:rawmsg,contains,"access-10.10.16.254-8080" ?ChannelmanageAcessDynaFile;SpiceTmpl

3.3 重启服务,收集日志

    先重启服务端Rsyslog,然后重启客户端。命令:/etc/init.d/rsyslog restart

    服务端会生成日志目录及日志,当然首次会比较慢,有一个传输的过程。

    在客户端/home/yaoduwww/rsyslog目录下回发现传输的状态文件和队列文件

[root@web rsyslog]# ls -ltotal 8-rw------- 1 root root 271 Nov  3 16:58 imfile-state:-usr-local-tomcat-logs-catalina.out-rw------- 1 root root 292 Nov  3 17:00 imfile-state:-usr-local-tomcat-logs-localhost_access_log.2017-11-03.txt

    state文件以imfile-state:开头,后面为日志路径,路径中的/以-替代。

[root@db01 ~]# tree /home/yaoduwww/rsyslog//home/yaoduwww/rsyslog/└── 10.10.16.254    └── channelmanage        ├── access_2017-11-07.log        ├── access_2017-11-08.log        ├── catalina_2017-11-07.log        └── catalina_2017-11-08.log2 directories, 4 files

    服务端配置文件有一个规律,能接收到日志的tag定义的比较短,不能接收的tag定义的字符串都很长。通过将tag改短,重启服务后就能收到了日志。

    通过不断刷新浏览器,可以看到服务端业务成功日志收集:tailf /var/log/messages

    

 

    通过修改客户端/etc/rsyslog.d/tomcat-8080文件可以自定义针对不同目录下的日志文件进行收集

3.4 用户及用户权限管理

    创建 一个用户developer和用户组yaodu,使其有某个目录的执行权限

    创建用户组:#groupadd yaodu

    创建用户developer 并将其纳入 yaodu 用户组 : #useradd -G yaodu developer 

    设置developer用户的密码 :#passwd developer 

    更改developer用户的登录目录 #usermod -d /home/yaoduwww developer 

    改变目录yaoduwww 的 所属 用户和用户组 #chown -R developer:yaodu /home/yaoduwww/  #此处不需要手动授权,在rsyslog配置文件中配置模板即可自定义修改好权限。

    可以添加多个标签用于收集客户端的日志:

    

3.5 编写定时任务,自动根据日期进行日志采集

mkdir /server/scripts -pvim /server/scripts/rsyslog.sh#!/bin/bashsed -i s"#/usr/local/tomcat/logs/localhost_access_log.*.txt#/usr/local/tomcat/logs/localhost_access_log.$(date +%Y-%m-%d).txt#g" /etc/rsyslog.d/tomcat-8080.conf/etc/init.d/rsyslog restart##此日志需要这样,catalina.out不需要,如果不需要收集access日志则不必执行这里的操作。crontab -e#change the rsyslog date 00 00 * * * /bin/sh /server/scripts/rsyslog.sh   >/dev/null 2>&1

 

转载于:https://www.cnblogs.com/qianjingchen/articles/9667113.html

你可能感兴趣的文章
如何实现手游app瘦身?
查看>>
linux程序设计---序
查看>>
【字符串入门专题1】hdu3613 【一个悲伤的exkmp】
查看>>
C# Linq获取两个List或数组的差集交集
查看>>
21.Longest Palindromic Substring(最长回文子串)
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>
Java处理多人同时读写文件的文件锁处理
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
判断文本框输入的文字长度
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years
查看>>
SelectSort 选择排序
查看>>
关于android 加载https网页的问题
查看>>
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
小知识:js如何更改css样式
查看>>