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

Rsyslog日志服务搭建收集tomcat日志【转】

syslog是比syslog功能更强大的日志记录系统,可以将日志输出到文件,数据库和其它程序。Centos6.x默认的rsyslog版本是5.x。网上关于rsyslog的安装配

syslog是比syslog功能更强大的日志记录系统,可以将日志输出到文件,数据库和其它程序。Centos 6.x默认的rsyslog版本是5.x。

网上关于rsyslog的安装配置文档倒是不少,但大多数都是一些基础配置,可参考的价值不大。另外如何收集多台多tomcat应用日志的文档更是几乎没有,断断续续折腾了几天,总算有了一个结果,下面就关于如何配置收集tomcat及其下面部署的程序日志进行说明。

一、升级Rsyslog

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

$ rsyslogd -v
rsyslogd 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):    No

See 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

升级完成后,版本为8.26.0

$ rsyslogd -v
rsyslogd 8.26.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: 64

See http://www.rsyslog.com for more information.

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

二、客户端配置

1、防火墙配置

如果启用了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协议,想对比看看哪种更适合我们的环境,因此所有服务器都建立了以上两条规则。eth0是内网网卡。

2、配置rsyslog

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

module(load="imuxsock")
module(load="imklog")
module(load="imfile")
#使用udp协议
module(load="imudp")
input(type="imudp" port="514")
#使用tcp协议
module(load="imtcp" MaxSessiOns="500")
input(type="imtcp" port="514")

新增配置:

ruleset(name="remote"){
        action(type="omfwd"
                       target="Rsyslog服务端主机IP"
                      port="514" #端口
                        protocol="tcp" #使用协议
                        queue.type="linkedList" #使用异步处理 
                        queue.spoolDirectory="/app/wutongshu/rsyslog" #队列目录
                        queue.fileName="remoteQueue_10_139_54_53" #队列名称
                        queue.maxDiskSpace="5g" #队列占最大磁盘空间
                        queue.saveOnShutdown="on" #保存内存数据如果rsyslog关闭
                        action.resumeRetryCount="-1" #无限重试插入失败
              )
        stop
}

新增子配置文件:/etc/rsyslog.d/tomcat-8080.conf

$WorkDirectory /app/wutongshu/rsyslog  #默认为/var/lib/rsyslog

input(type="imfile"
        File="/app/wutongshu/tomcat-8080/logs/catalina.out"  #日志路径
        #StateFile="catalina.out-8080"  #新版本中不需要设置
        Facility="local1"
        Severity="info"
        Tag="catalina-10.139.54.53-8080" #定义日志标签,重要,服务端根据这个标签可以识别日志
        PersistStateInterval="1" #回写偏移量数据到文件间隔时间(秒),根据实际情况而定
        Ruleset="remote" #rsyslog.conf中定义的rule名称
        )

#########################################################################

input(type="imfile"
        File="/app/wutongshu/log/channelmanage/channelinfo.log"
        #StateFile="channelmanage-8080"
        Facility="local2"
        Severity="info"
        Tag="channe-10.139.54.53-8080"
        PersistStateInterval="1"
        Ruleset="remote"
        )

#########################################################################

input(type="imfile"
        File="/app/wutongshu/log/channelmanage/channelerror.log"
        #StateFile="channelmanage-error-8080"
        Facility="local3"
        Severity="info"
        Tag="channelerror-10.139.54.53-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文件中,不然的话日志量大很容将/根目占满,后果可想而知。

 三、服务端配置

1、防火墙配置

与客户端一致:

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

2、配置rsyslog

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

$PreserveFQDN on #用于正确的获取主机名,暂时应该没用到
$FileOwner wutongshu #存储的文件属主
$FileGroup app  #文件属主
$FileCreateMode 0644 #生成的文件权限
$DirCreateMode 0755 #生成的目录权限
$Umask 0022 
$PrivDropToUser root #可以删除日志的用户
$PrivDropToGroup root #可以删除日志的用户组
module(load="imuxsock")
module(load="imklog")
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp" MaxSessiOns="500")
input(type="imtcp" port="514")


#以下为部分配置
$template  SpiceTmpl,"%msg:2:$%\n" #定义一个模块,去掉开头的空格
$template  ChannelmanageCatalinaDynaFile,"/app/wutongshu/rsyslog/%fromhost-ip%/channelmanage/catalina_%$YEAR%-%$MONTH%-%$DAY%.log" #定义文件存储路径及名称,%%中间的为变量
$template  ChannelmanageInfoDynaFile,"/app/wutongshu/rsyslog/%fromhost-ip%/channelmanage/channelmanage_%$YEAR%-%$MONTH%-%$DAY%.log" #定义文件存储路径及名称,%%中间的为变量
$template  ChannelmanageErrorDynaFile,"/app/wutongshu/rsyslog/%fromhost-ip%/channelmanage/error_%$YEAR%-%$MONTH%-%$DAY%.log"

:rawmsg,contains,"catalina-10.139.54.53-8080" ?ChannelmanageCatalinaDynaFile;SpiceTmpl #contains过滤tag为catalina-10.139.54.53-8080日志存储到ChnnelmanageCatalinaDynaFile模板定义的日志中去
:rawmsg,contains,"channe-10.139.54.53-8080" ?ChannelmanageInfoDynaFile;SpiceTmpl
:rawmsg,contains,"channelerror-10.139.54.53-8080" ?ChannelmanageErrorDynaFile;SpiceTmpl

四、重启服务,收集日志

先重启服务端Rsyslog,然后重启客户端。命令:

/etc/init.d/rsyslog restart

如果不出意外,服务端会成日志目录及日志,当然首次会比较慢,有一个传输的过程。

在客户端../rsyslog目录下会发现传输的状态文件和队列文件:

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

最后展示下服务端收集日志的部分效果图:

遇到的坑:配置第一台客户端在服务端所有日志服务端都正常能接收到,后面配置的几台只能收到catalina.out日志,其它日志死活不行,配置检查了很多遍,来回测试了很多遍,然后花了很长时间看官网文档,始终没有找到原因。在快要放弃的时候发现服务端配置文件一个规律,能接收到日志的tag定义的比较短,不能接收的tag定义的字符串都很长。之后随便找了一台,将tag改短,重启服务后果然收到了日志。真是坑。。如果一开始定义的tag也比较长,估计就没这么幸运发现问题所在了。

转自

Rsyslog日志服务搭建 - K‘e0llm - 博客园
https://www.cnblogs.com/Eivll0m/p/6700828.html


推荐阅读
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 1、PLSQLDeveloper记住登陆密码在使用PLSQLDeveloper时,为了工作方便希望PLSQLDeveloper记住登录Oracle的用户名和密码&#x ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文讨论了如何在dotnet桌面(Windows)应用程序中添加图标。作者提到可以使用dotnet命令行工具与resource.rc文件一起使用来为标准.NET核心应用程序添加图标。作者还介绍了在创建控制台应用程序时如何编辑projeto1.csproj文件来添加图标。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 通俗易懂玩QT:Qt 使用 QAxObject 类读写 Excel 文档(内附源码)
    Qt使用QAxObject类读写Excel文档因为工作需要,最近研究了一下使用Qt的QAxObject类实现对Excel文档的简单读写,查阅了很多资料 ... [详细]
author-avatar
od扒着井沿的牛蛙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有