日志—日志存放位置的相关文件介绍——SyslogFacility—日志等级介绍—配置文件 /etc/rsyslog.conf 的语法—日志轮转等详解

目录

日志的作用:

日志管理策略

日志存放位置

系统日志保存位置:

主要日志文件介绍:

由相应的应用程序独立进行管理

分析工具

常用命令

格式:

日志的分类:

rsyslog服务

系统记录设备类型  SyslogFacility​​​​​​

日志级别 Loglevel

配置文件 /etc/rsyslog.conf 的语法

消息发送位置(即这个日志级别记录后放在哪里)

日志轮转

/etc/logrotate.conf配置文件主要参数和功能


日志的作用:

  • 用于记录系统、程序运行中发生的各种事件
  • 通过阅读日志,有助于诊断和解决系统故障

日志管理策略

  • 及时作好备份和归档
  • 控制日志访问权限 --> 日志内可能会包含各类敏感信息,如账户、口令等
  • 集中管理日志
    • 使用日志服务器便于日志的统一收集、整理和分析
    • 杜绝日志信息的意外丢失、恶意篡改或删除

日志存放位置

系统日志保存位置:

  • /var/log --> variable可变化的

主要日志文件介绍:

  • 内核及公共消息日志:/var/log/messages
  • 计划任务日志:/var/log/cron
  • 系统引导日志:/var/log/dmesg (系统在启动的过程中加载了哪些内核模块的信息,对一些硬件的识别加载的驱动等)
  • yum的日志:yum.log;dnf.log
  • ftp的日志:xferlog
  • boot.log:启动系统的过程之中出现的问题和正常的情况
  • /var/log/secure:与用户验证相关的安全性事件,如ssh
  • /var/log/lastlog:记录最近登录过系统的用户信息
  • /var/log/wtmp:用户登录、注销及系统开、关机事件
  • /var/run/utmp:当前登录的每个用户的详细信息

由相应的应用程序独立进行管理

  • Web服务:/var/log/httpd/
    • access.log、error.log
  • 代理服务:/var/log/squid/
    • access.log、cache.log、squid.out、store.log
  • nginx服务:/var/log/nginx

分析工具

  • 文本查看、grep过滤检索
  • awk、sed
  • ELK 日志分析系统 --> 做日志服务器 备份
  • Kafka

常用命令

  • 用户登录分析命令:who、w、user、last、lastlog、ac
  • 主动记日志工具 logger:从命令行直接向系统日志文件写入一行信息
    • [root@localhost rsyslog.d]# ping www.baidu.com -c 4|logger -it "this is a test" -p authpriv.info

      [root@localhost rsyslog.d]# tail -f /var/log/secure

      Jan 16 14:40:15 localhost sshd[71138]: pam_unix(sshd:session): session closed for user root

      Jan 16 17:33:30 localhost journal: this is a test[111746]: PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.

      Jan 16 17:33:30 localhost journal: this is a test[111746]: 64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=31.3 ms

      Jan 16 17:33:31 localhost journal: this is a test[111746]: 64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=128 time=31.7 ms

      Jan 16 17:33:32 localhost journal: this is a test[111746]: 64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=3 ttl=128 time=30.0 ms

      Jan 16 17:33:33 localhost journal: this is a test[111746]: 64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=4 ttl=128 time=30.7 ms

      Jan 16 17:33:33 localhost journal: this is a test[111746]:

      Jan 16 17:33:33 localhost journal: this is a test[111746]: --- www.a.shifen.com ping statistics ---

      Jan 16 17:33:33 localhost journal: this is a test[111746]: 4 packets transmitted, 4 received, 0% packet loss, time 3008ms

格式:

时间+地点+任务+事件

  • 事件发生的日期事件
  • 发生此事件的主机名
  • 启动此事件的服务名称或指令与函式名称
  • 该讯息的实际数据内容

日志的分类:

  • 内核及系统日志
    • 由系统服务rsyslog统一进行管理,日志格式基本相似
    • ssh会将日志外包给这个rsyslog
    • [root@localhost rsyslog.d]# vim /etc/ssh/sshd_config
  • 用户日志
    • 记录系统用户登录及退出系统的相关信息
  • 程序日志
    • 由各种应用程序独立管理的日志文件,记录格式不统一

rsyslog服务

  • Linux系统里默认的专门记录日志的服务
  • 专门记录系统所产生的各项讯息, 包括 /var/log/messages 内的几个重要的登录档。
  • 主要程序:/sbin/rsyslogd
  • 配置文件:/etc/rsyslog.conf

下面介绍一下

系统记录设备类型  SyslogFacility​​​​​​

服务类别说明

mail

邮件日志

cron

计划任务日志

authpriv

用户认证时产生的日志,如login命令、su命令

local0-local7

由自定义程序时使用

news

网络新闻传输协议(nntp)产生的消息

user

用户进程

kern

系统内核消息

daemon

某些守护进程

 

日志级别 Loglevel

0

EMEGR(紧急) emergencies

会导致主机系统不可用的情况

1

ALERT(警告)

必须马上采取措施解决的问题

2

CRIT(严重) critical

比较严重的情况

3

ERR(错误) error

运行出现错误

4

WARNING(提醒)

可能会影响系统功能的事件

5

NOTICE(注意)

不会影响系统但是值得注意

6

INFO(信息)

一般信息

7

DEBUG(调试)

程序或系统调试信息

8

none

没有优先级,不记录任何日志消息

配置文件 /etc/rsyslog.conf 的语法

配置文件内容格式一般为:

设备类型[.=!]日志级别                 日志级别记录的文件名或装置或主机

  • . :记录大于等于后面的日志级别;如mail.info 代表只要是 mail 的信息,而且该信息等级严重于info(包括info),就会记录下来
  • .= :代表等于,即只记录等于后面的级别日志
  • .!=:代表不等于,即只记录不等于后面的级别日志

ps:

  • 上图第一行大概意思是:由于 mail, authpriv, cron 等类别产生的讯息较多, 且已经写入底下的数个文件中,因此在 /var/log/messages 里面就不记录这些项目。除此之外的其他讯息都写入 /var/log/messages 中,所以我们说 /var/log/messages 文件十分重要
  • 在上图关于 mail 的记录中,在记录的文件 /var/log/maillog 前面还有个减号『 - 』是干嘛用的?由于邮件所产生的讯息比较多,因此我们希望邮件产生的讯息先储存在速度较快的内存中(buffer) ,等到数据量够大了才一次性的将所有数据都填入磁盘内,这样将有助于登录文件的存取性能。 只不过由于讯息是暂存在内存内,因此若不正常关机导致登录信息未回填到登录档中,可能会造成部分数据的遗失。

消息发送位置(即这个日志级别记录后放在哪里)

通常都是记录在文件,但也可以在装置等如下地方中。

  • 本地文件:通常就是文件的绝对路径
  • 打印机:例如 /dev/lp0 这个打印机装置
  • 用户名称:显示给用户
  • 远程主机:如@202.100.100.1
  • *:所有在线的人,类似于wall这个命令

 

日志轮转

  • 作用:方便有效地管理日志,防止日志文件过大
  • 命令:logrotate --> 专门帮助其他程序轮转日志的工具
    • 配合一个配置文件,再加上计划任务,每天执行一次来达到循环的效果
    • 日志的轮转对日志的维护有着很重要的意义,可以作为一种备份策略,又可以方便管理员查阅日志

  • 日志轮转主配置文件:/etc/logrotate.conf
  • 子配置文件:/etc/logrotate.d/*/etc/logrotate.d//etc/logrotate.d/

/etc/logrotate.conf配置文件主要参数和功能

参数

功能

compress

通过gzip 压缩转储以后的日志

nocompress

不需要压缩时,用这个参数

copytruncate

用于还在打开中的日志文件,把当前日志备份并截断

nocopytruncate

备份日志文件但是不截断

create mode owner group

转储文件,使用指定的文件模式创建新的日志文件

nocreate

不建立新的日志文件

delaycompress

和 compress 一起使用时,转储的日志文件到下一次转储时才压缩

nodelaycompress

覆盖 delaycompress 选项,转储同时压缩。

errors address

转储时的错误信息发送到指定的 Email 地址

missingok 如果日志丢失,不报错继续记录下一个日志

ifempty

即使是空文件也转储,这个是 logrotate 的缺省选项。

notifempty

如果是空文件的话,不转储

mail address

把转储的日志文件发送到指定的E-mail 地址

nomail

转储时不发送日志文件

olddir directory

转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

noolddir

转储后的日志文件和当前日志文件放在同一个目录下

prerotate/endscript

在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行

postrotate/endscript

在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

daily

指定转储周期为每天

weekly

指定转储周期为每周

monthly

指定转储周期为每月

rotate count

指定日志文件删除之前转储的次数,0 指没有备份,5 指保留 5 个备份

dateext 使用当期日期作为命名格式
dateformat .%s            配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
size(或minsize) log-size 当日志文件到达指定的大小时才转储,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).

当日志文件 >= log-size 的时候就转储,如果设置了size, daily, weekly,monthly 等指令无效,所以size的优先级比较高

[root@localhost rsyslog.d]# cd /etc/logrotate.d/

[root@localhost logrotate.d]# ls

bootlog  chrony  firewalld  syslog  vsftpd  wpa_supplicant  yum

[root@localhost logrotate.d]# cat chrony

/var/log/chrony/*.log {        --> 指定轮转的日志文件

    missingok    --> 当日志文件不存在时,继续进行,不报错误

    nocreate     --> 如果日志文件未创建,不轮转(not create)

    sharedscripts  --> 配合 prerotate 和 postrotate 使用

    postrotate   

        /usr/bin/chronyc cyclelogs > /dev/null 2>&1 || true

    endscript

}

 

 下面给出nginx的日志轮转配置,自行理解一下

# 可以结合我上表所给的 参数和功能 理解此文件具体每行的含义
[root@kafka01 logrotate.d]# cat nginx
/var/log/nginx/*log {
    create 0664 nginx root
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate  --> 轮转后做什么 --> 重启nginx
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

找到计划任务配置文件,这里可以看出 logrotate 会通过计划任务每天执行

[root@kafka01 cron.d]# cd /etc/cron.daily/
[root@kafka01 cron.daily]# ls
logrotate
[root@kafka01 cron.daily]# cat logrotate 
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit $EXITVALUE

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用\[1\]:通过编辑/etc/rsyslog.conf、或者/etc/rsyslog.d/*.conf(因为/etc/rsyslog.conf中的$IncludeConfig /etc/rsyslog.d/*.conf而生效)等配置rsyslog的行为。在这里,您可以指定由过滤器和操作部件组成的全局指令,模块和规则。\[1\]引用\[2\]: rsyslog服务是Linux系统里默认的专门记录日志的服务,它记录系统所产生的各项信息,包括/var/log/messages内的几个重要的日志文件。\[2\]引用\[3\]: 系统日志的保存位置是/var/log,其中包括了一些重要的日志文件,如内核及公共消息日志/var/log/messages、计划任务日志/var/log/cron、系统引导日志/var/log/dmesg等。\[3\] 根据您提供的命令"grep -E "*.* |@" /etc/syslog.conf /etc/rsyslog.conf",结果显示为空表示在/etc/syslog.conf和/etc/rsyslog.conf这两个文件中没有找到匹配"*.* |@"的内容。这可能意味着这两个文件中没有包含该特定的字符串或者该字符串的格式不正确。请注意,grep命令用于在文件中搜索匹配指定模式的行,并将其输出显示在终端上。如果没有找到匹配的行,它将不会显示任何结果。 #### 引用[.reference_title] - *1* [RHEL7-rsyslog.conf](https://blog.csdn.net/Demi_nini/article/details/116458878)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [日志日志存放位置相关文件介绍——SyslogFacility日志等级介绍配置文件 /etc/rsyslog.conf语法...](https://blog.csdn.net/m0_57053326/article/details/122531280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值