日志管理

日志管理服务rsyslogd


  • 默认路径/etc/rsyslog.conf

  • 查询Linux中的rsyslogd服务是否启动
  1. ps aux | grep "rsyslogd" | grep -v "grep"
  • 查询rsyslogd服务自启动状态
  1. systemctl list-unit-files | grep rsyslog
  • 简单日志管理案例
  1. vim /etc/rsyslog.conf
  2. #添加自定义日志
  3. #日志类型.日志级别
  4. *.* /var/log/test.log
  5. #重启服务
  6. systemctl restart rsyslog
  7. #查看ssh登录的相关信息
  8. cat /var/log/test.log | grep "sshd"
日志类型 说明
auth pam产生的日志
authpriv ssh/ftp等登录信息的验证日志
cron 时间任务相关
kern 内核
lpr 打印
mail 邮件
mark(syslog)-rsyslog 服务内部的信息,时间标识
news 新闻组
user 用户程序产生的相关信息
uucp unix to unix copy主机之间的通信
local 1-7 自定义的日志设备
日志级别 说明
debug 有调试信息,日志通信最多
info 一般信息日志,常用
notice 最具有重要性的普通条件的信息
warning 警告级别
err 错误级别,阻止某个功能或者模块不能正常工作的信息
crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert 需要立刻修改的信息
emerg 内核崩溃等重要信息
none 什么都不记录

日志轮替logrotate


  • 默认路径/etc/logrotate.conf

  • 子目录/etc/logrotate.d/

  • logrotate配置文件 | 参数 | 参数说明 | | —- | —- | | daily | 日志轮替的周期是每天 | | weekly | 日志轮替的周期是每周 | | monthly | 日志轮替的周期是每月 | | rotate [数字] | 保留的日志文件的个数。0指没有备份 | | compress | 日志轮替时旧的日志进行压缩 | | create mode owner group | 建立新日志,同时指定新日志的权限与所有者和所属组 | | mail address | 当日志轮替时,输出内容通过邮件发送到指定的邮件地址 | | missingok | 如果日志不存在,则忽略该日志的警告信息 | | notifempty | 如果日志为空文件,则不进行日志轮替 | | minsize [大小] | 日志轮替的最小值 | | size [大小] | 日志大于指定大小进行日志轮替 | | dateext | 使用日期作为日志轮替文件的后缀 | | sharedscripts | 在此关键字之后的脚本只执行一次 | | prerotate/endscript | 在日志轮替之前执行脚本命令 | | postrotate/endscript | 在日志轮替之后执行脚本命令 |
  • 自定义轮替规则
  1. vim /etc/logrotate.d/test
  2. #新建轮替规则文件
  3. /var/log/test.log
  4. {
  5. missingok
  6. daily
  7. copytruncate
  8. rotate 7
  9. notifempty
  10. }

日志轮替规则原理

  • 依赖crond后台程序调用/etc/cron.daily/logrotate每天定时完成任务

内存日志journalctl

  • 内存日志,重启清空
  1. journalctl #查看全部
  2. journalctl -n 3 #查看最新3条
  3. journalctl --since 17:51 --until 17:52
  4. #查看起始时间到结束时间的日志
  5. journalctl -p err #报错日志
  6. journalctl -o verbose #日志详细信息
  7. journalctl _PID=1372 _COMM=sshd
  8. #查看包含这些参数的日志,或者如下
  9. journalctl | grep sshd