日志文件
常见日志文件:
- alternatives.log:系统的更新替代信息
- apport.log:应用程序崩溃信息记录
- apt/history:使用apt-get安装卸载软件的信息记录
- apt/term.log:使用apt-get时的具体操作
- auth.log:登录认证的log信息
- boot.log:系统启动时的日志信息
- btmp:记录所有失败启动信息
- dmesg:内核缓冲信息,在系统启动时,显示屏幕上的与硬件有关的信息
- dpkg.log:安装或dpkg命令清楚软件包的日志
- kern.log:内核产生的日志,有助于在定制内核时解决问题
- lastlog:记录所有用户的最近信息,需要用lastlog命令查看内容
- faillog:用户登录失败信息。此外,错误登录命令也会记录在本文件中
- wtmp:包含登录信息,使用wtmp可以找出谁在登录进入系统,谁在使用命令显示这个文件或信息等
- syslog:系统信息记录
日志内容的一般格式:
- 事件发生的时间
- 发生的主机名
- 启动的服务名称
- 实际信息内容
有两个比较特殊的日志,不能使用less,cat,more工具命令查看,这两个日志文件是wtmp,lastlog。
使用last和lastlog工具来提取其中的信息
last
lastlog:
参数:
- -b:仅打印早于DAYS的最近登录记录
- -h:显示此帮助信息并推出
- -R:chroot到的目录
- -t:仅打印晚于DAYS的最近登录记录
- -u:打印LOGIN用户的最近登录记录
rsyslog系统日志
rsyslog提供了高性能,高安全功能和模块化设计。
rsyslog能够接受从各种各样的来源,将其输入,输出的结果到不同的目的地。
默认的rsyslog配置文件是:
- /etc/rsyslog.conf:主要决定需要加载的模块,文件所属者
- /etc/rsyslog.d/50-defaul.conf:主要是用来配置Filter Conditions.
rsyslogd的主要结构由三个模块组成:
- Input
- Output
- Parser
其流程是首先通过Input module来收集信息,然后将得到的信息传给Parser module,通过分析模块的层层处理,将真正需要的信息传给Output module,然后便输出至日志文件中。
配置文件内容
cat /etc/rsyslog.conf
查看rsyslog系统中的配置:
cat /etc/rsyslog.d/50-default.conf
例如1:
通过命令行向日志文件写入信息:
#首先启动syslog
sudo service rsyslog start
#向syslog写入数据
ping 127.0.0.1 | logger -it logger_test -p local3.notice &
#查看是否有数据写入
sudo tail -f /var/log/syslog
日志文件的转储
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,然后创建新的日志文件。可以根据日志文件的大小,也可以根据其天数来切割日志、管理日志,这个过程又叫做“转储”。
查看/etc/logrotate.conf文件中的内容:
cat /etc/logrotate.conf
第一行:可以查看帮助文件
第二三行:设置每周转储一次(可以改成daily每天,weekly每星期,monthly每月)
第四五行:最多转储4次
第六七行:当转储后文件不存在时创建它
第八九行:通过gzip压缩方式转储(nocompress可以不压缩)
第十,十一行:其他日志文件转储方式配置文件,包含在该目录下
第十二至十八行:设置/var/log/wtmp日志文件的转储参数/每月转储/转储后文件不存在时创建它,文件所有者为root,所属组为utmp,对应权限为0664/最多转储一次
例如:
创建一个日志文件,然后往里面写入10M的数据,创建这个日志文件的配置文件。
sudo touch /var/log/log-file
sudo chmod 777 /var/log/log-file
sudo head -c 10M </dev/urandom> /var/log/log-file
sudo touch /etc/logrotate.d/log-file
sudo vim /etc/logrorate.d/log-file
配置参数:
- monthly:日志文件按月转储
- rotate 5:一次转储最近的5个归档日志
- compress:在转储任务完成后,已转储的日志将使用gzip进行压缩
- delaycompress:和compress选项一起使用,delaycompress表示logrotate不会将最近的压缩,压缩将在下一次转储周期进行
- missingok:在日志转储的时候,任何错误将被忽略,例如“文件无法找到”之类的错误。
- notifempty:如果日志文件为空,转储不会进行
- create 644 root root:以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件
- postrotate/endscript:在所有其他指令完成后,postrotate和endscript里面指定的命令将被执行。rsyslogd进程将立即再次读取其配置并继续运行
例如:当文件满足10M就转储一个日志文件
sudo vim /etc/logrotate.d/log-file
/var/log/log-file{
su root root
size=10M
rotate 5
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}