linux之日志管理:journalctl/rsyslog的使用,怎么设置日志采集的规则?怎么同步日志(汇总多台主机的日志到一台)?怎么设置日志采集格式?


实验环境:
我们需要两台主机,要保证两台主机是可以互相通信的。

  1. 配网,点击查看以前文章,不再复述。
  2. 改主机名字,这一步可以省略。
  3. 使用命令systemctl stop firewalld关闭两台主机的防火墙。
  4. 免密认证,这一步也可不做。

journalctl命令

查看日志方法

默认日志存放路径: /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命令采集日志

日志采集规则
服务名称: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 			#不采集
rsyslog命令采集日志方法:

将配置文件修改,让任意日志都被采集到/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服务,然后我们在生成日志看到是按我们设置的格式显示的,设置成功!
在这里插入图片描述
如果想让默认的格式就是按我们设置的格式显示只需更改默认的格式名:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值