linux 的日志管理介绍


1,日志管理流程

 采集日志 (rsyslog)——>  滚动日志(logrotate)——> 自动化管理日志(cron、anacron)

2、日志管理服务 rsyslog,采集日志进程  rsyslogd。

  systemd-journal是一个改进型的日志管理服务,可以收集来自内核、系统早期的启动阶段的日志、系统守护进程在启动和运行中的标准
  输出和错误信息、还有syslog的日志。
  该日志服务仅仅把日志集中保存在单一结构化的日志文件/run/log默认情况下并不会持久化保存日志、每次重启后,之前的日志都会丢失。
  另外,一些rsyslog无法收集的日志也会被jounral记录到

    【1】作用:主要用来采集日志,不产生日志

    【2】rsyslog的配置文件:/etc/rsyslog.conf

3,在rsyslogd服务的控制下,会将系统日志 按照不同的类型采集整理在不同的文件中,在需要查看时,可以在对应的文件中找到相应的日志信息:

系统日志
/var/log/message          //绝大多数的系统日志都记录到文件
/var/log/secure           //所有跟安全和认知授权等日志都会记录到此文件中  
/var/log/maillog          //邮件服务日志
/var/log/cron             //计划任务日志                            
/var/log/boot.log         //系统启动相关的日志
/var/log/demsg            //内核缓冲信息,系统启动时,硬件相关信息
/var/log/audit/audit.log  //系统审计相关的日志

程序日志
/var/log/yum.log          //yum相关的日志                           
/var/log/xferlog          //ftp文件上传下载日志
/var/log/httpd/access_log //httpd访问日志                           
/var/log/httpd/error_log  //httpd错误日志                            
/var/log/mysql.log        //mysql日志                               


特殊日志,二进制文件,不能直接查看
/var/log/wtmp             //登录用户信息,使用w命令                     
/var/log/btmp             //最近登录用户信息,使用last命令               
/var/log/lastlog          //所有用户登录信息,使用lastlog命令

4,linux日志分类linux系统中主要有三个日志子系统:连接时间日志,进程统计日志,错误日志。

连接时间日志

连接时间日志是有多个程序执行的,把日志记录到/var/log/wtmp     /var/run/utmp   /var/log/lastlog三个文件中,这三个文件记录了用户登录系统和退出的有关信息,utmp保存了当前用户的每个用户的信息,wtmp记录了每个用户登录注销和系统的启动,关机的事件,lastlog记录了每个用户最后登录的信息记录。

wtmp和utmp文件都是二进制,不能使用cat和tail命令查看,但是可以使用who w users last等命令查看着两个文件的信息

who [参数] 

-a 显示全部信息

-m 只显示当前终端的登录用户信息

-q 只显示当前登录到系统中的用户名称和数量,和其他参数共同使用的时候,其他参数将被忽略

日志文件

多数日志文件存放在/var/log/目录下面,一下是各类日志文件和记录的内容

assess-log 记录和HTTP/web的传输

secure 记录登录系统存取资料的消息

btmp 记录失败的消息

lastlog 记录最近几次成功登录的事件和最后一次不成功的登录

messages 从syslog中记录信息(有的是连接到syslog文件)

sudolog 记录sudo发出的命令

sulog 记录使用su命令的使用

utmp 记录当前登录的每个用户

wtmp 一个用户每次登录进入和退出的的永久记录

syslog 通常连接到messages文件

xferlog 记录了FTP会话中上传和下载的详细日志

5,journal 的使用

journalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。

1、查看journal占用磁盘空间大小:
journalctl --disk-usage

2、指定journal占用磁盘空间大小:
journalctl --vacuum-size=1G

3、指定journal日志保存时间:
journalctl --vacuum-time=1years

4、查看具体服务的日志:
journalctl -u nginx.service
journalctl -u nginx.service -f   实时查看

5、实时查看最新日志:
journalctl -f

6、查看尾部最新的n行日志:
journalctl -n 20

7、查看指定时间的日志:
journalctl --since "20 min ago"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"

8、查看内核日志:
journalctl -k

9、查看系统启动日志:
journalctl -b

10、检查journal是否运行正常以及日志文件是否完整无损坏
journalctl --verify

所以这里我们只需要指定下journal占用空间大小和保存时间就好了。

6、使用logrotae 切割,转储,删除日志。

1,常用的文件和目录

#查看logrotate的配置文件
cat /etc/logrotate.conf
#查看logrotate配置了什么日志的切割
ll /etc/logrotate.d/
?
logrotate最常用的三个方式为:
logrotate /etc/logrotate.conf #重新读取配置文件,并对符合条件的文件文件进行rotate。
logrotate -d /etc/logrotate.conf #调试模式,输出调试结果,但并不执行。
logrotate -f /etc/logrotate.conf #强制模式,对所有相关文件进行rotate。

2,转储的日志文件配置

参数 功能
compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 如果是空文件的话,不转储
missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
?
发送日志到邮箱的配置
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
?
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
?
sharescript   共享脚本、下边的postrotateendscript只执行一次即可,同时设置多个日志时用到
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
?
时间配置
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
?
常用的两个配置:
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).
?
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
dateformat -%Y%m%d%s 设置后缀名格式,此格式是年月日和秒组成的后缀名。
dateext 添加归档文件后缀名为日期格式。

 

相关