Linux系统中的日志管理

Linux系统中的日志管理

实验环境

westos_linux:172.25.254.9
westos_node1:172.25.254.109

systemctl stop firewald

journald

  • 服务名称:systemd-journald.service
    #此服务用于查看日志
    #所处位置在/run/log/journal。
    #日志重启后就消失了,只有重启后的日志

     systemctl status systemd-journald.service  ##查看服务的状态
     cd /run/log/journal  						##找寻服务
    

在这里插入图片描述

  • journal命令用法
    1、

      journalctl -n 3   					     ##日志的最新的三条
            	 --since "10:00:00" 		     ##显示十点之后的日志
     		     --since "2020-05-02 11:00:00”   ## 显示十一点之后的日志
     			 --until “2020-05-02 11:00:00“   ## 显示日志到十一点
    

在这里插入图片描述
2、 journalctl -o 设置日志的显示方式

journalctl  -o short    ##经典模式显示日志  
journalctl  -o verbose  ##显示日志的全部内容 
journalctl  -o export   ##适合传出和备份的二进制格式
journalctl  -o json     ##js格式显示输出。一般配合生成网页之类的模式

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、journalctl -p 显示制定级别的日志

    journalctl  -p 0  		 	    ##系统的严重问题日志
    journalctl  -p 1    			##系统中立即要更改的信息
    journalctl  -p 2    		    ##严重级别会导致系统软件不能正常工作
    journalctl  -p 3   		        ##程序报错
    journalctl  -p 4  		        ##程序警告
    journalctl  -p 5  		        ##重要信息的普通日志
    journalctl  -p 6 			    ##普通信息
    journalctl  -p 7 			    ##程序排错信息
    journalctl  -F PRIORITY         ##查看可控日志级别
    journalctl  -u sshd     	    ##指定查看服务
    journalctl  --disk-usage 	    ##查看日志大小
    journalctl  --vacuum-size=1G    ##设定日志存放大小
    journalctl  --vacuum-time=1w    ##日志在系统中最长存放时间
    journalctl  -f  			    ##监控日志
    journalctl  _PID=1024 		    ##关于PID的日志
	      						    #_后的内容可更改,使用journalctl -o verbose 来看都可以查什么的日志   
	      						 journalctl  MACHINE_ID=a9bf2464da25407a9b70608b3e39f37d

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 用journal服务永久存放日志
    ##系统默认的日志在/run/log/journal中,默认方式在系统重启后会被清理,如果需要永久保存需要进行以下的操作

        mkdir    /var/log/journal                 ##新建文件;var是硬盘存储
        ls  -ld   /var/log/journal/               ##查看权限
        chgrp systemd-journal /var/log/journal/   ##设定目录的组为ststemd-journal
        chmod 2775 /var/log/journal/              ##目录中新建文件自动归属到目录若属组中
     	ls  -ld   /var/log/journal/
     	cd   /var/log/journal/
     	ls   
     	cd a9bf2464da25407a9b70608b3e39f37d
     	ls
     	systemctl restart systemd-journald        ##重启服务
     	journal                                   ##看日志记录
    

    在这里插入图片描述
    ##完成以上操作后,如果重启电脑,之前 登陆所产生的日志不会被清除。
    ##要想永久的删除日志则需要删掉此文件 /var/log/journal/ 里面的东西即可

在这里插入图片描述

rsyslog.service

  • 实验环境
    1、创建第二个虚拟机,并且给他配置IP

             westos-vmctl create westos_node2    ##在主机中创建新的虚拟机
             virt-manage         				 ##连接网桥,在主机中操作
             nm-connection-editor      			 ##设置IP,在新的虚拟机中进行
    

在这里插入图片描述
在这里插入图片描述

2、 为了区分这两个虚拟机,可以对其进行重命名。

     hostnamectl set-hostname westos_node1.westos.org
  • 服务名称:rsyslog-service
    1、日志存放:

       /var/log/message   	 ##系统服务日志,常规信息,服务报错
       /var/log/secure 		 ##系统认证信息日志
       /var/log/maillog  	 ##系统邮件日志信息
       /var/log/cron 		 ##系统定时任务
       /var/log/boot.log	 ##系统启动日志信息
    

    2、配置文件 : /etc/rsyslog.conf
    3、rsyslog服务用于把日志采集到硬盘里面

      systemctl  status rsyslog   		##查看服务确定他是开启状态
      systemctl restart sshd			##重启一个服务 
      tail /var/log/message				##在系统信息里面看到日志生成
      systemctl stop rsyslog.service    ##关掉这个服务
      > /var/log/message			    ##清除掉信息
      systemctl restart sshd		    ##重启服务
      cat /var/log/messages   		    ##在系统信息里面没有看到日志生成,但是日志是生成的
      systemctl start rsyslog.service   ##再次打开这个采集服务,他会立即采集
      cat /var/log/messages   
    

在这里插入图片描述在这里插入图片描述

  • 自定义日志采集路径

       vim /etc/rsyslog.conf     ##编辑此文件进行自定义,大约在47行
    
    
       日志类型.日志级别        日志存放路径
       *.*                   /var/log/westos    ##把系统中所有级别的日志存放到westos中
       *.*;authprive.none   /var/log/westos    ##把系统中所有级别的日志存放到westos中, authpriv不存放到westos中
    
     日志类型
      auth    	 ##用户认证
      aythpriv 	 ##服务认证
      cron 		 ##时间任务
      kern	     ##内核类型
      mail		 ##邮件
      news	     ##系统更新信息
      user       ##用户
     	
     	日志级别
     	debug    	##程序排错信息
     	info        ##程序常规运行信息
     	notice  	##重要信息的普通日志
     	waring 	    ##程序警告
     	err   		##程序报错
     	crit   		##严重级别会导致系统软件不能正常工作
     	alert  		##系统中立即要更改的信息
     	emerg  		##系统的严重问题日志
     	none 	    ##不采集
    

在这里插入图片描述

  • 如何更改日记采集模式(假设我的虚拟机node1是接受方)

          man 5 rsyslog.conf    ##查看此服务
    

在这里插入图片描述

         systemctl disable  --now firewalld.service ##关掉火墙
         vim /etc/rsyslog.conf     					##根据man查看的服务提示,我们应该在接受方编辑此文件进行自定义,大约在19行

在这里插入图片描述

       systemctl restart rsyslog.service  ##重新启动服务
       ss -alntupe | grep rsyslog  		  ##查看端口是否正确

在这里插入图片描述

          vim /etc/rsyslog.conf   ##在日志的发送方,编写此文件47行

在这里插入图片描述
##IP谁是接受方就写谁的IP

      systemctl restart  rsyslog.service   ##在发送方重启服务
       > /var/log/message   			   ##将接收方和发送方的日志都清除,方便观察测试
     tail -f /var/log/messages  		   ##在接受方监控
     logger haohaoxuexi   				   ##在发送方编写日志用logger命令,只是为了简便测试

在这里插入图片描述

  • 如何更改日志采集格式 (调整接受方的格式)
    1、定义日志采集格式

     #WESTOS_FORMAT:    	格式名称
     #%FROMHOST-IP%:  		日志来源主机IP
     #%timegenerated%: 		日志生成时间
     #%syslogtag%:			日志生成服务
     #%msg%:				日志内容
     #\n:					换行
      
     vim    /etc/rsyslog.conf    ##编辑此服务的文件
     $template WESTOS , "%FROMHOST-IP% %timegenerated% %syslogtag% %msg%\n"  ##WESTOS这个名字是任意的,需要与另外一个需要更改的地方名字一致。
    

在这里插入图片描述
在这里插入图片描述

##更改34行这个格式的时候,首先复制备份一个比较好。 WESTOS只是我自己设定的,可以是任意的,代表了格式而已,两个更改的地方必须是一样的。

timdatectl

  • 实验环境:两台虚拟机,一个用于监控,一个做检测

  • -如何修改系统时间

    timedatectl set-time "2021-01-21 10:15:00"    ##设定系统时间
    timedatectl list-timezones    				  ##显示系统的所有时区
    timedatectl set-timezone "Africa/Bamako"	  ##设定系统时区
    timedatectl set-local-rtc 1|0  			      ##设定系统时间计算方式,0代表RTC时间与UTC时间一致; 1代表RTC时间与本地时间一致,一般都是0
    

    1、UTC是伦敦时间,RTC是硬盘时间,CST是本机时间。
    硬件时间RTC加时区值Time就是本机时间CST,这个可以作修改。但是 UTC时间不能改。

          timedatectl
    

    在这里插入图片描述

    watch -n 1 timedatectl ##在node2虚拟机中作出时间戳的监控
    

在这里插入图片描述

     timedatectl list-timezones   

在这里插入图片描述

      vim /etc/adjtime   ##在此文件中可以看见硬盘时间RTC是和谁一致。

在这里插入图片描述

在这里插入图片描述

时间同步服务

如果说node_2共享出去时间,则node_2是服务端,拿到别人时间的node_1是客户端。

  • 在服务端(关闭火墙)

      vim /etc/chrony.conf   ##编辑此文件更改23和25行
    

在这里插入图片描述
##23行更改的是“把时间共享出去谁能来看”,我所改的是所有人都可以访问我。25行中10表示当前主机时间服务器的时间级别,用man 5 chrony.conf命令可以看其作用

  systemctl enable --now chronyd       ##开启这个服务
  systemctl status chronyd.service     ##查看服务状态
  watch -n 1 timedatectl			   ##监控时间变化
  • 在客户端(如何把服务端的时间同步过来)

     vim /etc/chrony.conf    ##编辑这个文件的第三行。将poor后面的IP改为此服务端的IP
    

在这里插入图片描述

       systemctl restart chronyd.service   ##重启此服务
       watch -n 1 timedatectl 			   ##作出一个监控

##如果作出以上修改后RTC时间和UTC时间不同,可能是因为我们是手动改的,没有将电脑重启同步过来,利用以下两个命令即可

  clock -w   ## 把我们的系统时间同步到硬件
  clock -s   ## 把硬件时间同步到系统

##在客户端输入chronyc sources -v命令可查看是否已经同步

在这里插入图片描述

##同步之后不能再改时间 ,需要把服务关掉才可以再次修改时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值