您的位置:首页 > 运维架构 > Linux

Linux系统中的日志管理

2020-07-27 15:57 169 查看

一、实验环境

  • Horizon_carry: 172.25.254.10 
  • carry:         172.25.254.20 
  • Horizon_carry & carry:   systemctl stop firewalld.service   ##关闭火墙 

二、systemd-journald

1.systemd-journald

  1. 服务名称:systemd-journald.service
  2. systemd-journald可移植性高,资源消耗少、结构简单、可扩展、安全性高等优点。
  3. 安全性之所以高是因为此程序只负责对日志进行查看而不能对日志进行保存和采集,那么关机后再开
  4. 机(重启),只能查看到开机后的日志,因为系统之前的日志是保存在内存中的,所以关机后就被
  5. 清空了,那么再开机时用journalctl是看不到的之前的日志信息的。
  6. 命令:journalctl
  7. 默认日志存放路径: / run / log

2. journalctl命令的用法

  1. journalctl      
  2.         -n 3                     ##日志的最新3条
  3.         --since "2020-05-01 11:00:00"     ##显示11:00后的日志
  4.         --until "2020-05-01 11:05:00"     ##显示日志到11:05


journalctl

  1.           -o                    ##设定日志的显示方式
  2.             short             经典模式显示日志
  3.             verbose         显示日志的全部字节
  4.              export             适合传出和备份的二进制格式
  5.              json             js格式显示输出

journalctl

  1.       -p                     ##显示制定级别的日志
  2.             #0     emerg         系统的严重问题日志
  3.             #1     alert         系统中立即要更改的信息
  4.             #2     crit         严重级别会导致系统软件不能正常工作
  5.             #3     err         程序报错
  6.             #4     warning     程序警告
  7.             #5     notice         重要信息的普通日志
  8.             #6     info         普通信息
  9.             #7     debug         程序拍错信息     

journalctl

  1.                 -F     PRIORITY             ##查看可控日志级别
  2.         -u     sshd                 ##指定查看服务
  3.         --disk-usage                 ##查看日志大小
  4.         --vacuum-size=1G             ##设定日志存放大小
  5.         --vacuum-time=1W             ##日志在系统中最长存放时间
  6.         -f                         ##监控日志


journalctl  _TRANSPORT=kernel  ##直接查看该程序产生的日志
journalctl  _PID=***           ##直接查看PID为**的程序产生的日志

3.用journald服务永久存放日志

  • 系统中默认日志在:/run/log/journal中
  • 默认方式在系统重启后日志会被清理要永久保存日志请完成以下操作: 
  • mkdir        /var/log/journal
  • chgrp        systemd-journal     /var/log/journal    ##更改目录的所有组
  • ##/var/log/journal/中的日志信息只能被systemd-journal组所识别
  • chmod        2775             /var/log/journal
  • ##使在/var/log/journal目录中出现的文件的所有组自动归属于该目录的所有组
  • systemctl restart     systemd-journald.service
  • 当服务重启日志存放路径会被制定到:/var/log/journal

测试:

  • 1.在操作以上步骤之前查看日志
  • 2.重启系统
  • 3.再次查看日志
  • 4.可以看到日志是不会被保存下来的只能看到重启之后的日志
  • 5.完成以上操作后再次重启系统可以看到日志是被保存下来

三、 rsyslog 日志

  Linux内核由很多的子系统组成,包含网络、文件访问、内
存管理等,子系统需要给用户传送一些消息,这些消息内容
包括消息的重要来源以及重要性等,所有这些子系统都要把
消息传从到一个可以维护的公共消息区,于是产生了rsyslog。

1.日志类型

  • auth         #用户认证日志(登录日志)
  • authpriv     #服务认证日志(sshd认证)
  • cron         #时间任务日志(定时任务日志)
  • kern         #内核类型日志
  • mail         #邮件日志
  • news         #系统更新信息日志
  • user         #用户相关程序日志
  • local  1-7      #用户自定义日志

2.日志级别

  • debug         #程序排错信息
  • info         #程序常规运行信息
  • notice         #重要信息的普通日志
  • waring         #程序警告
  • err         #程序报错
  • crit         #严重级别会导致系统软件不能正常工作
  • alert         #系统中立即要更改的信息
  • emerg         #系统的严重问题日志
  • none         #不采集

3.系统常用日志存放

  • /var/log/messages     #系统服务日志,常规信息,服务报错
  • /var/log/secure     #系统认证信息日志
  • /var/log/maillog     #系统邮件日志信息
  • /var/log/cron         #系统定时任务信息
  • /var/log/boot.log     #系统启动日志信息
  • 配置文件:/etc/rsyslog.conf

4.自定义日志采集路径

  • vim /etc/rsyslog.conf
  • 日志类型.日志级别         日志存放路径
  • *.*             /var/log/westos     ##把系统中所有级别的日志存放到westos中
  • *.*;authpriv.none             /var/log/westos     ##把系统中所有级别的日志存放到westos中
  •                     ##但是authpriv不存放到westos中


5.如何更改日志采集格式

      <1> 定义日志采集格式

  1. vim /etc/rsyslog.conf    ##找默认采集格式 use default 在之后添加采集格式
  2. $template WESTOS_FORMAT, "%FROMHOST-IP% %timegenerated% %F
  3. ROMHOST-IP% %syslogtag% %msg%\n"
  4. #WESTOS_FORMAT:     格式名称
  5. #%FROMHOST-IP%:     日志来源主机IP
  6. #%timegenerated%:     日志生成时间
  7. #%syslogtag%:         日志生成服务
  8. #%msg%:             日志内容
  9. #\n:                 换行

<2> 设定日志采集格式应用

  • *.*;authpriv.none             /var/log/westos;WESTOS_FORMAT
  •  
  • module(load="builtin:omfile" Template="WESTOS_FORMAT") ##默认采用WESTOS_FORMAT格式


<3>操作流程

  • vim  /etc/rsyslog.conf
  • 完成<1><2>操作
  • > /var/log/messages                   ##清空messages中的日志
  • > /var/log/westos                      ##清空Westos中的日志
  • systemctl restart rsyslog.service               ##重启服务
  • tail -n 1 /var/log/messages            ##查看日志最后一行,格式是默认格式
  • tail -n 1 /var/log/westos            ##查看日志最后一行,
  •                     格式是定义的格式WESTOS_FORMAT

6. 日志的远程同步

  1. carry:                172.25.254.20    存放日志作为日志接受端,所有人日志都存放到此台主机
  2. Horizon_carry:172.25.254.10     发送日志到westos_node1主机
  3. <1>在carry中设定接受所有人的日志
  4. systemctl stop firewalld.service        ##关闭火墙
  5. vim /etc/rsyslog.conf
  6. 19 module(load="imudp")               ##打开日志接受插件
  7. 20 input(type="imudp" port="514")     ##指定插件使用接口
  8. systemctl restart rsyslog.service
  9. 查询端口 在[root@carry ~]# ss  -antlupe | grep rsyslog

<2>Horizon_carry中设定发送日志到carry中

  1. vim  /etc/rsyslog.conf
  2. *.*        @172.25.254.20
  3. systemctl restart rsyslog.service    ##重启服务
  4.         ## @                    表示使用udp传输日志
  5.         ## @@                   表示使用tcp传输日志
  6.         ## @172.25.254.20    把本机日志用udp的传输方式发送到172.25.254.20主机


<3>测试

  • 完成上面两步操作后
  • 在Horizon_carry和carry中
  • > /var/log/messages
  • 在Horizon_carry中
  • logger westos test message
  • 在carry中可以看到Horizon_carry中生成的日志!!


注意:以上实验模式经常清空日志,在实际中操作切忌请勿随便清空

 

 

 

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: