日志管理服务
基本介绍
- 日志文件是重要的系统文件,记录许多重要的系统事件,如:用户登录信息、系统启动信息、系统的安全信息等
- /var/log 目录是系统日志文件的保存位置
- centos7.6日志管理服务是rsyslogd, centos6.x的是syslogd,两者兼容。
常用的日志文件:

配置文件
配置文件,在/etc/rsyslog.conf,里面存放规则方便那些东西放在哪里。
格式
格式为*.*,第一个*表示日志类型,第二个*表示日志级别。
- 日志类型
| 类型 | 说明 |
|---|---|
| auth | pam产生的日志 |
| authpriv | ssh、ftp等登录信息的验证信息 |
| corn | 时间任务相关 |
| kern | 内核 |
| lpr | 打印 |
| 邮件 | |
| mark(syslog)-rsyslog | 服务内部的信息,时间标识 |
| news | 新闻组 |
| user | 用户程序产生的相关信息 |
| uucp | unix 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等
比如:
[root@rH7-1 ~]# 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
Jan 5 13:28:26 rH7-1 sshd[10428]: Received disconnect from 192.168.255.1 port 2226:11: disconnected by user
Jan 5 13:28:26 rH7-1 sshd[10428]: Disconnected from 192.168.255.1 port 2226
Jan 5 13:28:26 rH7-1 sshd[10424]: pam_unix(sshd:session): session closed for user lczmx
Jan 5 13:28:29 rH7-1 sshd[10562]: Accepted password for lczmx from 192.168.255.1 port 2248 ssh2
Jan 5 13:28:30 rH7-1 sshd[10562]: 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/logrotate
logrotate文件的内容:
#!/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查看包含这些参数的日志