linux采集日志 ---- journalctl与rsyslog

对比journal与rsyslog

  • journal 是将所有的日志都存放起来,用日志查看工具,来对我们的日志进行分析。
  • rsyslog 在采集的过程中,就将我们的日志分门别类的放到指定的不同类型中。

实验环境

要求:需要2台可以通信的主机,如果自己没法ping通,请参考虚拟机的网络配置先进行设置。
以我的电脑为例:

  • xixi: 172.25.254.33
  • workstation: 172.25.254.22

journald

  • 服务名称:systemd-journald.service
    给我们的日志采集提供了一个程序-- journalctl,只是用来采集日志的,而不是用来产生日志的
    linux采集日志 ---- journalctl与rsyslog_第1张图片

  • 默认日志存放路径: /run/log
    在这个joutnal中,有我们的系统ID,可由bootctl进行查看,与Machine ID 一致
    注意:每次重启之后,都会清空日志
    linux采集日志 ---- journalctl与rsyslog_第2张图片

一. journalctl命令的用法

日志分析命令: journalctl

命令 作用
-n 3 日志的最新3条
–since “2020-04-28 17:20” 显示17:20后的日志
–until “2020-04-28 17:25” 显示日志到17:25
-o 设定日志的显示方式
-p 显示指定级别的日志
-F PRIORITY 查看可控日志级别
-u 指定查看服务
–disk-usage 查看日志大小
–vacuum-size=1G 设定日志存放大小
–vacumm-time=1W 日志在系统中最长存放时间
-f 监控日志

-o与-p的用法会在下面详细介绍

练习:

  • -n 3 日志的最新3条
    linux采集日志 ---- journalctl与rsyslog_第3张图片

  • since+until
    linux采集日志 ---- journalctl与rsyslog_第4张图片

  • -F PRIORITY查看可控日志级别
    linux采集日志 ---- journalctl与rsyslog_第5张图片

  • 查看指定服务
    linux采集日志 ---- journalctl与rsyslog_第6张图片

  • 查看详细信息
    systemctl status ssh 后重启sshd,此时PID会从5574变成6522
    linux采集日志 ---- journalctl与rsyslog_第7张图片
    想要查看5574的详细日志,使用journalctl _PID=5574 _SYSTEMD_UNIT=sshd.service将条件添加在journalctl后
    linux采集日志 ---- journalctl与rsyslog_第8张图片

  • 临时设置日志存放大小,与永久设置

 --vacuum-size=1G ##设定日志存放大小
--vacumm-time=1W ##日志在系统中最长存放时间

以上两种都是临时设定,想要永久设定则需要修改配置文件
永久设置:vim /etc/systemd/journalctl.conf如下

#SystemMaxUse=  日志的最大容量
#SystemMaxFileSize=   单个文件的最大容量
#RuntimeMaxUse=  能在内存的最大容量
#RuntimeMaxFileSize=  能在内存的单个文件的最大容量

linux采集日志 ---- journalctl与rsyslog_第9张图片
-o 设定日志的显示方式

-o后可跟参数 作用
short 经典模式显示日志
verbose 显示日志的全部字节
export 适合传出和备份的二进制格式
json js格式显示输出

练习:

  • short 经典模式显示日志
    linux采集日志 ---- journalctl与rsyslog_第10张图片
  • verbose 显示日志的全部字节
    linux采集日志 ---- journalctl与rsyslog_第11张图片
  • export 适合传出和备份的二进制格式
    linux采集日志 ---- journalctl与rsyslog_第12张图片
  • json js格式显示输出
    linux采集日志 ---- journalctl与rsyslog_第13张图片

-p ##显示制定级别的日志

-p后可跟参数 作用
0 emerg 系统的严重问题日志
1 alert 系统中立即要更改的信息
2 crit 严重级别会导致系统软件不能正常工作
3 err 程序报错
4 warning 程序警告
5 notice 重要信息的普通日志
6 info 普通信息
7 debug 程序排错信息

练习:
linux采集日志 ---- journalctl与rsyslog_第14张图片

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

系统中默认日志在:/run/log/journal中,默认方式在系统重启后日志会被清理,要永久保存日志请完成以下操作:

//建立日志存放的目录
mkdir /var/log/journal

//修改所有组和权限
chgrp systemd-journal /var/log/journal
chmod 2775 /var/log/journal

//重启systemd-journal服务
systemctl restart systemd-journald.service

当服务重启日志存放路径会被指定到:/var/log/journal
linux采集日志 ---- journalctl与rsyslog_第15张图片
可以删除所创建的文件,进行查看。此时指定存放路径又变回/run/log
linux采集日志 ---- journalctl与rsyslog_第16张图片

rsyslog

一.基础知识

  • 实验前提:
    为了保证实验环境的纯净,先删除上面建立的/var/log/journal目录,并且重启服务
  • 服务名称:rsyslog.service
  • 配置文件:/etc/rsyslog.conf
    rsyslog的管理都依赖于配置文件的管理
  • 日志存放:
存放位置 含义
/var/log/messages 系统服务日志,常规信息,服务报错
/var/log/secure 系统认证信息日志
/var/log/maillog 系统邮件日志信息
/var/log/cron 系统定时任务信息
/var/log/boot.log 系统启动日志信息

注意:上述路径是用来指定日志的采集路径,可以通过cat /var/log/cron来直接查看系统日志

二.自定义日志采集路径

日志类型

类型 含义
auth 用户认证
authpriv 服务认证
cron 时间任务
kern 内核类型
mail 邮件
news 系统更新信息
user 用户

日志级别

级别 作用
emerg 系统的严重问题日志
alert 系统中立即要更改的信息
crit 严重级别会导致系统软件不能正常工作
err 程序报错
warning 程序警告
notice 重要信息的普通日志
info 普通信息
debug 程序排错信息
none 什么都不记录

练习1* . *

日志类型.日志级别 日志存放路径
*.* 			/var/log/lyq ##把系统中所有级别的日志存放到lyq中
  • 一开始没有/var/log/lyq
    在这里插入图片描述

  • vim /etc/rsyslog.conf在配置文件中写入
    linux采集日志 ---- journalctl与rsyslog_第17张图片

  • 重启服务,此时出现/var/log/lyq
    linux采集日志 ---- journalctl与rsyslog_第18张图片

  • 此时使用cat进行查看,/var/log/lyq中存放有系统中所有级别的日志
    linux采集日志 ---- journalctl与rsyslog_第19张图片
    linux采集日志 ---- journalctl与rsyslog_第20张图片

练习2:修改日志类型进行查看

日志类型.日志级别 日志存放路径
authpriv.*			/var/log/lyq ##把authpriv存放到lyq中

linux采集日志 ---- journalctl与rsyslog_第21张图片
linux采集日志 ---- journalctl与rsyslog_第22张图片

练习3:多种条件

日志类型.日志级别 日志存放路径
*.*;authpriv.none 			/var/log/lyq ##把系统中所有级 别的日志存放到lyq中,但是authpriv不存放到lyq中

linux采集日志 ---- journalctl与rsyslog_第23张图片

  • 重启服务后/var/og/lyq存在,并且我们可以查看里面的日志,没有包含认证信息
    linux采集日志 ---- journalctl与rsyslog_第24张图片

三.自定义日志采集格式

1.查看原日志采集格式

cat /var/log/messages   
   时间戳		日志生成的当前主机的名称	日志生成的服务				内容
Apr 29 09:20:02     xixi 				systemd: Started Session 3 of user root.

2.定义日志采集格式
$template LYQ, 自定义格式

LYQ 格式名称
%FROMHOST-IP% 日志来源主机IP
%timegenerated% 日志生成时间
%syslogtag% 日志生成服务
%msg% 日志内容
\n 换行

3.设定日志采集格式应用

  • 在配置文件中进行修改,将/var/log/messages的日志生成格式,设置为我们自定义的格式。设置好后将LYQ写到想要实现此种定义方法的目录名后
    linux采集日志 ---- journalctl与rsyslog_第25张图片

  • 重启后进行查看
    linux采集日志 ---- journalctl与rsyslog_第26张图片
    注意:日志采集格式都是可以调整的

四.日志的远程同步

  • xixi(rhel7):172.25.254.33 存放日志作为日志接受端,所有人日志都存放到此台主机
  • workstation(rhel8):172.25.254.22发送日志到xixi主机中
  • 日志里面记录的是服务器的状态。在日常生活中,企业里肯定有不止一台服务器,我们不可能一个一个的查看服务器的状态。为了提高工作效率,可以把所有服务器的日志集中起来,放在一台主机上进行管理。

1.在rhel7中设定接受所有人的日志

  • systemctl stop firewalld
    如果在xixi(rhel7)中没有关闭防火墙,那么之后的日志是同步不过来的!!
    linux采集日志 ---- journalctl与rsyslog_第27张图片

  • vim /etc/rsyslog.conf
    linux采集日志 ---- journalctl与rsyslog_第28张图片

  • systemctl restart rsyslog重启服务后,查看端口
    linux采集日志 ---- journalctl与rsyslog_第29张图片

netstat的常见参数

2.rhel8中设定发送日志到rhel7中

  • vim /etc/rsyslog.conf
man 5 rsylog 查询 /remote可看规则
@ 表示使用udp传输日志
@@ 表示使用tcp传输日志
@172.25.254.33 把本机日志用udp的传输方式发送到172.25.254.33主机

linux采集日志 ---- journalctl与rsyslog_第30张图片

  • systemctl restart rsyslog

3.测试

  • 在rhel7和8中 > /var/log/messages
    在这里插入图片描述
    linux采集日志 ---- journalctl与rsyslog_第31张图片

  • 在rhel8中 logger westos test message
    在rhel7中可以看到8中生成的日志!!
    linux采集日志 ---- journalctl与rsyslog_第32张图片

你可能感兴趣的:(rhcsa)