rsyslog 日志服务器使用

简介

rsyslog [官方](http://www.rsyslog.com/) 介绍说是一个高速的系统日志处理器,老版本的linux名字是syslog。稳定并且强大。

准备

众多linux发行版都已经自带rsyslog,所以更新下就好了
yum install rsyslog -y 
rsyslogd -v 
成功

详解

  1. 日志类型

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

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

.xxx: 表示大于等于xxx级别的信息 .=xxx:表示等于xxx级别的信息 .!xxx:表示在xxx之外的等级的信息 ``` 3. 主要配置文件和意义

保存路径/etc/rsyslog.conf

格式:日志设备或类型.(连接符号)日志级别   日志处理方式(action)
$ModLoad imuxsock
$ModLoad imklog
$ModLoad immark 

$ModLoad imudp        #打开ucp 通过ucp传日志
$UDPServerRun 514     #ucp端口

$ModLoad imtcp        #打开tcp 通过tcp传日志
$InputTCPServerRun 514#tcp端口
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定义日志格式默认模板
$ActionFileEnableSync on

$IncludeConfig /etc/rsyslog.d/*.conf
#关于内核的所有日志都保存在/dev/console
kern.*                                   /dev/console
# 记录所有日志类型的info级别以及大于info级别的信息保存到/var/log/messages,但是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级别信息, 以wall方式发送给每个登录到系统的人
*.emerg                                  *
# 记录uucp,news.crit等存放在/var/log/spooler
uucp,news.crit                           /var/log/spooler
# 启动的相关信息
local7.*                                 /var/log/boot.log
  1. 增加讲解一个重要特性(队列)

    队列是 rsyslog 的核心。下图展示了rsyslog处理消息的流程: 队列流程图

    队列分为 Main QueueAction Queue 队列,Main 队列 只有一个,Action 队列 有多个。 队列的工作模式有Direct, Disk, In-Memory, Disk-Assisted Memory四种

    • Direct 直接将数据放出,没有buffer。如果接收方无法处理,数据就会被丢掉。

    • Disk 使用磁盘作为缓存,数据如果不能及时处理,就是用磁盘做缓存。

    • In-Memory 使用内存作为缓存,所以效率非常高,但是相对的它们的可靠性没有Disk Queue好。 内存队列也分2种

      1)FixedArray 是预分配固定大小的队列,也是Main Queue的默认模式。适合日志小的时候。

      2)LinkedList 是动态分配大小的队列,适合队列日志很大的情况。

    • Disk-Assisted Memory 它集成了In-Memory 和 Disk 这两种队列的优点。 如果一个In-Memory Queue定义了队列名,它自动就变成 Disk-Assisted(DA)模式。

$ #接收队列
$WorkDirectory /opt/queues    #队列文件存储目录

$MainMsgQueueType LinkedList #选择使用内存队列模式

$MainMsgQueueFileName <name> #存储队列数据时用的文件名

$MainMsgQueueMaxFileSize 100M #队列单文件尺寸大小

$MainMsgQueueHighWatermark 10000 #当内存队列达到这些元素时,开始回写磁盘。

$MainMsgQueueLowWatermark 1000 #当内存队列小于这些元素时,停止回写磁盘。

$MainMsgQueueMaxDiskSpace 20g #限制磁盘队列大小。

$MainMsgQueueMaxFileSize 200m #队列单文件尺寸大小。

$MainMsgQueueSaveOnShutdown on #在rsyslogd关闭时,要保存队列中数据。

$MainMsgQueueDiscardSeverity 8 #丢弃消息等级设定,数字越低丟的越多,设置8代表禁止丢弃消息。

$MainMsgQueueDiscardMark 1000000000 #超出10亿后,会禁止新消息入队

$MainMsgQueueTimeoutEnqueue 3000 #超时3秒,TCP或local_socket方式下,预防资源夯住,引起崩溃。

$MainMsgQueueDequeueBatchSize 500 #优化带宽,设置每批次传输元素量,尽可能每次传输更多的数据。

$ActionForwardDefaultTemplate RSYSLOG_ForwardFormat #定义转发消息格式模板,使用系统默认转发格式。

$ #发送队列(可多个)
$WorkDirectory /opt/data2/ #定义工作目录。例如队列文件存储存储文件夹。

$ActionQueueType LinkedList #选择使用内存队列模式。

$ActionQueueFileName <name> #如果队列模式使用内存模式,同时配置这个参数后,意味激活磁盘队列。

$ActionQueueHighWatermark 10000 #当内存队列达到这些元素时,开始回写磁盘。

$ActionQueueLowWatermark 1000 #当内存队列小于这些元素时,停止回写磁盘。

$ActionQueueMaxDiskSpace 20g #限制磁盘队列大小。

$ActionQueueMaxFileSize 200m #队列单文件尺寸大小。

$ActionResumeRetryCount -1 #失败后重试次数,-1 代表无限。

$ActionQueueSaveOnShutdown on #在rsyslogd关闭时,要保存队列中数据。

$ActionQueueDiscardSeverity 8 #丢弃消息等级设定,数字越低丟的越多,设置8代表禁止丢弃消息。

$ActionQueueDiscardMark 1000000000 #超出10亿后,会禁止新消息入队,丢弃消息。
$ActionQueueTimeoutEnqueue 3000 #超时3秒,TCP或local_socket方式下,预防资源夯住,引起崩溃。

$ActionQueueDequeueBatchSize 500 #优化带宽,设置每批次传输元素量,尽可能每次传输更多的数据。

示例

  1. 将本机所有的日志文件放入/opt/logs/sys.log

    在配置文件中最后加上

. /opt/logs/sys.log #不影响原来文件内容和路径,只是增加一个文件保存所有日志

2. 将本机所有的日志文件传送到远程服务器

   1) 客户端的配置文件中增加

    ```
*.* @192.168.1.1       # server端使用UDP协议

或 ``` . @@192.168.1.1 # server端使用TCP协议

或
    ```
*.* @192.168.1.1:11514 # server端带端口号的
2) 服务端的配置文件中修改
```

$modload imudp # 使用UDP协议 $UDPServerRun 514


    ```
$ModLoad imtcp        # 使用TCP协议
$InputTCPServerRun 514
  1. 外部服务器发送过来的所有日志保存到一个的文件中 服务端的配置文件中的尾部增加

:fromhost-ip, isequal,"192.168.2.161" /var/log/161.log

    意思是接收到服务器ip为192.168.2.161的所有日志 放入文件/var/log/161.log 

4. 使用模板保存
    服务端的配置文件中的GLOBAL DIRECTIVES处增加
    ```
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" * #定义一个模板规则
*.*  ?RemoteLogs #所有消息指定为RemoteLogs模板处理
& ~    #意思是重定向规则,停止对日志消息的进一步处理,并且不要在本地写入
意思是接收到所有日志 放入文件/var/log/以机器主机名命名的专有目录中

todo

####问题集合

####扩展阅读

转载于:https://my.oschina.net/2688/blog/607600

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值