日志rsysload服务与日志轮替学习

管理

systemctl   status  rsyslogd   ,   ps -e |grep rsysload   查看rsysload服务状态
systemctl   restart ,start,stop  服务名称                 重启服务,开启服务,停止服务
systemctl list-unit-files | grep rsysload               查看是否开启了rsysload 服务自启动 
systemctl   enable  rsysload   加入启动项
netstat -an | grep 22          检查22号端口是否开启监听  



日志概念

日志服务rsyslog取代了原先的syslogd rsyslogd特点: 1.基于Tcp网络协议传输日志信息 2.更安全的网络传输方式 3.有日志消息的及时分析框架 4.后台数据库 5.配置文件中可以写简单的逻辑判断 6.与syslog配置文件相兼容

日志格式:会包含事件产生的时间,发生事件的服务器的主机名,产生事件的服务名或程序名,事件的具体信息。



日志文件

日志文件 说明
/var/log/cron 记录了系统定时任务的日志信息
/var/log/cups/ 记录打印的日志信息
/var/log/dmesg 记录系统开机时内核自检的日志信息
/var/log/btmp 记录错误登陆的日志信息,该文件是二进制,用lastb命令直接查看
/var/log/lastlog 记录系统所有用户最后一次登陆时间的日志。该文件是二进制文件,用lastlog命令直接查看
var/log/mail/ 记录邮件信息
/var/log/messages 记录系统中绝大多数重要信息
/var/log/secure 记录验证和授权方面的信息,添加用户,修改密码,sudo授权 都会记录
/var/log/wtmp 永久记录所有用户的登陆,注销信息,记录重启,关机事件 用last命令直接查看
/var/run/utmp 记录当前已经登陆的用户的信息,查看w命令直接查看




比如apache服务

/var/log/httpd/       apache 服务 /var/log/mail/       apache邮件服务额外服务
/var/log/samba/       apachesamba服务的日志目录 /var/log/sssd/       apache守护进程安全 服务目录

注:除了系统默认日志外,采用rpm包安装的服务也放在/var/log目录下;源码包安装的在指定目录下。




日志 /etc/rsyslog.conf配置文件

格式: 服务名称 [连接符号] 日志等级 日志记录位置
意义:  认证相关服务.所有日志等级     记录在/var/log/secure

服务名称 说明 连接符号 说明 等级名称 说明
auth 安全和认证相关消息 * 代表所有日志等级,若该服务指定该连接符,那么该服务产生的所有日志等级都记录 debug 一般调试信息的说明
authpriv 安全认证相关消息(私有的) . 比如a.info 代表cron服务产生的日志,只要日志等级大于等于info等级都记录 info 基本的通知说明
cron 系统定时任务cront和at产生的日志 .= 只记录所需等级的日志,比如a.=emerg,a服务产生的日志只记录emerg notice 普通信息,但是有一定的重要性
daemon 和各个守护进程相关产生的日志 warning 警告信息,但是不影响服务器系统的运行
ftp ftp守护进程产生的日志 err 错误信息,一般到err等级信息就会影响服务器系统的运行
kern 内核产生的日志(不是用户进程产生的) crit 临界状况信息,比err等级还要严重
local(10-17) 为本地使用预留的服务 alert 警告状态信息,比crit还要严重,必须立即采取行动
lpr 打印产生的日志 emerg 疼痛等级信息,系统已经无法使用了
mail 邮件收发信息
news 与新闻服务器相关的日志
syslog 有syslogd服务产生的日志信息(虽然服务名改名rsyslogd,许多配置还是用syslogd)
user 用户等级类别的日志信息
uucp uucp子系统的日志信息,前期用于数据传递的协议,后来用在新闻组服务器中

日志记录位置

  • 绝对路径,比如 " /var/log/secure"
  • 系统设备文件,比如 " /dev/lp0"
  • 转发给远程主机,比如 " @1992.168.105.1:54"
  • 用户名,如 "root"
  • 忽略或丢弃日志,如 "~"
[root@aubin aubin]# cat /etc/rsyslog.conf
# 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

# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure

# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog


# Log cron stuff
cron.*                                                  /var/log/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



轮替logrotate

日志轮转原因: 日志文件时间一长,占用越来越多。可以通过日志轮替处理 轮替概念:日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除。

①若配置文件中有 "dateext"参数,则日志会用日期作为日志文件的后缀名,不需要对日志文件改名,删除多余的日志文件即可。
②若配置文件中没有 "dateext"参数,则第一次轮转日志会将当前日志改名为一个secure.1,并创建新的secure,

第二次将当前的secure改名为secure.1,之前的secure.1改名为secure.2, 就形成了 secure --> secure.1 --> secure.2 --> secure.3



logrotate文件参数

logrotate的配置文件的常用参数
时间参数                 日志保留的份数                                  错误处理                      权限处理                           脚本调用
yearly - 按年转存日志    rotate 5 转存保留5份日志           missingok - 转存时忽略任何错误       create  指定转存日志权限         prerotate/endscript -指定日志转存前调用脚本      
monthly - 按月转存日志                                                                       eg: create 644 root root       postrotate/endscript - 指定日志转存后调用脚本                                                                    
weekly - 按周转存日志     日志的压缩                                                                                         eg:  prerotate    
daily - 按日转存日志     compress - 转存的日志使用gzip压缩                 空日志处理                                                  脚本.sh
                       delaycompress- 不压缩最近一次的日志         notifempty - 不转存空日志                                        endscript

logrotate的配置文件

[root@aubin aubin]# vim /etc/logrotate.conf
weekly
# 每周对日志文件进行一次轮替
# keep 4 weeks worth of backlogs
rotate 4
#共保存4份日志文件,当建立新的日志文件时,旧的将会被删除
# 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/ 目录中所有的子配置文件。也就 是说会把这个目录中所有子配置文件读取进来, 

#下面是单独设置,优先级更高。
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp { 
    monthly # 每月对日志文件进行一次轮替 
    create 0664 root utmp # 建立的新日志文件,权限是 0664 ,所有者是 root ,所属组是 utmp 组         
    minsize 1M   # 日志文件最小轮替大小是 1MB 。也就是日志一定要超过 1MB 才会轮替,否则就算时间达到一个月,也不进行日志转储 
    rotate 1 # 仅保留一个日志备份。也就是只有 wtmp 和 wtmp.1 日志保留而已
} 

/var/log/btmp {
    missingok # 如果日志不存在,则忽略该日志的警告信息
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.                                                         

补充:
1.mail address  当日志轮替时,输出内容通过邮件发送到指定的邮箱地址 154548@126.com
2.notifempty: 如果日志为空文件,则不进行日志轮替
3.minsize大小:日志轮替的最小值,日志达到最小值才会轮替,时间到了也没用
4.size大小:日志只有大于指定大小才能进行日志轮替,而不是按照时间轮替
5.dateext:使用时间作为日志轮替文件的后缀。



logrotate命令

格式:logrotate 选项 配置文件名
选项 功能
-v 显示日志轮替过程
-f 强制进行日志轮替,不管日志轮替的条件是否符合。

显示强制轮替的信息

[root@aubin aubin]# logrotate -fv /etc/logrotate.conf
reading config file /etc/logrotate.conf
including /etc/logrotate.d




某软件日志的配置

vim /etc/logrotate.d/xxxx

注: 日志的轮转一般是/etc/logrotate.conf默认设置,若转储的日志文件没有特殊配置,则遵循默认设置的参数。

比如

1.软件包的安装
yum install -y logrotate

2.定位日志配置文件
ls -l /var/log/wtmp
-rw-rw-r--. 1 root utmp 46464 Feb  9 08:48 /var/log/wtmp

3.编辑配置文件
vim /etc/logrotate.d/wtmp
配置如下:
/var/log/wtmp {
    yearly
    rotate 5
    compress
    delaycompress
    missingok
    notifempty
    create 644 root utmp
}
注:没有就创建,配置文件名称与日志文件名称一致(方便管理)

4.测试配置文件
logrotate -d /etc/logrotate.d/wtmp

5.手动运行配置文件(可选)
logrotate /etc/logrotate.conf 或 logrotate /etc/logrotate.d/wtmp

注:
prerotate和postrotate主要用于在日志轮替的同时,执行指定的脚本,一般用于日志轮替之后重启服务。
这里强调,如果你的日志是写入rsyslog服务的配置文件的,那么把新日志加入logrotate后,一定要重启rsyslog服务,否则你会发现虽然新日志建立了,但是数据还是写入了旧的日志当中。
那是因为虽然logrotate知道日志轮替了,但是rsyslog服务却并不知道。
同理,如果你的日志不是被rsyslog管理,如源码包安装的Apache、Nginx等服务,则需要重启Apache或Nginx服务,否则日志也不能正常轮替。
所以通常操作的方式是,日志文件轮替完成之后,重启一下服务器,所有的相关服务都进行了重启,从而使轮替后的配置文件都能正常适用。

参考博客

https://blog.51cto.com/cmdschool/1896025
http://c.biancheng.net/view/1106.html
https://blog.csdn.net/liuyuelinjiayou/article/details/108001182

每日一评:どんなに苦しくても大変でも、じっと辛抱すれば必ず報われる。

posted @ 2020-12-05 18:06  加油酱  阅读(159)  评论(0编辑  收藏  举报