linux日志管理

简介

    系统日志 在 /var/log/ 位置。

image-20220117210312540

​ lasllog 最后一次登录信息,只能用专门的 lasllog命令查看,cat 什么的看不了。

​ ulmp 也是 用who 、users 来看。

secure

实验:

1
2
3
4
5
6
7
8
9
10
11
echo "" > secure   # 先清空secure文件内容。
# 错误密码 远程登录一次
# 再正确密码登录
cat secure

Jan 16 05:33:33 localhost sshd[42564]: Failed password for my_vmware from 192.168.200.1 port 49310 ssh2

Jan 16 05:33:46 localhost sshd[42564]: Failed password for my_vmware from 192.168.200.1 port 49310 ssh2

Jan 16 05:34:12 localhost sshd[42575]: Accepted password for my_vmware from 192.168.200.1 port 49316 ssh2

rsyslogd日志管理服务

image-20220117213248440

1
2
3
4
5
ps aux | grep "rsyslog" | grep -v "grep"
# 检查是否启动该服务(grep -v 是反向过滤,目的是把grep操作本身去掉。可以用 man grep 看看grep的含义。)
systemctl list-unit-files | grep "rsyslog"
# 看是不是自启动,日志管理一定要自启动才行。

image-20220117214547881

image-20220117214606185

1
2
3
4
5
6
7
8
9
10
11
# 在/etc/rsyslog.conf 中可见日志文件记录规则。

# Log all the mail messages in one place.
mail.* -/var/log/maillog

# Everybody gets emergency messages
*.emerg :omusrmsg:*

# Save boot messages also to boot.log
local7.* /var/log/boot.log

image-20220117215328009

自定义日志服务

​ 在/etc/rsyslog.conf 中添加一个日志文件 /var/log/chen.log ,当sshd服务相关事件发生时,该文件会收到信息并保存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 在/etc/rsyslog.conf 增加自定义的日志
*.* /var/log/chen.log
# 利用重定向建立空白文件(小技巧),其实会自动生成
> /var/log/chen.log

reboot
cat chen.log | grep "sshd"
# 可见
Jan 17 07:00:43 localhost systemd[1]: Reached target sshd-keygen.target.
Jan 17 09:32:59 localhost sshd[1101]: Server listening on 0.0.0.0 port 22.
Jan 17 09:32:59 localhost sshd[1101]: Server listening on :: port 22.
Jan 17 07:05:10 localhost systemd[1]: Reached target sshd-keygen.target.
Jan 17 09:36:27 localhost sshd[1093]: Server listening on 0.0.0.0 port 22.
Jan 17 09:36:27 localhost sshd[1093]: Server listening on :: port 22.
Jan 17 09:41:01 localhost sshd[3613]: Accepted password for my from 192.168.200.1 port 49560 ssh2
Jan 17 09:41:01 localhost sshd[3613]: pam_unix(sshd:session): session opened for user my by (uid=0)

日志轮替

​ 旧的日志文件移动并改名,同时建立新的空日志文件,当旧的日志文件超出保存范围,就删除。

image-20220118091404626

image-20220118091927977

image-20220118101103463

自定义日志轮替

image-20220118101209884

image-20220118101251197

​ 对前面建立的日志文件/var/log/chen.log 单独建立规则去轮替。

​ 我们用第二种写进 /etc/logrotate.d 目录的方法。

1
2
3
4
5
6
7
8
9
10
11
cd /etc/logrotate.d
vim chenlog # 新建一个规则文件。
# 写入如下内容:
/var/log/chen.log # 指定轮替的日志
{
missingok # 开启忽略
daily # 按天更替
copytruncate
rotate 7 # 保留7份
notifempty # 空的就不更替
}

​ 之所以rotate 能够进行,是依赖定时任务,在/etc/cron.daily 目录下有一个logrotate文件,定时执行。

log rotate 文件内部如下:

1
2
3
4
5
6
7
8
9
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit $EXITVALUE

image-20220118103601177

内存日志

image-20220118104117153