日志文件
日志文件是一个管理员长接触的一个东西。简单的说日志文件就是记录系统活动信息的几个文件,例如:时间,地点(IP),什么用户,做了什么操作等等信息都会被记录下来。而这些信息就是日志。
日志文件很重要,在解决系统方面的错误上。解决网络服务的问题。举例来说。如果无法启动邮件服务器。那么查询一下/var/log/maillog 通常可以得到不错的回答。
rsyslog 服务:专门去记录各个进程所产生的日志。
linux下常见的日志文件名。
/var/log/cron 记录定时任务
/var/log/dmesg 记录开机时内核检测过程时的信息
/var/log/lastlog 记录系统上面所有账号的最后一次登录系统的相关信息
/var/log/maillog与/var/log/mail/* 记录邮件往来的
/var/log/messages 记录系统发生的错误(或者重要信息,比如服务关闭)
/var/log/secure 只要牵涉输入账号密码的软件,登录时都会被记录
/var/log/wtmp与/var/log/faliog 记录正确登录系统者的账户信息
这里有很多后面接日期的文件。这其实是为了避免日志文件过大。而采用的日志轮替。日志轮询的配置文件在
/etc/logrotate.conf里面
下面介绍一下日志的配置文件。/etc/rsyslog.conf (我用的是Centos7. 7以前的应该是 syslog.conf)。
这就要引出日志类型和日志等级的概念了,那什么是日志类型和日志等级呢
服务名称[.=!]信息等级 信息记录的文件的设备或主机
mail.info /var/log/maillog_info
这一行说明,mail服务产生的大于等于info等级的信息。都记录到后面的文件中
服务类型
auth 主要和认证有关的机制。如login。ssh。su 等需要密码的
cron 例行调用的
daemon 与各个daemon有关的信息
kern 就是内核产生信息的地方
lpr 与打印相关的信息
mail 与邮件相关
news 与新闻组服务有关的
服务等级 服务名称
1 info仅仅是一些基本的说明信息
2 notice除了info外还需要注意的一些信息
3 warning警示问题,还不至于影响某个服务进程
4 err一些重大的问题,如某个配置文件写错了,导致每个服务起不来
5 crit比err还严重(蓝色警戒)
6 alert比蓝色警戒还严重的红色警戒(red alert 红警的共和国之辉)
7 emerg系统就要挂了,留个遗言
. 代表就记录该等级及其等级以后的信息
.= 代表就需要后跟的等级了
.! 代表除了该等级都记录
路径前面加个横杠是异步写入的意思,就是先在内存里放一下再写入硬盘
这就是配置文件中所记录的信息。
# Log anything (except mail) of level info or higher.
53 # Don't log private authentication messages!
54 *.info;mail.none;authpriv.none;cron.none /var/log/messages
55 *.info; /tmp/log
56 # The authpriv file has restricted access.
57 authpriv.* /var/log/secure
可以添加日志被记录的地点!
看!日志被记录到了/tmp/log里了。
日志可以有多种的记录方式。比如记到某个文件内。如上图,或通过“|” 管道传递给其他的命令处理。
传给终端 如 /dev/console
@host 传给远程的主机
用户 传给系统用户
* 登录到系统上的所有用户。emerg就是这样定义的
下面来演示一下将日志传给另一台主机储存。(这个功能很常用,因为如果公司某台主机被攻破后一般,黑客第一件事就是删掉自己进来的信息。但只要将日志传给另一台主机就安全了)
上图,我将所有信息的所有级别的日志都传送给100这台主机。因为防火墙有可能会阻挡,所以先用systemctl stop firewalld 这条命令将防火墙暂时关闭一下, 再重启一下日志服务 使用systemctl reload rsyslog 。这下我就需要去配置一下接收日志的那台主机了。
下图是另一台主机的配置,将同一个配置文件的第15,16行的注释去掉。就好了(主机名一样。。我一会改一下,但这真是另一台主机)。然后同样的操作。重启日志服务。和暂时关闭防火墙
这下就好了,让我们来看看。接收端主机接收到的日志(主机名改好了)
看看,localhost的日志都被发过来了,注意,终端上面,主机名是recvhost,是接收主机哦。
日志分析
systemd-journald 日志分析进程
journalctl 日志分析命令
journalctl -n 5 查看最近生成的5条日志
journalctl -f 查看最近生成的10条信息(动态的) 和 tail -f /var/log/messages 一个效果
journalctl -p err 查看系统报错
journalctl --since --until 查看某个时间段生成的日志
--"22:20:11" --"23:00:00"
"[YYYY-MM-DD]" "[hh:mm:ss]"
journalctl -o verbose 查看日志能够使用的条件参数
journalctl _UID= 进程uid
_PID= 进程id
_GID= 进程gid
_HOSTNAME= 进程所在主机
_SYSTEMD_UNIT= 服务名称
_COMM= 命令名称
对systemd-journalctl管理
日志监控工具的设定
默认情况下journalctl是无法看到关机之间产生的日志的
如果向检测到这类日志设置如下
[root@serverX ~]#mkdir /var/log/journal
[root@serverX ~]#chown root:systemd-journal /var/log/journal
[root@serverX ~]#chmod 2755 /var/log/journal
Send the USR1 signal to the systemd-journald or reboot serverX.
[root@serverX ~]#killall -1 systemd-journald
[root@serverX ~]#ls /var/log/journal/4513ad59a3b442ffa4b7ea88343fa55f
system.journal user-1000.journal
(这个的原理还是不太清楚。。。。)