文章目录

  • 1、日志服务简介
  • 2、linux系统中的常见日志
  • 3、日志服务Rsyslog
    • (1)服务对应rpm包
    • (2)服务配置文件
    • (3)配置文件格式
      • 服务名称
      • 连接符号
      • 日志等级
      • 日志记录位置
    • (4)配置文件内容
  • 4、日志轮替
    • (1)配置文件内容详解
    • (2)logrotate配置文件的主要参数
    • (3)案例解析

1、日志服务简介


在Centos 6.x/Redhat 6.x中日志服务已经由rsyslog取代了原先的syslog服务,rsyslog相比syslog具有一些新的特点:

  • 基于TCP网络协议传输日志信息;
  • 更安全的网络传输方式;
  • 有日志消息的及时分析框架;
  • 后台数据库;
  • 配置文件中可以写简单的逻辑判断;
  • 与syslog配置文件相兼容;

2、linux系统中的常见日志


系统中的日志默认存储路径为:/var/log/

[root@Redhat8 log]# pwd
/var/log
[root@Redhat8 log]# ls
anaconda                  dnf.librepo.log-20210829  libvirt            secure-20210822
audit                     dnf.librepo.log-20210905  maillog            secure-20210829
boot.log-20210821         dnf.log                   maillog-20210822   secure-20210905
boot.log-20210825         dnf.log.1                 maillog-20210829   speech-dispatcher
boot.log-20210902         dnf.rpm.log               maillog-20210905   spooler
btmp                      firewalld                 mariadb            spooler-20210822
btmp-20210901             gdm                       messages           spooler-20210829
chrony                    glusterfs                 messages-20210822  spooler-20210905
cron                      hawkey.log                messages-20210829  sssd
cron-20210822             hawkey.log-20210822       messages-20210905  swtpm
cron-20210829             hawkey.log-20210829       private            tuned
cron-20210905             hawkey.log-20210905       qemu-ga            vmware-vgauthsvc.log.0
cups                      httpd                     rhsm               wtmp
dnf.librepo.log           insights-client           samba
dnf.librepo.log-20210822  lastlog                   secure

日志文件说明:

  • /var/log/cron :记录系统定时任务相关日志;
  • /var/logcups/ :记录打印信息的日志;
  • /var/log/dmesg :记录系统在开机时内核自检的信息,可以使用dmesg命令直接查看内核自检信息;
[root@Redhat8 log]# dmesg
  • /var/log/btmp :记录错误登录日志,此文件为二进制文件(保护日志内容,防止陌生用户查看并可修改日志内容),需要使用lastb命令查看;
[root@Redhat8 log]# lastb
  • /var/log/lastlog :记录系统中所有用户最后一次的登录时间的日志,此文件为二进制文件,需要使用lastlog命令查看;
[root@Redhat8 log]# lastlog
  • /var/log/maillog :记录邮件信息;
  • /var/log/message :记录系统重要信息的日志,这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题,首先检查此日志文件;
  • /var/log/secure :记录验证和授权方面的信息,只要涉及账户和密码的程序都会被记录;
  • /var/log/wtmp :永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件,此文件为二进制文件,需要使用last命令查看;
[root@Redhat8 log]# last
  • /var/log/utmp :记录当前已经登录的用户信息,此文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息,此文件为二进制文件,需要使用w、who、users等命令查看;
[root@Redhat8 log]# w00:09:31 up 9 days,  5:59,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty2     tty2             01Sep21  9days  9:11   0.00s /usr/libexec/gsd-disk-utility-notify
root     pts/0    10.81.10.55      23:58    0.00s  0.03s  0.00s w
[root@Redhat8 log]#
[root@Redhat8 log]# who
root     tty2         2021-09-01 18:12 (tty2)
root     pts/0        2021-09-10 23:58 (10.81.10.55)
[root@Redhat8 log]# users
root root

除了系统默认的日志之外,采用rpm方式安装的系统服务也会默认将日志记录在/var/log/目录下,不过这些日志不是由rsyslog服务来记录和管理的,而是各个服务使用自己的日志管理文件来记录自身日志;

/var/log/httpd/
/var/log/mail/
/var/log/samba/
/var/log/ssd/

3、日志服务Rsyslog


(1)服务对应rpm包

[root@Redhat8 log]# rpm -qa rsyslog
rsyslog-8.1911.0-3.el8.x86_64

(2)服务配置文件

[root@Redhat8 log]# rpm -qc rsyslog
/etc/logrotate.d/syslog
/etc/rsyslog.conf
/etc/sysconfig/rsyslog

(3)配置文件格式

#服务名称[连接符号]日志等级                               日志记录位置
authpriv.*                                              /var/log/secure

服务名称

  • auth (LOG_AUTH) :安全和认证相关消息,不推荐使用authpriv替代;
  • authpriv (LOG_AUTHPRIV) :安全和认证相关消息,私有;
  • cron (LOG_CRON) :系统定时任务cront与at产生的相关日志;
  • daemon (LOG_DAEMON) :各个守护进程产生的日志;
  • ftp (LOG_FTP) :ftp守护进程产生的日志;
  • kern (LOG_KERN) :内核产生的日志;
  • local0-local7 (LOG_LOCAL0-7) :为本地使用预留的服务;
  • lpr (LOG_LPR) :打印产生的日志;
  • mail (LOG_MAIL) :邮件收发日志;
  • news (LOG_NEWS) :与新闻服务器相关的日志;
  • syslog (LOG_SYSLOG) :有syslog服务产生的日志;
  • user (LOG_USER) :用户等级类别的日志;
  • uucp (LOG_UUCP) :uucp子系统的日志信息;

连接符号

  • " . " :只要比后面的等级高的(包含该等级)日志都记录下来;
  • " .= " :只记录所需等级的日志,其他等级不记录;
  • " .! " :除了该等级的日志外其他等级全部记录;

日志等级

  • debug (LOG_DEBUG) :一般的调试信息说明;
  • info (LOG_INFO) :基本的通知信息;
  • notice (LOG_NOTICE) :普通信息,有一定重要性;
  • warning (LOG_WARNING) :警告信息,不会影响到服务的运行;
  • err (LOG_ERR) :错误信息,可以影响服务或系统的运行;
  • crit (LOG_CRIT) :临界状况信息,比err等级严重;
  • alert (LOG_ALERT) :警告状态信息,比crit等级严重,需要立即采取行动;
  • emerg (LOG_EMERG) :疼痛等级信息,系统无法使用;
    • :所有等级信息;
  • none :忽略此日志服务;

日志记录位置

即当前日志输出到那个文件中进行保存,或者输出到某个远程日志服务器上(UDP 514),日志的记录位置是固定的;

  • 日志文件的绝对路径:最常见的保护方法;
  • 系统设备文件:代表打印机输出方式;
  • 转发到远程主机:使用TCP/UDP端口发送到远程主机上,若使用"@192.168.10.10:514",就会把日志内容使用UDP协议发送到192.168.10.10的UDP 514端口,若使用"@@192.168.10.10:514",就会把日志内容使用TCP协议发送到192.168.10.10的TCP 514端口;
  • 用户名:此处可以定义接受该日志用户名," * " 代表所有用户;
  • " ~ " 代表忽略此日志,不定义接收;

(4)配置文件内容

[root@Redhat8 log]# cat /etc/rsyslog.conf
# rsyslog configuration file# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# or latest version online at http://www.rsyslog.com/doc/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html#### MODULES ####
#加载模块module(load="imuxsock"    # provides support for local system logging (e.g. via logger command)
#加载imuxsock模块,为本地系统登录提供支持SysSock.Use="off") # Turn off message reception via local log socket; # local messages are retrieved through imjournal now.
module(load="imjournal"      # provides access to the systemd journalStateFile="imjournal.state") # File to store the position in the journal
#module(load="imklog") # reads kernel messages (the same are read from journald)
#加载imklog模块,为内核登录提供支持
#module(load"immark") # provides --MARK-- message capability
#加载immark模块,提供标记信息的能力# Provides UDP syslog reception
# for parameters see http://www.rsyslog.com/doc/imudp.html
#module(load="imudp") # needs to be done just once
#input(type="imudp" port="514")
#加载UDP模块,允许使用UDP的514端口接收采用UDP协议转发的日志# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
#module(load="imtcp") # needs to be done just once
#input(type="imtcp" port="514")
#加载TCP模块,允许使用TCP的514端口接收采用TCP协议转发的日志#### GLOBAL DIRECTIVES ####
#定义全局设置# Where to place auxiliary files
global(workDirectory="/var/lib/rsyslog")
#工作目录位置# Use default timestamp format
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
#定义日志的时间使用默认的时间戳格式# Include all config files in /etc/rsyslog.d/
include(file="/etc/rsyslog.d/*.conf" mode="optional")
#包含/etc/rsyslog.d/目录中的所有以conf子配置文件#### RULES ##### Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
#所有日志存放在messages文件内,除了邮件、认证、定时任务# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure
#认证日志记录在secure文件内# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog
#邮件日志记录在maillog文件内# Log cron stuff
cron.*                                                  /var/log/cron
#定时任务记录在cron文件内# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*
#所有疼痛级别日志全网通知# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log# ### sample forwarding rule ###
#action(type="omfwd"
# 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.
#queue.filename="fwdRule1"       # unique name prefix for spool files
#queue.maxdiskspace="1g"         # 1gb space limit (use as much as possible)
#queue.saveonshutdown="on"       # save messages to disk on shutdown
#queue.type="LinkedList"         # run asynchronously
#action.resumeRetryCount="-1"    # infinite retries if host is down
# Remote Logging (we use TCP for reliable delivery)
# remote_host is: name/ip, e.g. 192.168.0.1, port optional e.g. 10514
#Target="remote_host" Port="XXX" Protocol="tcp")

4、日志轮替


日志轮替的作用就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超过保存的范围之后,就会进行删除,那么旧日志文件改名之后,命令规范即参考下面配置文件内容;

若配置文件中有 dateext 参数,则日志文件名称不会重叠,此参数不需要日志文件改名,只需要保存指定的日志个数,删除多余的日志文件即可;

[root@Redhat8 log]# ll | grep -w secure
-rw-------. 1 root   root        1790 Sep 14 21:50 secure
-rw-------. 1 root   root       12375 Aug 21 22:59 secure-20210822
-rw-------. 1 root   root       82846 Aug 28 02:19 secure-20210829
-rw-------. 1 root   root        7135 Sep  3 21:00 secure-20210905
-rw-------. 1 root   root        6715 Sep 11 01:50 secure-20210912

若没有 dateext ,那么日志文件就需要进行改名了,第一次进行日志轮替时,当前的 secure 日志会自动改名为 secure.1 ,然后新建 secure 日志用来保存新的日志,当第二次进行轮替时, secure.1 会自动改名为 secure.2 ,当前的 secure 日志会自动改名为 secure.1 然后也会新建 secure 日志,用来保存新日志,以此类推;

(1)配置文件内容详解

[root@Redhat8 log]# cat  /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# 每周对日志文件进行一次轮替
# keep 4 weeks worth of backlogs
rotate 4
#最多保存四次轮替文件,产生第5个文件则删除第一个备份日志文件
# create new (empty) log files after rotating old ones
create
#在日志轮替时,自动新建新的日志文件
# use date as a suffix of the rotated file
dateext
#以日期作为日志文件后缀进行命名# uncomment this if you want your log files compressed
#compress
#日志文件是否压缩,如果取消注释,则日志会在转存储过程时进行压缩
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
#包含子目录/etc/logrotate.d中的所有配置文件# system-specific logs may be also be configured here.[root@Redhat8 logrotate.d]# ll /etc/logrotate.d/
total 80
-rw-r--r--. 1 root root   91 Dec 11  2019 bootlog
-rw-r--r--. 1 root root  130 Feb 19  2018 btmp
-rw-r--r--. 1 root root  160 May 10  2019 chrony
-rw-r--r--. 1 root root   71 Feb 15  2020 cups
-rw-r--r--. 1 root root  212 Nov 25  2019 dnf
-rw-r--r--. 1 root root  194 Dec  2  2019 httpd
-rw-r--r--. 1 root root  172 Nov  5  2019 iscsiuiolog
-rw-r--r--. 1 root root  165 Mar 16  2020 libvirtd
-rw-r--r--. 1 root root  142 Mar 16  2020 libvirtd.qemu
-rw-r--r--. 1 root root  492 Aug 16  2019 mariadb
-rw-r-----. 1 root named 514 Feb 27  2020 named
-rw-r--r--. 1 root root  106 Jun  2  2015 numad
-rw-r--r--. 1 root root  408 Aug 13  2018 psacct
-rw-r--r--. 1 root root  155 Feb 13  2020 samba
-rw-r--r--. 1 root root  237 Mar 17  2020 sssd
-rw-r--r--. 1 root root   71 Apr  3  2020 subscription-manager
-rw-r--r--. 1 root root  226 Dec 11  2019 syslog
-rw-r--r--. 1 root root   32 Feb 19  2018 up2date
-rw-r--r--. 1 root root  100 Nov  4  2019 wpa_supplicant
-rw-r--r--. 1 root root  145 Feb 19  2018 wtmp

(2)logrotate配置文件的主要参数

  • daily :日志的轮替周期是每天;
  • weekly :日志的轮替周期是每周;
  • monthly :日志的轮替周期是每月;
  • rotate number :保留日志文件的个数,0代表无备份;
  • compress :日志轮替时旧日志文件是否进行压缩;
  • create mode owner group :创建新日志文件时是否指定日志的权限、所属者、所属组;
  • mail address :当日志轮替时,输出内容通过邮件外发到指定地址;
  • missingok :如果日志不存在,则忽略该日志的告警信息;
  • notifempty :如果日志文件为空,则不进行日志轮替;
  • minsize number :日志轮替最小值,达到该值才会进行轮替;
  • size number :设置轮替为指定大小,超过此大小则进行轮替,取消时间轮替;
  • dateext :以日期作为日志轮替的文件后缀;
  • sharedscripts :在此关键字之后的脚本只执行一次;
  • prerotate/endscript :在日志轮替之前执行脚本命令,endscript表示脚本结束;
  • posttrotate/endscript :在日志轮替之后执行脚本命令,endscript表示脚本结束;

(3)案例解析

[root@Redhat8 logrotate.d]# cat ./syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{missingoksharedscripts#以下脚本执行一次postrotate#在日志轮替之后执行脚本/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true#重启rsyslog服务,并将结果返回为空   endscript#脚本执行结束
}

prerotate与posttrotate主要用于在日志轮替的同时,执行指定的脚本文件,一般用于日志轮替之后重启服务,需要强调的是,如果日志是写入rsyslog服务的配置文件的,那么把新日志加入logrotate后,一定要重启rsyslog服务,否则你会发现虽然新日志建立了,但是数据还是写入了旧的日志当中,那是因为logrotate文件知道日志轮替了,但是rsyslog服务却不知道,因此就需要重启服务来使得rsyslog服务知道日志轮替了来满足将数据写入新日志文件内;

这里可以使用chattr给文件加入a属性,如果系统文件加入了a属性,那么这个文件就只能增加数据,不能删除和修改已有的数据(root用户也不能修改或删除),此方法可以保护日志文件不被恶意修改;

#chattr
[root@Redhat8 shell]# touch test
[root@Redhat8 shell]# ll
total 0
-rw-r--r--. 1 root root 0 Sep 14 23:51 test
[root@Redhat8 shell]# chattr +a test
[root@Redhat8 shell]# ll
total 0
-rw-r--r--. 1 root root 0 Sep 14 23:51 test
[root@Redhat8 shell]# echo aaa > test
-bash: test: Operation not permitted
[root@Redhat8 shell]# rm -rf test
rm: cannot remove 'test': Operation not permitted
[root@Redhat8 shell]# chattr -a test
[root@Redhat8 shell]# echo aaa > test
[root@Redhat8 shell]# cat test
aaa

Linux ❀ Rsyslog(Syslog)服务与配置文件参数详解相关推荐

  1. Linux网卡配置文件-参数详解

    Linux网卡配置文件-参数详解 DEVICE=eth0 #指出网卡名称比如这个是eth0 NM_CONTROLLED=yes #network mamager的参数,实时生效,不需要重启,表示是否受 ...

  2. 5、SAMBA服务一:参数详解

    ①:SAMBA服务一:参数详解 ②:SAMBA服务二:配置实例 一.SAMBA简介 samba指SMB(Server Message Block,服务器信息块)协议在网络上的计算机之间远程共享Linu ...

  3. Linux服务器,服务管理--systemctl命令详解,设置开机自启动

    Linux服务器,服务管理--systemctl命令详解,设置开机自启动 syetemclt就是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了. 摘要: syst ...

  4. CI流水线配置文件参数详解(二)

    文章目录 4. 参数详解(二) 4.9 git tag打标签的使用 4.10 ``allow_failure`` 4.11 ``when`` 关键字用于实现在作业失败时或发生故障时运行的作业 (whe ...

  5. CI流水线配置文件参数详解(一)

    文章目录 4. 参数详解(一) 4.1 ``script`` 4.2 ``image`` 指定使用Docker镜像.如 ``iamge:name`` ,暂时忽略. 4.3 ``before_scrip ...

  6. MySQL配置文件参数详解

    [client] port = 3307 socket = /usr/local/mysql5_6/mysql.sock default-character-set=utf8 [mysql] prom ...

  7. Rsync 服务部署与参数详解

    Rsync 简介 rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.Rsync软件适用于unix/linux/windows等多种操作系统平台. 传统的 ...

  8. compose配置文件参数详解

    本文介绍compose配置文件参数的使用,熟练编写compose文件 [root@docker lnmp]# cat lnmp.yaml version: '3' services:nginx:bui ...

  9. mysql配置文件参数详解 my.cnf

    My.cnf My.cnf配置选项详解:  mysqld程序--目录和文件 basedir = path使用给定目录作为根目录(安装目录). character-sets-dir = path给出存放 ...

最新文章

  1. Flutter Exception降到万分之几的秘密
  2. 计算机丢失faultrep.dll,faultrep.dll是什么文件?
  3. 如何使html中的din居中,HTML+CSS--position大法好
  4. ElasticSearch搜索实例含高亮显示及搜索的特殊字符过滤
  5. 软件c#语言调用摄像头,C#调用摄像头的几种方式
  6. 外设驱动库开发笔记30:宇电AI-BUS通讯驱动
  7. linux c++程序,阐述Linux下C++编程进行学习
  8. ftp服务器web里有个文件,web实现ftp服务器文件
  9. Matlab二维曲线之fplot函数
  10. 清华同方计算机教程,清华同方电脑u盘重装系统win10教程
  11. vmware虚拟机启动失败
  12. HTML文件mhl,比HDMI更强!MHL与HDMI技术解析
  13. java飞机代码_java实现飞机游戏代码
  14. 医院管理源码 排队叫号管理源码
  15. c word to html 走样,打印机打印效果走样解决办法.pptx
  16. JavaScript简餐——关于盗用构造函数
  17. 加州大学欧文分校 计算机专业,加州大学欧文分校信息与计算机科学
  18. VMware workstation搭建华为FusionCompute实验环境(二)保姆级安装教程,可运行虚拟机
  19. css文本溢出时候,如何把多余的文字显示省略号
  20. Centos6.9 下的 CM(Cloudera Manager)CDH 大数据环境部署

热门文章

  1. moto g2 android 6.0,MOTO G2和MOTO G哪个好
  2. 非常成功的人会做的八件事
  3. RocketMQ 简单梳理 及 集群部署笔记
  4. 通过简单的计算理解sumproduct函数(图文)
  5. linux定时备份数据库到远程ftp,Linux下自动备份MySQL数据库并上传到远程FTP服务器...
  6. Mathtype生成的公式插入word中时缩成一团的解决办法
  7. GitHub上标星75k+超牛的《Java面试突击版》,java开发实战经典第二版答案
  8. **Wampsever运行时不是绿色的解决**
  9. 微信小程序实现两个页面之间的跳转
  10. 小米辟谣35岁以上员工只保留10%,网友:“请公开数据!”