系统自带的日志管理工具-rsyslogd(代码片段)

huihuangyan huihuangyan     2022-12-12     499

关键词:

一.日志管理简介

1.什么是日志
  系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。系统日志包括系统日志、应用程序日志和安全日志。
 
2.日志服务
  在CentOS6.x中日志服务已经由rsyslogd取代了原先的syslogd服务。rsyslogd日志服务更加先进,功能更多。但是不论该服务都是用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学起来基本和syslogd服务一致。
 
3.rsyslogd的新特点
  a>.基于TCP/IP网络协议传输日志信息;
  b>.更安全的网络传输方式;
  c>.有日志消息的及时分析框架;
  d>.后台数据库;
  e>.配置文件中可以写简单的逻辑判断;
  f>.与syslog配置文件相兼容;
确定rsyslogd服务是否启动的方法如下:
[root@10e0e0e12 ~]# ps aux | grep rsyslogd | grep -v grep
root       7042  0.0  0.8 227012  8548 ?        Ssl  Sep26   0:22 /usr/sbin/rsyslogd -n
4.常见的日志的作用
日志名称 日志路径 日志功能 备注
定时任务日志 /var/log/cron 记录了系统定时任务相关的日志。  
打印日志 /var/log/cups/ 记录打印信息的日志  
内核日志 /var/log/dmesg 记录了系统在开机时内核自建的信息。也就是使用dmesg命令直接查看内核自检信息。  
登录失败日志 /var/log/btmp 记录错误登录的日志。这个文件是二进制文件,不能直接用vi查看,而是要用lasth命令查看例如:“[root@yinzhengjie ~]# lastb”回车即可。 如果有人攻击你的电脑就这个文件就会有大量的日志信息。
最后登录日志 /var/log/lastlog 记录系统中所有用户最后一次的登录时间的日志。这个文件也是二进制文件,不能直接vi,而要用lastlog命令查看,例如:“[root@yinzhengjie ~]# lastlog ”回车即可。  
邮件日志 /var/log/maillog 记录邮件信息  
系统日志 /var/log/messages 记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件。 该日志文件默认还会记录一些服务日志哟。
安全日志 /var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码程序的都会记录。比如说系统的登录,ss的登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。  
登录日志 /var/log/wtmp 永久记录所有用户的登录,注销信息,同时记录系统的启动,重启,关机时间。同样这也是一个二进制文件,不能直接vi打开,而需要last命令来查看。“[root@yinzhengjie ~]# last”  
当前登录日志 /var/run/utmp 记录当前已经登录的用户的信息,这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样这个文件也不能直接用vi打开,而是要用,w,who,users等命令来查询。  
 5.yum方式安装的日志
  除了系统默认的日志之外,采用RPM方式(或yYUM方式)安装的系统服务也会默认把日志记录在“/var/log”目录中(源码包安装的服务日志是在源码包指定目录中)。不过这些日志不是由rsyslogd服务来记录和管理的,而在各个服务使用自己的日志管理文档来记录自身日志。
日志名称 日志路径 日志功能
Apache日志 /var/log/httpd/ RPM包安装的Apache服务端默认日志目录
邮件日志 /var/log/mail/ RPM包安装的邮件服务的额外日志目录
Samba日志 /var/log/samba/ RPM包安装的Samba服务的日志目录
安全服务日志 /var/log/sssd/ 守护进程安全服务目录
 

二.rsyslogd日志服务

1.基本日志格式包含以下四列:
  a>.事件产生的事件;
  b>.发生事件的服务器的主机名;
  c>.产生事件的服务名或程序名;
  d>.事件的具体信息;
技术图片

 2./etc/rsyslog.conf 配置文件

定义格式如下:
  服务名称[连接符号]日志等级 日志存放位置
[root@10e0e0e12 ~]# cat /etc/rsyslog.conf|grep -v  ^#|grep ^.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure         #日志等级
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
b>.服务名称及其含义说明
服务名称 说明
auth 安全和认证相关信息( 不推荐使用authpriv替代)
authpriv 安全和认证相关信息(私有的)
cron 系统定时任务cront和at产生的日志
daemon 个各个守护进程相关的日志
ftp ftp守护进程产生的日志
kern 内核产生相关的日志(不是用户进程产生的)
local0-local7 为本地服务使用预留的服务
lpr 打印产生的日志
mail 邮件收发信息
news 与新闻服务器相关的日志
syslog 有syslog服务产生的日志信息(虽然服务名称已经改为rsyslogd,但是很多配置都还是沿用了syslogd的,这里名没有修改服务名)
user 用户等级类别的日志信息
uucp uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来也常用在新闻组服务中。
c>.连接符号
连接符号可以识别为:
  “*”代表所有日志等级,比如“authpriv.*”代表authpriv认证信息服务产生的日志,所有的日志等级都记录。
  “.”代表只要比后面等级高的(包含该等级)日志都记录下来。比如:“cron.info”代表cron服务产生的日志,只要日志等级大于等于inifo级别,就记录。
  “.=”代表值记录所需等级的日志,其他等级的都不记录。比如:“*.=emerg”代表任何服务日志产生的日志,只要记录是emerg等级就记录。这种用法极少,了解就好。
  “.!”代表不等于,也就是除了该等级的日志外,其他等级的日志都记录。
 
d>.日志等级说明
等级名称 说明
debug 一般的调试信息说明
info 基本的通知信息
notice 普通信息,但是有一定的重要性
warning 警告信息,但是还不会影响到服务或系统的运行
err 错误信息,一般达到err等级的信息以及可以影响到服务或系统的运行了。
crit 临界状况信息,比err等级还要重要
alert 警告状态信息,比crit还要严重,必须立即采取行动
emerg 疼痛等级信息,系统以及无法使用了
e>.日志记录位置
  日志文件绝对路径,如“/var/log/secure”
  系统设备文件,如“/dev/lp0”
  转发给远程主机,如"@192.168.3.210:5200"
  用户名,如“root”
  忽略或丢弃日志,如“~”
 
三.日志轮替
1.日志切割和日志替换
日志切割:
  就是把旧的日志文件移动并改名,同时建立新的日志文件。那么如何命名呢?主要依靠/etc/logrotate.conf配置文件的” dateext ”(系统默认是有该参数的)。如果配置文件拥有“dateext”参数,那么日志就会用日期来作为日志文件的后缀,.如果配置文件啊当中没有“dateext”参数,那么日志文件就需要进行改名。
日志替换:
  当旧的日志超过保存的范围之后,就会自动删除时间较早的日志。
 
2.常用的logrotate.conf参数详解
参数 说明
compress 启用压缩,指的是轮替后的旧日志,这里默认用的是gzip压缩的
compressoptions 以gzip -9的模式压缩
uncompresscmd 解压日志,默认是gunzip
daily 每天轮替选项
dateext 轮替的日志文件会附加上一个短横线和YYYYMMDD格式的时间戳
delaycompress 将以前的日志文件压缩推迟到下一次轮替
ifempty 即使日志文件是空的也轮替
mail 将轮替后的文件发送到指定E-mail地址
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断,开始轮替
mailfirst/maillast 向邮件发送轮替文件/轮替后历史文件(默认)
monthly 一个月轮替一次
nocompress 如果在logrotate.conf中启用了压缩,这里是做不用压缩的参数
nomail 不发送邮件到任何地址
ifempty 如果日志时空的就不轮替
olddir directory 轮替后日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
postrotate/endscript 在做完轮替后的命令,两个关键字必须单独成行,使用的操作在2者之间相当于分组“”,注意的使用外部指令时要用绝对路径
prerotate/endscript 在做轮替前的命令,同上
rotate count 轮替最多保留之前的数据几次,超出的将被删除或邮件接收,设为0则不保存
size size 当日志增长到指定大小的时候开始轮替,它不会考虑,例如:size 100k
start count 轮替文件名基于这个数字。
例如,指定0时,原日志文件轮替的备份文件以.0为扩展名,如果指定9,就直接从.9开始跳过0-8
然后再继续向后轮替rotate指定的次数。
weekly 如果当前的星期几比上次轮替的星期几少,或者过了一个多星期,就会发生轮替通常是在每周的第一天轮替,如果logrotate不是每天运行的,会在第一次有机会时进行轮替。
yearly 如果当前年份不同于上次轮替的年份,则进行日志轮替
create mode owner group 在轮替动作之后,postrotate脚本执行之前,立即使用刚轮替的日志文件名创建日志文件。
MODE 指定日志文件的权限(0660之类)
OWNER 指定日志文件的属主
GROUP 指定日志文件的属组
extension ext 日志文件可在轮替后使用指定的EXT扩展名。如果使用压缩,通常EXT后还会加上压缩文件的扩展名,通常是.gz。例如想把mylog.foo轮转为mylog.1.foo.gz而不是mylog.foo.1.gz
 
3.将Apache日志加入轮替
  其实在一般情况下,只有源码安装的软件包才需要我们手动指定轮替,其他yum安装的或是rpm方式安装的全部都是默认的。相信玩Linux的老鸟们早就知道在“[root@10e0e0e12 ~]# ls /var/log/”这个目录下回自动有轮替的文件生成,然而我们并没有配置,是因为rsyslogd服务是开机自启的,而且任务的完成依赖于周期性计划任务。
  由于我的Apache是源码安装的,因此我需要手动指定轮替,生产环境中源码安装Apache之后,一定要做轮替,因为你不做轮替的话所有的日志会默认保存在一个文件中的,尤其是游戏公司的网站,一天的访问量大的话可能就得用到1G的磁盘大小。如果文件过大是很难进行查看的哟!下面是我配置细节
[root@10e0e0e12 ~]# more /etc/logrotate.conf  | grep -v ^#  | grep -v ^$
weekly                                ----->定义全局变量,默认是每周生效。
rotate 4                                ------>保留四个日志
create                                ------->创建新日志
dateext                                ------->用日期来作为日志文件的后缀
include /etc/logrotate.d                    ------->加载配置文件
/var/log/wtmp                             ------->定义对/var/log/wtmp日志的轮替
    monthly                            ------>按照月进行轮替,并不会被上面定义的weeky影响。
    create 0664 root utmp            
    minsize 1M                       
    rotate 1                         
                                    
/var/log/btmp                             -------->定义对/var/log/btmp日志的轮替。
    missingok
    monthly
    create 0600 root utmp
    rotate 1

 

 
 
 





linux日志管理(代码片段)

日志管理日志管理日志进程rsyslogd常见的日志文件配置rsyslogd主配置文件RULESFACILITY&LEVELfacility设备level级别日志轮转logrotate按照配置进行轮转日志管理日志进程rsyslogdrsyslogd:系统专职日志程序,处理大部分日志记录,系... 查看详情

linux日志管理(代码片段)

日志管理日志管理日志进程rsyslogd常见的日志文件配置rsyslogd主配置文件RULESFACILITY&LEVELfacility设备level级别日志轮转logrotate按照配置进行轮转日志管理日志进程rsyslogdrsyslogd:系统专职日志程序,处理大部分日志记录,系... 查看详情

rsyslogd日志管理

课程大纲1.日志管理简介2.rsyslogd日志服务3.日志轮替日志管理就是可以保存系统所有的想记录的信息 首先要确定服务启动。psaux|greprsyslogd#查看服务是否启动chkconfig--list|greprsyslog#查看服务是否启动rsyslog的配置文件位置:/ect/rs... 查看详情

docker容器中使用rsyslogd

rsyslogd作为CentOS:7系统自带的日志管理工具,为很多服务提供了便捷的日志管理接入方案,然而 CentOS:7的官方镜像 默认是不支持rsyslogd的。我们做个实验:1)启动测试容器dockerrun-it--name=test-syslogcentos:7/bin/bash2)安装rsyslogdy... 查看详情

linux实操篇——日志管理(代码片段)

目录1.日志介绍2.日志管理服务 rsyslogd3.配置文件/etc/rsyslog.conf4.查看日志文件中的日志5.自定义日志6.日志轮替什么是日志轮替日志轮替配置文件配置文件中各代码段参数含义为自己的日志单独指定轮替规则日志轮替机制查看内存... 查看详情

操作系统日志管理(代码片段)

...var/log/Xorg记录XWindows启动时产生的日志信息rsyslog服务描述rsyslogd:一个系统自带的进行日志管理的程序。它定义了日志的格式、日志信息的分类,例如:关于什么方面的内容被放在/var/log的哪个文本中。rsyslog.serviceÿ... 查看详情

linuxlinuxcentos6日志服务rsyslogd日志服务(代码片段)

1.概述在CentOS6.x中日志服务已经由rsyslogd取代了原先的syslogd服务。rsyslogd日志服务更加先进,功能更多。但是不论该服务的使用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学习起来基本和syslogd服务一致。rsyslogd的... 查看详情

linux自带logrotate日志切割工具配置详解(代码片段)

Logrotate程序是一个日志文件管理工具。用于分割日志文件,压缩转存、删除旧的日志文件,并创建新的日志文件,下面就对logrotate日志轮转的记录:1.1Logrotate配置文件介绍Linux系统默认安装logrotate,默认的配置文件:/etc/logrotate.c... 查看详情

centos-日志rsyslogd

常见日志/var/log/cron系统定时任务日志/var/log/dmesg系统开机时内核自检信息,也可以使用dmesg命令查看/var/log/btmp登陆错误信息,这是二进制文件,要使用lastb命令查看/var/log/lastlog记录系统中所有用户最后一次登陆事件的日志。这是... 查看详情

20181219日志管理基础

...管理logrotate日志轮转采集----->分析一、处理日志的进程rsyslogd:绝大部分日志记录,和系统操作有关,安全,认证sshd,su,计划任务at,cron...httpd/nginx/mysql:可以以自己的方式记录日志[[email protected]~]#psaux|greprsyslogdroot7170.00.021975... 查看详情

linux日志管理神器之logrotate日志分割(代码片段)

...不太灵活,这时需要日志神器logrotate。logrotate工具是系统自带为了方便进行日志管理而产生的一个工具。系统会定时运行logrotate,一般是每天一次。也是基于定时任务cron 查看详情

linux系统日志怎么查看

...为系统中的基本服务提供命令使用统计3、错误日志:由rsyslogd守护程序执行,各种系统守护进程、用户程序和内核通过rsyslogd守护程序向文件/var/log/messages报告值得注意的时间。另外有许多linux程序创建日志,像HTTP 查看详情

linux系统的日志管理(代码片段)

Linux系统的日志管理一、systemd-journald服务1.systemd-journald介绍2.系统日志默认保存路径3.systemd-journald的配置文件修改①配置文件目录②配置文件修改4.检索日志消息①journalctl命令的相关选项②示例二、rsyslog服务1.日志保存相关路径2... 查看详情

第十三章日志管理及安全(代码片段)

一、日志文件说明日志的功能用于记录系统、程序运行中发生的各种事件通过阅读日志,有助于诊断和解决系统故障日志文件的分类内核及系统日志由系统服务syslog统一进行管理,日志格式基本相似用户日志记录系统用户登录及... 查看详情

日志管理(代码片段)

日志的功能系统和程序的“日记本”记录系统、程序运行中发生的各种事件通过查看日志,了解及排除故障信息安全控制的“依据”常见的系统日志文件/var/log/messages记录内核消息、各种服务的公共消息/var/log/dmesg记录系统启动过... 查看详情

springboot添加日志管理(代码片段)

...且输出到磁盘,然后按天归档,或者日志的切分什么的,自带的日志仅仅具有简单的功能,百度了一番,总结如下,适合大多数的应用场景二。springboot的pom文件都会引一个parent  <parent><groupId>org.springframework.boo 查看详情

操作系统日志管理(代码片段)

文章目录系统日志文件rsyslog服务描述rsyslog日志类别日志信息等级rsyslog符号解释日志文件轮询logrotatesystemd-journaldsystemd-journald.servicejournalctl查看syslog日志分析syslog常见服务dmesg报错查看系统日志文件常见的日志文件文件路径包含... 查看详情

操作系统日志管理(代码片段)

文章目录系统日志文件rsyslog服务描述rsyslog日志类别日志信息等级rsyslog符号解释日志文件轮询logrotatesystemd-journaldsystemd-journald.servicejournalctl查看syslog日志分析syslog常见服务dmesg报错查看系统日志文件常见的日志文件文件路径包含... 查看详情