Linux 之日志处理系统 rsyslog

文章
林里克斯

rsyslog 的全称是 rocket-fast system for log 即快速系统日志,rsyslogsyslog 的升级版本,在 CentOS6 以前使用的是 syslogrsyslog 可以快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。

Linux 之日志处理系统 rsyslog



实验平台:CentOS Linux release 7.6.1810 (Core)

rsyslog Version:8.24.0


一、rsyslog 功能及介绍


1.特点

  • 能接收各种各样的来源日志数据;
  • 输出存储至各类数据库:MySQLPostgreSQLMongoDBElasticSearch等;
  • 加密传输:tlssslrelp
  • 自定义输出数据的格式
  • 多线程
  • 支持多种传输协议:TCPUDP

2.功能

  • rsyslog 是一个 C/S 架构的服务,可监听于某套接字,帮其它主机记录日志信息,在 linux 系统中可以分类两个日志
  • 把旧日志轮转、压缩、删除,并且创建新的日志文件;

二、配置使用


1.安装

$ rpm -qa | grep rsyslog
rsyslog-8.24.0-34.el7.x86_64
#CentOS 默认都是有安装的,如果没有使用 yum 安装

$ sudo yum -y install rsyslog

2.相关文件

/etc/rsyslog.conf
#配置文件
/etc/rsyslog.d/
#自定义扩展配置文件存放目录
/usr/sbin/rsyslogd
#主程序命令名称
/usr/lib64/rsyslog
#模块存放路径

3.配置文件详解

  • MODULES (模块)
  • GLOBAL DIRECTIVES (全局配置)
  • RULES (规则)
  • begin forwarding rule (转发规则)

配置文件主要由这四块内容组成

$ cat /etc/rsyslog.conf 
# rsyslog configuration file

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

#### MODULES #### 模块

# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock   #提供对本地系统日志记录的支持(例如通过 logger 命令)
$ModLoad imjournal  #提供对systemd日志的访问
#$ModLoad imklog    #读取内核消息(与从日志中读取相同)
#$ModLoad immark    #提供 ——MARK——message 功能

# 使用 UDP syslog 接收日志功能
#$ModLoad imudp
#$UDPServerRun 514

# 使用 TCP syslog 接收日志功能
#$ModLoad imtcp
#$InputTCPServerRun 514
#514 为监听端口


#### GLOBAL DIRECTIVES #### 全局配置

$WorkDirectory /var/lib/rsyslog
#定义辅助文件存放路径

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#使用默认的时间戳格式

#$ActionFileEnableSync on
#打开文件同步功能,默认是禁用的。这个特性通常不是必需的,无用,对性能影响极大

$IncludeConfig /etc/rsyslog.d/*.conf
#扩展配置文件路径

$OmitLocalLogging on
#关闭通过本地日志套接字接收消息;本地消息使用 imjournal 检索。

$IMJournalStateFile imjournal.state
#在日记本中保存文件的位置

#### RULES #### 规则

#kern.*                                                 /dev/console
#内核相关日志

*.info;mail.none;authpriv.none;cron.none                /var/log/messages
#记录任何级别或更高级别的信息(邮件除外)。不要记录私人身份验证消息!

authpriv.*                                              /var/log/secure
#SSH、FTP 等登录相关日志;

mail.*                                                  -/var/log/maillog
#邮件相关日志及邮件日志

cron.*                                                  /var/log/cron
#任务计划相关日志

*.emerg                                                 :omusrmsg:*
#Everybody gets emergency messages

uucp,news.crit                                          /var/log/spooler
#UNIX to UNIX cp 相关日志,新闻相关日志;

local7.*                                                /var/log/boot.log
#引导相关的日志

参考项:
1.facility(设施):标识系统需要记录日志的子系统
auth             #PAM认证相关日志;
authpriv         #SSH、FTP登录相关日志;
cron             #任务计划相关日志;
daemon           #守护进程相关日志;
kern             #内核相关日志;
lpr              #打印相关日志;
mail             #邮件相关日志;
mark             #标记相关日志;
news             #新闻相关日志;
security         #安全相关日志与auth类似;
syslog           #Rsyslog自己的日志;
user             #用户相关日志;
uucp             #UNIX to UNIX cp相关日志;
local0 to local7 #用户自定义使用设置日志;
*                #表示所有的facility;

2.priority(级别):用来标识日志级别,级别越低信息越详细,有以下日志级别,从上到下,级别从低到高,记录的信息越来越少
debug            #程序或系统调试信息;
info             #一般信息;
notice           #不影响正常功能需要注意的信息;
warning          #可能影响系统功能提醒用户的重要事件;
error            #错误信息;
crit             #比较严重的信息;
alert            #必须马上处理的警告信息;
emerg/panic      #会导致系统不可用的严重信息;
*                #表示所有日志级别;
none             #跟*相反表示什么都没有;

3.action(动作):设置日志记录的位置
记录到普通文件或设备文件
*.*     /var/log/file.log   #绝对路径
*.*     /dev/pts/0          #设备文件

"|",表示将日志送给其他命令处理

"@HOST",表示将日志发送到特定的主机
*.emerg                     @192.168.1.1

4)"用户",表示将日志发送到特定的用户

5)"*",表示将日志发送所有登录到系统上的用户

4.连接符合:
.        #表示大于等于xxx级别的信息;
.=       #表示等于xxx级别的信息;
.!       #表示在xxx之外的等级的信息;


# ### begin forwarding rule ### 转发规则
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# 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.
#$ActionQueueFileName fwdRule1 #spool文件的唯一名称前缀
#$ActionQueueMaxDiskSpace 1g   #空间限制(尽量使用)
#$ActionQueueSaveOnShutdown on #在关机时将消息保存到磁盘
#$ActionQueueType LinkedList   #运行异步
#$ActionResumeRetryCount -1    #如果主机故障,无限重试
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ###

4.案例

auth.=info @192.168.10.1
#表示将auth相关的基本为info信息记录到远程主机

mail.info  /var/log/mail.log
#表示将mail相关的,info级别及以上级别都记录到mail.log文件中

*.info
#表示记录所有日志信息的info级别及以上级别

user.!error 
#表示记录与user和error相反的

*.*
# 所有日志及所有级别信息都记录下来

4.1 使用 mysql 存储

$ sudo yum -y install rsyslog-mysql
#安装 ommysql 模块,安装之后会在 /usr/lib64/rsyslog 目录下生成 ommysql.so 模块

$ sudo vim /etc/rsyslog.conf

$ModLoad ommysql
#写入 mysql 需要使用 ommysql 模块
*.info;authpriv.*       :ommysql:10.10.13.8,syslog(库名),root(用户),mysql123(密码)
#这里演示就直接使用 root 用户了,生成环境建议新建一个用户

搭建 mysql 服务省略,安装完 rsyslog-mysql 后,还会生成一个 sql  文件,需要导入到 mysql 中
$ /data/mysql/bin/mysql -S /data/mysql/mysql.sock -u root -p < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql

$ sudo systemctl restart rsyslog
#重启服务

$ logger "AMD YES"
$ tail -1 /var/log/messages
Mar 24 16:44:10 elasticsearch root: AMD YES
> use syslog;
> select * from systemevents\G;
*************************** 1. row ***************************
                ID: 1
        CustomerID: NULL
        ReceivedAt: 2021-03-24 16:44:10
DeviceReportedTime: 2021-03-24 16:44:10
          Facility: 1
          Priority: 5
          FromHost: elasticsearch
           Message: AMD YES
        NTSeverity: NULL
        Importance: NULL
       EventSource: NULL
         EventUser: NULL
     EventCategory: NULL
           EventID: NULL
   EventBinaryData: NULL
      MaxAvailable: NULL
         CurrUsage: NULL
          MinUsage: NULL
          MaxUsage: NULL
        InfoUnitID: 1
         SysLogTag: root:
      EventLogType: NULL
   GenericFileName: NULL
          SystemID: NULL
#去数据库里查看数据,Message 就是日志内容。FromHost 是主机名

5.验证配置文件是否有误

$ sudo rsyslogd -N1 -f /etc/rsyslog.conf 
rsyslogd: version 8.24.0-57.el7_9, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.

Over~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

1505 0 2021-03-24


分享:
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-12-28

今日天气
站点统计
  • 文章总数:241篇
  • 分类总数:29个
  • 评论总数:12条
  • 本站总访问量 353825 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!