- A+
所属分类:linux技术
日志管理服务
基本介绍
- 日志文件是重要的系统文件,记录许多重要的系统事件,如:用户登录信息、系统启动信息、系统的安全信息等
- /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
查看包含这些参数的日志