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

rsyslog的安装、使用、详解

操作系统:CentOSrelease6.7downloadyumrepofile:rsyslogall.repo安装:检查:配置文件解析:Rsyslogd的配置文件是etcrsys

操作系统:CentOS release 6.7

download yum repo file:rsyslogall.repo

[rsyslog-v8-stable]
name=Adiscon Rsyslog v8-stable for CentOS-$releasever-$basearch
baseurl=http://rpms.adiscon.com/v8-stable/epel-$releasever/$basearch
enabled=1
gpgcheck=0
protect=1

安装:

yum clean all
yum makecache
yum install rsyslog

检查:

技术图片

配置文件解析:

    Rsyslogd的配置文件是/etc/rsyslog.conf,一般在/etc目录下,先看看rsyslog client的配置:

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html

global(net.enableDNS = "on")
global(net.ipprotocol = "ipv4-only")
global(debug.OnShutdown= "on")
#max maxMessageSize 32K,default 8K
$maxMessageSize      16K

#### MODULES ####

#提供本地系统日志记录,比如使用logger模拟发送日志
module(load="imuxsock") 

#提供内核级别的日志记录
module(load="imklog")   

#提供标记message的能力
#module(load"immark")  

# Provides UDP syslog reception
#提供UDP的514端口来接收UDP协议发送过来的数据
module(load="imudp") 
input(type="imudp" port="514")

# Provides TCP syslog reception
#提供TCP的514端口来接收TCP协议发送过来的数据
#module(load="imtcp") 
#input(type="imtcp" port="514")


#### GLOBAL DIRECTIVES ####

#设置默认的timestamp格式
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

#文件同步功能默认被禁止了,一般情况下不需要这种功能
#$ActionFileEnableSync on

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf


#### RULES ####

#记录所有的kernel日志到console.
#kern.*                                                 /dev/console

#记录所有事件日志级别大于info的日志到/var/log/message,但是mail、authpriv、cron的日志除外
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

#authpriv相关的日志存放到/var/log/secure
authpriv.*                                              /var/log/secure

#邮件相关的日志存放到/var/log/maillog
mail.*                                                  /var/log/maillog

#定时任务的日志存放到/var/log/cron
cron.*                                                  /var/log/cron

#所有级别大于emerg的信息,每个人都会看到
*.emerg                                                 :omusrmsg:*

#在一个特殊的文件里面保存crit或者级别更高的uucp日志
uucp,news.crit                                          /var/log/spooler

#记录启动信息到/var/log/boot.log
local7.*                                                /var/log/boot.log

#所有日志发送到远程rsyslog服务器,@表示UDP协议,@@表示TCP协议
*.*                                                     @172.16.20.193:514

# ### begin forwarding rule ###
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
#$WorkDirectory /var/lib/rsyslog # where to place spool files
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
#$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
#$ActionQueueType LinkedList   # run asynchronously
#$ActionResumeRetryCount -1    # infinite retries if host is down
# ### end of the forwarding rule ###

    大部分的参数都已经解释了,下面主要看看RULES中日志格式的指定,一般是:日志类型(连接符号)日志级别   日志处理方式

日志类型:

auth        –pam产生的日志
authpriv    –ssh,ftp等登录信息的验证信息
cron        –时间任务相关
kern        –内核
lpr         –打印
mail        –邮件
mark(syslog)–rsyslog服务内部的信息,时间标识
news        –新闻组
user        –用户程序产生的相关信息
uucp        –unix to unix copy, unix主机之间相关的通讯
local 1~7   –自定义的日志设备

连接符号:

.xxx: 表示大于等于xxx级别的信息
.=xxx:表示等于xxx级别的信息
.!xxx:表示在xxx之外的等级的信息

日志级别:

级别从低到高,记录的信息越来越少
debug       –有调式信息的,日志信息最多
info        –一般信息的日志,最常用
notice      –最具有重要性的普通条件的信息
warning     –警告级别
err         –错误级别,阻止某个功能或者模块不能正常工作的信息
crit        –严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert       –需要立刻修改的信息
emerg       –内核崩溃等严重信息
none        –什么都不记录

处理方式:

/var/log/file	发送到日志文件
@@192.168.0.1	发送到TCP server
@192.168.0.1	发送到UDP server
user1,user2	    发送到在线用户user1,user2
~		        丢弃该日志
^/path/script	执行的脚本,^后面跟可以执行的脚本,日志内容可以作为脚本的第一个参数,可以用来触发告警

    上面就是Rsyslog client的基本配置,其中一些高级功能并没有介绍,在下面的Rsyslog server中会做介绍。server的配置只需要在client上增加少许即可:

#$template TmplMsg, "/var/log/rsyslog_custom/%HOSTNAME%/%PROGRAMNAME%.log"
template(name="FTM" type="string" string="/var/log/rsyslog_custom/%fromhost-ip%/%$YEAR%/%$MONTH%/%$DAY%/%PROGRAMNAME%.log") 
*.*   ?FTM

    增加的这一步就是为了分离各个client汇报上来的数据,存放在不同的目录,使用到了模板技术,关于模板的官方解释看这里:template

Templates:允许你设置自己的格式,也可以用来生成动态文件,每一个rsyslog的输出都会用到Templates,可以指定多个模板,不同的日志输出到不同的模板,如果没有指定Templates,则系统会使用默认的Templates,可以使用老版本的配置语法$template,也可以使用新版本的配置语法template(),官方建议还是使用新语法。

$template:

    语法格式:$template name,param[,options]

    name是指定模板的名称,param是指定模板的内容

$template TmplMsg, "/var/log/rsyslog_custom/%HOSTNAME%/%PROGRAMNAME%.log"

        TmplMsg就是模板名称,后面的是文件名称,中间“”之间的是内部变量,后面会介绍。

    系统中有一些内置的保留模板,他们使用RSYSLOG_开头的模板名称,有如下:

        RSYSLOG_TraditionalFileFormat
        RSYSLOG_FileFormat 
        RSYSLOG_TraditionalForwardFormat
        RSYSLOG_SysklogdFileFormat 
        RSYSLOG_ForwardFormat 
        RSYSLOG_SyslogProtocol23Format 
        RSYSLOG_DebugFormat 

template():

    语法格式 :基本的配置语法是template(parameters),还支持一种扩展的格式template(parameters) { list-descriptions }

    template()用来定义templates,这是一个静态配置,parameter主要有两个参数:name和type。

        name:指定模板的名称,必须是唯一的。

        type:指定模板的类型,不同的模板类型指定了不同的模板指定方法,一般有list、subtree、string、plugin四中类型。

    其中string类型的比较常用,我们就以string为例:

template (name="tpl3" type="string" string="%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n")
template (name="TraditionalFormat" type="string" string="%timegenerated% %HOSTNAME% %syslogtag%%msg%\\n")
template (name="DynFile" type="string" string="/var/log/system-%HOSTNAME%.log")

        上面%%之间的大写变量是可以替换的,:::后面跟的是一些属性。

Properties:

    data items在rsyslog中叫做properties,一般用在templates(就是%%之间的变量)或者条件判断中。详细的看:Properties。主要有三种Properties:

    Message Properties:

msg			        匹配message中的msg部分
rawmsg			    从socket收到的信息,一般用来debug
rawmsg-after-pri	和rawmsg类似,但是syslog PRI被移除了
hostname		    message的主机名
source			    HOSTNAME的别名
fromhost		    message来源的主机名,一般是用在relay chain中
fromhost-ip		    同fromhost,不过获取的是ip
syslogtag		    message的tag
programname		    是tag的静态部分,例如tag是named[123456],则programname是named
pri			        message的PRI,undecoded格式
pri-text		    text格式的PRI
syslogfacility		the facility from the message - in numerical form
syslogfacility-text	the facility from the message - in text form
syslogseverity		severity from the message - in numerical form
syslogseverity-text	severity from the message - in text form
timegenerated		timestamp when the message was RECEIVED. message被本地syslog接收到的时间
timereported		timestamp from the message,包含message被创建的时间
timestamp		    alias for timereported

    System Properties:

$bom			The UTF-8 encoded Unicode byte-order mask (BOM)
$myhostname		The name of the current host as it knows itself

    Time-Related System Properties:

$now			当前日期,格式YYYY-MM-DD,now是指当前message被处理的时间
$year			当前年份(4-digit)
$month			当前月份(2-digit)
$day			当前日期(2-digit)
$hour			当前小时(24 hour) time (2-digit)
$hhour			From minute 0 to 29, this is always 0 while from 30 to 59 it is always 1.
$minute			当前分钟(2-digit)

在配置文件的开头还有一些global设置,global的配置只能被设置一次,不能被随后重新设置:

action.reportSuspension		on
action.reportSuspensionContinuation		off
workDirectory
dropMsgsWithMaliciousDNSPtrRecords
localHostname
preserveFQDN
defaultNetstreamDriverCAFile
defaultNetstreamDriverKeyFile
defaultNetstreamDriverCertFile
debug.gnutls		0
#rsyslog可以处理的单挑日志的大小,默认是4K,任何超出4K的都会被截断
maxMessageSize	4K
#当被设置为on的时候,如果系统shutdown,rsyslog会记录系统的debug信息
debug.onShutdown	on
#指定debug日志的文件名称
debug.logFile
#指定使用的协议,可以是ipv4-only,ipv6-only
net.ipprotocol		ipv4-only
#是否解析主机名到ip地址
net.aclResolveHostname		off
#是否开启dns
net.enableDNS		on

UDP module:here

TCP Module:here

Config:here

下面附上生产中的配置:

#Client
global(net.enableDNS = "on")
global(net.ipprotocol = "ipv4-only")
global(debug.OnShutdown= "on")
$maxMessageSize      16K
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)
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
kern.*                                                  /var/log/kern
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
auth.*                                                  /var/log/auth
authpriv.*                                              /var/log/secure
mail.*                                                  /var/log/maillog
cron.*                                                  /var/log/cron
daemon.*                                                /var/log/daemon
user.*                                                  /var/log/user
*.emerg                                                 ~
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot
*.*                                                     @192.168.1.6:514

#Server
global(net.enableDNS = "on")
global(net.ipprotocol = "ipv4-only")
global(debug.OnShutdown= "on")
$maxMessageSize      16K
$AllowedSender       UDP, 127.0.0.1, 192.168.0.0/16
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="imudp") # needs to be done just once
input(type="imudp" address="10.203.40.13" port="514")
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
template(name="remote_syslog" type="string" string="/data0/rsyslog_center/%HOSTNAME%/%$YEAR%-%$MONTH%/%$DAY%/%PROGRAMNAME%.log")
kern.*                                                  /var/log/kernel
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
auth.*;authpriv.*                                       /var/log/secure
mail.*                                                  /var/log/maillog
cron.*                                                  /var/log/cron
daemon.*                                                /var/log/daemon
user.*                                                  /var/log/user
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot
*.*                                                     ?remote_syslog

rsyslog的安装、使用、详解


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
author-avatar
超级无敌智慧星在路上
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有