systemctl stop firewalld
关闭两台主机的防火墙。默认日志存放路径: /run/log
。
journalctl ##直接查看日志
-f ##监控日志,一直开着
内容分别表示:
-n 3 ##日志的最新3条
--since "2021-04-01 11:00:00"
##显示11:00后的日志
--until "2021-04-01 11:05:00"
##显示日志到11:05
-o ##设定日志的显示方式
#short 经典模式显示日志,较简洁,默认情况下就是经典模式
#json js格式显示输出
#verbose 显示日志的全部字节,详细
#export 适合传出和备份的二进制格式,详细,使用键-值格式,和verbose缩进不一样
-p ##显示指定级别的日志,数字越小越严重
0 emerg 系统的严重问题日志,一般没有
1 alert 系统中立即要更改的信息
2 crit 严重级别会导致系统软件不能正常工作
3 err 程序报错
4 warning 程序警告
5 notice 重要信息的普通日志
6 info 普通信息
7 debug 程序排错信息
-F PRIORITY
##查看可控日志级别
-u sshd
##指定查看服务
--disk-usage
##查看日志大小,日志占用空间大小,在/var/run/log下
--vacuum-size=1G
##设定日志存放大小,超过了后会把之前的删掉
--vacuum-time=1W
##日志在系统中最长存放时间,w表示weeks,周数
journalctl _PID=10924 _SYSTEMD_UNIT=sshd.service
##显示该ID的所有日志
系统中默认日志在:/run/log/journal中,默认方式在系统重启后日志会被清理,把日志放到硬盘里即可永久保存
具体步骤:
mkdir /var/log/journal
chgrp systemd-journal /var/log/journal
chmod 2775 /var/log/journal
systemctl restart systemd-journald.service
先创建一个保存日志的目录,我们要知道程序会自动识别组里的文件,组名叫systemd-journal,所以我们要更改目录的属组让其识别,并且更改目录权限让所有文件都属于这个组,更改完后要重启让其生效。
然后我们可以看到在采集主机的日志。system.journal直接查看是乱码,需要用journalctl来查看!
然后我们reboot
重启,再查看日志会看到之前的日志还在。
服务名称:rsyslog.service
日志存放位置:
/var/log/messages #系统服务日志,常规信息,服务报错,永久保存
/var/log/secure #系统认证信息日志
/var/log/maillog #系统邮件日志信息
/var/log/cron #系统定时任务信息
/var/log/boot.log #系统启动日志信息
配置文件:/etc/rsyslog.conf #是配置文件决定了上面这些
清空日志命令举例:> /var/log/messages
生成日志命令:logger
##自动生成到/var/log/messages文件中
日志生成到哪儿由配置文件/etc/rsyslog.conf决定,格式:日志类型.日志级别 日志存放路径
日志类型.日志级别 日志存放路径
*.* /var/log/hello ##把系统中所有级别的日志存放到hello中
*.*;authpriv.none /var/log/hello ##把系统中所有级别的日志存放到hello中,但是authpriv不存放到hello中
日志类型:
auth #用户认证
authpriv #服务认证
cron #时间任务
kern #内核类型
mail #邮件
news #系统更新信息
user #用户
日志级别:
debug #程序排错信息
info #程序常规运行信息
notice #重要信息的普通日志
waring #程序警告
err #程序报错
crit #严重级别会导致系统软件不能正常工作
alert #系统中立即要更改的信息
emerg #系统的严重问题日志,0级别
none #不采集
将配置文件修改,让任意日志都被采集到/var/log/lucky文件中
修改后我们重启可看到已被采集到我们指定的文件
在配置文件加上服务认证日志不采集的规则,多个规则中间用分号隔开
这样我们再重启清空日志,在另一台主机ssh连接(属于服务认证日志)就不会被记录了
但通过查看/var/log/secure文件可以看到ssh连接记录,证明我们设置日志规则是成功的!
我们用两台主机来实现。
接收方需要做:
第一步:更改配置文件/etc/rsyslog.conf文件开启514端口。
##取消注释的这两句意思是:让rsyslog服务加载imudp插件,然后让插件开启514端口(接收日志用到的端口是514)
更改完后保存用命令systemctl restart rsyslog.service
重启,使用netstat -antlupe | grep rsyslog
查看可看到514端口成功开启!
##antlupe各自代表的意思是a表示所有,n表示不做解析(不把ip变为主机名),t表示tcp协议,l表示LISTEN(正在开放的端口),u表示udp,p表示进程名字,e表示显示详细的拓展信息
第二步:关闭防火墙
发送方需要做:
只一步:更改配置文件/etc/rsyslog.conf文件添加收集规则。
200主机的所有日志都会发给100,注意@表示udp,@@表示tcp
更改完后保存用命令systemctl restart rsyslog.service
重启。
测试:
我们在发送方生成日志:
回到接收方会发现发送成功!日志采集成功!
man 5 rsyslog.conf
可以查看设置规则的例子:
编辑/etc/rsyslog.conf文件定义日志采集格式:$template LUCKY, "%FROMHOST-IP% %timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
##注意这是在日志收集方做的
LUCKY_FORMAT 格式名称
%FROMHOST-IP% 日志来源主机IP
%timegenerated% 日志生成时间
%syslogtag% 日志生成服务
%msg% 日志内容
\n 换行
##中间可用空格或其他隔开,我这里用空格隔开
编辑格式:
在messages采集日志的时候用LUCKY这个格式:
更改完后退出保存并重启rsyslog服务,然后我们在生成日志看到是按我们设置的格式显示的,设置成功!
如果想让默认的格式就是按我们设置的格式显示只需更改默认的格式名: