1.什么是日志文件
日志文件:记录系统在什么时候由哪个进程做了什么样的操作时,发生了何种事件。
linux常见的日志文件目录:/var/log/
日志文件所需的相关服务与程序
systemd-journald.service
rsyslog.service
logrotate
日志文件内容的一般格式:
时间发生的日期与事件
发生此事情的主机名
启动该事件的服务名称(如systemd、crond等)或命令与函数名称(如su、login...)
该信息的实际内容
2.rsyslog.service:记录日志文件的服务
2.1rsyslog.service的配置文件:/etc/rsyslog.conf
配置文件规定了:
(1)什么服务(2)的什么等级(3)需要被记录在哪里(设备或文件)
2.2日志文件的安全性设置
为了防止日志文件被删除,或是被root自己不小心修改,可用隐藏属性来处理,可以使用a这个属性(chattr +a 文件
),如果日志文件设置了这个属性,那么它就只能被增加,而不能被删除。取消方法用chattr -a 文件
2.3日志文件服务器的设置
待实践成功再更新。
3.日志文件的轮询(logrotate)
logrotate的主要功能就是将现有的日志文件重新命名以做备份,然后重新建立一个空文件来记录信息。
3.1logrotate的配置文件
/etc/logrotate.conf
/etc/logrotate.d/
logrotate.conf的设置语法是:
日志文件的绝对路径与文件名 ... {
个别的参数设置值,如monthly, compress等
}
例:
[root@study ~]# vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
执行脚本:可调用外部命令进行额外的命令执行,需与sharedscripts .... endscript设置合用。可用的环境为:
prerotate:在启动logrotate之前的命令
postrotate:在做完logrotate之后启动的命令。
该设置只对/var/log/内的cron、maillog、messages、secure、spooler有效
轮询完毕后取得syslog的PID后,以kill -HUP重新启动syslogd.
假如我们对/var/log/messages这个文件增加了chattr +a的属性,可这样处理:
[root@study ~]# vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/messages
endscript
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/usr/bin/chattr +a /var/log/messages
endscript
}
3.2实际测试logrotate的操作
logrotate [-vf] logfile
-v:启动显示模式,会显示logrotate运行的过程
-f:强制每个日志文件都进行轮询操作
4.systemd-journald.service
systemd-journald用来管理与查询这次启动后的登录信息,而rsyslogd可以记录以前及现在的所有数据到磁盘文件中,方便未来进行查询。
4.1使用journalctl查看登录信息
journalctl [-nrpf] [--since TIME] [--until TIME] _optional
-n:后面+数字,显示指定数字的行数
-r:反向输出
-p:显示后面接的信息重要性排序
-f:类似于tail -f的功能,
实时持续显示journal日志的内容
--since --until 设置开始与结束时间
_SYSTEMD_UNIT=unit.service:只输出unit.service的信息
_COMM=bash:只输出与bash有关的信息
_PID=pid:只输出此PID号的信息
_UID=uid:类似
4.2logger命令的使用
logger [-p 服务名称.等级] "信息"
例一:指定一下,让 dmtsai 使用 logger 来传送数据到日志文件中
[root@study ~]# logger -p user.info "I will check logger command"
[root@study ~]# journalctl SYSLOG_FACILITY=1 -n 3
-- Logs begin at Mon 2015-08-17 18:37:52 CST, end at Wed 2015-08-19 18:03:17 CST. --
Aug 19 18:01:01 study.centos.vbird run-parts(/etc/cron.hourly)[29710]: starting 0yum-hourly.cron
Aug 19 18:01:01 study.centos.vbird run-parts(/etc/cron.hourly)[29714]: finished 0yum-hourly.cron
Aug 19 18:03:17 study.centos.vbird dmtsai[29753]: I will check logger command
评论区