基本介绍
- 日志文件是重要的系统文件,记录许多重要的系统事件,如:用户登录信息、系统启动信息、系统的安全信息等
/var/log目录是系统日志文件的保存位置- centos7.6日志管理服务是
rsyslogd, centos6.x的是syslogd,两者兼容。
常用的日志文件:
配置文件
配置文件,在/etc/rsyslog.conf,里面存放规则方便那些东西放在哪里。
格式
格式为*.*,第一个*表示日志类型,第二个*表示日志级别。
- 日志类型
类型 说明 authpam产生的日志authprivssh、ftp等登录信息的验证信息corn时间任务相关 kern内核 lpr打印 mail邮件 mark(syslog)-rsyslog服务内部的信息,时间标识 news新闻组 user用户程序产生的相关信息 uucpunix to nuix copy主机之间的相关通讯 local 1-7自定义的日志设备 - 日志级别
级别 说明 debug有调试信息 info一般信息日志,最常用 notice最具有重要性的普通条件的信息 warning警告级别 err错误级别,阻止某个功能或者模块不能正常工作的信息 crit严重级别,阻止整个系统或者整个软件不能正常工作的信息 alert需要立即修改的信息 emerg内核崩溃等重要信息 none什么也不做 从上到下,级别越来越高,记录信息越来越少
前提
rsyslogd是否运行: ps aux | grep "rsyslogd" | grep -v "rsyslogd
查看日志
- 注意当前用户权限
- 使用命令查看,可以是
cat/more/less等
比如:
cat /var/log/secure
Jan 3 20:39:18 rH7-1 sshd[10878]: Accepted password for lczmx from 192.168.255.1 port 19375 ssh2
日志格式:时间 主机 由哪个程序(服务)发生 时间描述信息
实例:
- 修改配置文件,使用一个自定义的文件接受并保存信息
- 查看该文件的日志
# 在/etc/rsyslog.conf中加入
*.* /var/log/all.log
# 在/var/log下创建all.log
touch all.log
# 用ssh登录到该主机,然后查看日志,假如没有信息,可以restart一下rsyslog.service
grep "sshd" /var/log/all.log
Received disconnect from 192.168.255.1 port 2226:11: disconnected by user
Disconnected from 192.168.255.1 port 2226
pam_unix(sshd:session): session closed for user lczmx
Accepted password for lczmx from 192.168.255.1 port 2248 ssh2
pam_unix(sshd:session): session opened for user lczmx by (uid=0)
日志轮替
把旧的日志文件移动并重命名,同时建立空的日志文件,当旧的日志文件超过保存范围后删除。
如何轮替需要设置配置文件:/etc/logrotate.conf
配置文件参数
| 参数 | 说明 |
|---|---|
daily |
每天 |
weekly |
每周 |
monthly |
每月 |
rotate 数字 |
保留几份,0表示没有备份 |
compress |
轮替时,旧的日志是否压缩 |
create mode owner group |
建立新日志,指定权限、所有者、所属组 |
mail address |
轮替时,输出内容通过邮件发送到指定邮件地址 |
missingok |
日志不存在时,忽略该日志的警告信息 |
notifempty |
日志为空文件时,不进行日志轮替 |
minsize |
轮替最小值,只有达到最小值了才会轮替 |
size |
日志大于指定大小时轮替,不是按照时间轮替 |
dateext |
以日期作为轮替文件后缀 |
sharedscripts |
此关键词后的脚本只执行一次 |
prerotate/endscript |
轮替前执行脚本 |
postrotate/endscript |
轮替后执行脚本 |
dateext参数:以日期命名,需要指定保存日志的个数,超出时,删除多余的日志文件。- 假如没有
dateext参数,默认以xx.1、xx.2的格式命名,生成新的日志文件时,数字会往后推。
/etc/logrotate.conf文件:
# see "man logrotate" for details
# rotate log files weekly 每周对日志进性一次轮替
weekly
# keep 4 weeks worth of backlogs 保存多少份
rotate 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
# 下面是配置某个日志文件,可以写在这里,也可以写在/etc/logrotate.d
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp # 664权限,所有者:root,所属组:utmp
minsize 1M # 文件最小轮替大小
rotate 1 # 仅保留一份
}
/var/log/btmp {
missingok # 日志不存在则忽略
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
日志轮替的运行原理
crond后台程序执行:/etc/cron.daily/logrotatelogrotate文件的内容:
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
/etc/cron.daily/logrotate中执行logrotate命令并指定配置信息:/etc/logrotate.conf。
查看内存日志
内存日志即存放在内存中的日志,用journalctl查看,需要注意的是在电脑关机之后,内存中的日志就会被清除。
常用命令:
journalctl可以查看内存日志journalctl -n 3查看最新3条日志journalctl --since 19:00 --until 19:10:10查看起始时间到结束时间的日志,可加日期journalctl -p err报错日志journalctl -o verbose日志详细内容journalctl _PID=123 _COMM=sshd查看包含这些参数的日志