Rsyslog日志服务搭建
rsyslog是比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., compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
GSSAPI Kerberos 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., compiled with:
PLATFORM: x86_64-redhat-linux-gnu
PLATFORM (lsb_release -d):
FEATURE_REGEXP: Yes
GSSAPI Kerberos 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: 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 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp -i eth0 --dport -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="")
#使用tcp协议
module(load="imtcp" MaxSessions="")
input(type="imtcp" port="")
新增配置:
ruleset(name="remote"){
action(type="omfwd"
target="Rsyslog服务端主机IP"
port="" #端口
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="" #回写偏移量数据到文件间隔时间(秒),根据实际情况而定
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=""
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=""
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 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp -i eth0 --dport -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="")
module(load="imtcp" MaxSessions="")
input(type="imtcp" port="") #以下为部分配置
$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日志服务搭建的更多相关文章
- rsyslog日志服务的配置文件分析
基于rsyslog日志服务的日志 在不同的LINUX系统,实现的软件略有不同. syslog,rsyslog,syslog-ng,用于实现系统日志的管理. [root@asianux4 ~]# rpm ...
- centos7设置rsyslog日志服务集中服务器
centos7设置rsyslog日志服务集中服务器 环境:centos6.9_x86_64,自带的rsyslog版本是7.4.7,很多配置都不支持,于是进行升级后配置 # 安装新版本的rsyslog程 ...
- rsyslog日志服务部署
rsyslog简介 rsyslog是CentOS6和CentOS7默认的记录日志的服务 支持特性: UDP, TCP, SSL, TLS, RELP MySQL, PGSQL, Oracle实现日志存 ...
- Linux系统服务 1 ---- rSyslog日志服务
1 日志 1 日志是系统用来记录系统运行时候的一些相关的信息的纯文本文件 2 日志的目的是保存相关程序的运行状态,错误信息等.为了对系统进行分析,保存历史记录以及在出现错误的时候发现分析错误使用 3 ...
- Linux-本地日志服务管理(rsyslog基础)
目录 系统环境 1.常见的两种日志管理服务 1.1 RSYSLOG系统日志服务 1.2 ELK 2.RSYSLOG日志服务的相关知识 2.1 RSYSLOG日志消息级别 2.2 RSYSLOG日志服务 ...
- centos 如何用 rsyslog 搭建本地日志服务(续1: omprog模块与php deamon的配合使用)
上一篇说到了如何用 rsyslog 搭建本地的日志服务,地址在这里,没有看的童鞋可以先瞅一眼 : http://www.cnblogs.com/smallrookie/p/5677004.html 显 ...
- centos 如何用 rsyslog 搭建本地日志服务
一.问题背景 最近项目遇到一个问题,服务器响应很慢,team中的两个有经验的工程师找了一台服务器分析了一下,发现问题出在磁盘写入过于频繁.这里大概介绍一下背景,我们的服务器上面主要是跑各种PHP接口, ...
- rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>
大概思路如下: 使用Linux自带的rsyslog服务来做底层,然后再使用mysql与rsyslog的模板来存储文件,并且以web来进行显示出来.<模板的存储以日期的树形结构来存储,并且以服务器 ...
- rsyslog+mariadb+loganalyzer实现日志服务器搭建
rsyslog+mariadb+loganalyzer实现日志服务器搭建 一.概述 Linux的日志记录了用户在系统上一切操作,包括系统自身运作产生的日志,这些日志是应使用者了解服务器的情况最好的资料 ...
随机推荐
- 【转载】COM 组件设计与应用(十)——IDispatch 接口 for VC.NET
原文:http://vckbase.com/index.php/wv/1225.html 一.前言 终于写到了第十回,我也一直期盼着写这回的内容耶,为啥呢?因为自动化(automation)是非常常用 ...
- 「PKUSC2018」真实排名
题面 题解 因为操作为将一些数字翻倍, 所以对于一个数\(x\), 能影响它的排名的的只有满足\(2y\geq x\)或\(2x>y\)的\(y\) 将选手的成绩排序,然后考虑当前点的方案 1. ...
- P4774 [NOI2018]屠龙勇士
P4774 [NOI2018]屠龙勇士 先平衡树跑出打每条龙的atk t[] 然后每条龙有\(xt \equiv a[i](\text{mod }p[i])\) 就是\(xt+kp[i]=a[i]\) ...
- noip2017普及题解
https://www.luogu.org/problemnew/show/3954 https://www.luogu.org/problemnew/show/3955 https://www.lu ...
- Kafka系列三 java API操作
使用java API操作kafka 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...
- ubuntu 图形化界面 gui 桌面版 root登录 sorry,that didn't work.please try again! 抱歉,认证失败。请重试
出现这种问题,用下面的方法就行了 https://jingyan.baidu.com/article/bad08e1e224b2709c85121f1.html 而且我发现,因为我用的是英文版的ubu ...
- JAVA 删除指定目录下指定文件类型的所有文件
public class DelFile { public static void main(String[] args) { File file = new File("C:\\DETEC ...
- Windows Forms Application Creation and Initialization
Windows Forms Application Creation and Initialization This topic details the steps performed after a ...
- PCB设计铜箔厚度、线宽和电流关系
PCB的载流能力取决于一下因素:线宽.线厚.容许温升.在同等条件下,假设10mil的走线能承受1A,那么50mil的走线能承受的电流却不是5A. 如下: 1 盎司 = 0.0014英寸 = 0.035 ...
- Jmeter+ant+jenkins接口自动化测试 平台搭建(一)
平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成.Jmeter 支持接口的测试,Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可 ...