第十四章 日志管理

1 系统日志介绍

什么是日志:

通俗理解 可以说是“日记” ,linux系统当中就是记录系统中发生的事情,按时间先后顺序,分门别类的记载到不同文中称为记录日志,文件就是日志文件

日志的作用:

排错问题

网络方面问题

记录历吏事件

安全问题

功能:

日志功能:记录计算机在运行过程中的发生的各种事件,从而为安全防范、故障排查等工作,提供历史记录数据。

默认位置:/var/log 目录

日志的类别

1. 系统信息日志

由<rsyslog系统日志服务>统一进行管理,<日志格式>基本相似。

记录<系统>在运行过程中的发生的<方方面面的各种事件>,从而为故障排查提供蛛丝马迹的数据。

可cat查看

/var/log/messages		## 系统消息日志,记录所有<info级别>或<更高级别>的<系统信息>,内容最多,最常用。
/var/log/secure			## 验证和授权日志,例如,sshd会将所有信息记录(包括:失败登录)在这里,比如创建用户等待操作记录
/var/log/maillog		## 本机邮件系统日志,记录<Postfix mail本机邮件系统>的信息
/var/log/cron			## 计划任务日志,记录计划任务<crontab守护进程>及其<派生的子进程>的动作信息
/var/log/spooler		## uucp(UNIX至UNIX的拷贝)日志,在Internet兴起之前,这是Unix系统之间连网的主要方式。
                        ## news.crit(新闻组.危机消息)日志
/var/log/boot.log		## boot引导日志,记录:系统<boot引导过程>的信息
2. 用户信息日志

记录系统用户登录及退出系统的相关信息。

由系统内置程序生成,不由<系统日志服务rsyslog>统一管理。

不可cat查看

/var/log/lastlog 	## 记录最近成功登录的事件和最后一次不成功的登录事件
					## 该日志由login登录生成
                    ## lastlog日志文件是二进制文件
                    ## 需要使用 lastlog命令 查看
                    
/var/log/wtmp 		## 记录/var/run/utmp的历史数据
                    ## 包括终端、注销、系统事件和系统当前状态、系统启动时间(正常运行时间)等
                    ## wtmp日志文件是二进制文件
                    ## 需要使用 last命令 查看
                    ## 常用于发现非法登录的行为
                    
/var/log/btmp 		## 记录所有<失败的登录信息>
                    ## btmp日志文件是二进制文件
                    ## 需要使用 lastb命令 查看
                    ## 常用于发现暴力破解密码的行为
                    
## 二进制文件只能使用特殊命令进行查看,不能使用 cat 和 vim 查看                   
3. 程序信息日志

由各种<应用程序>独立管理的<日志文件>,<记录格式>不统一。

/var/log/httpd/access_log		## <httpd程序>的<访问日志>
/var/log/httpd/error_log  		## <httpd程序>的<错误日志>
/var/log/vsftpd.log       		## <vsftpd程序>的<日志>
/var/log/firewalld        		## <firewalld防火墙程序>的<日志>
/var/log/yum.log          		## <yum程序>的<日志>
/var/log/chrony           		## <chrony时间程序>的<日志>
/var/log/dmesg            		## <系统内核 ring buffer 环型缓冲区>的<日志>,可以使用<dmesg命令>查看
/var/log/audit/audit.log  		## <Linux审计程序>的<日志>
/var/log/anaconda/*       		## <系统安装过程>的<日志>
/var/log/tuned/tuned.log  		## <tuned系统调优程序>的<日志>

查看用户信息日志

通常情况下,我们可以直接使用<cat 命令>来查看<系统日志>和<程序日志>,但不能直接查看<用户日志>。

针对用户日志,需要使用 lastlog、last、lastb 命令

lastlog 		## 读取/var/log/lastlog日志文件内容
				## 列出用户最后登录的时间和登录终端的地址
				## 如果此用户从来没有登录,则显示 Never logged in
last 			## 读取/var/log/wtmp日志文件内容)
				## 列出用户所有的登录时间和登录终端的地址。
lastb 			## 读取/var/log/btmp日志文件内容)
				## 查看<用户登陆失败>的日志记录

例子 查看恶意 IP 试图登录次数:

lastb | awk '{print $3}' | sort | uniq -c | sort -n		

## $3是ip,看相同ip登录失败的次数  -n是按字符串排序	

查看系统信息日志

功能概述:

功能:记录<系统和程序>在运行过程中的发生的<方方面面的各种事件>,从而为<安全防范、故障排除>等工作,提供蛛丝马迹的数据。

服务:syslog/rsyslog系统日志服务

位置:/var/log 目录

应用范围:

在<Unix类>的<操作系统>上,<syslog/rsyslog日志服务>广泛应用于<系统日志>。

​ **rsyslog只能看本机 一般看多机器日志使用 elk **

网络管理工具、安全管理系统、日志审计系统

系统信息日志 的管理模式

本地管理模式:记录保存在<本地文件>

集中管理模式:接收<多个syslog日志客户端的syslog日志消息>,进行<统一的存储>

系统信息日志 的日志规范

系统信息日志的内容:产生日志的程序模块(Facility)、严重性(Severity或Level)、时间、主机名或IP、进程名、进程ID、正文。

系统信息日志的含义:x时间(Timestamp),在x地方(Hostname),是x谁(Facility设施),发生了x严重性(Severit)的 x事情(Message)

例如

cat /var/log/messages			## 查看格式

日志记录规范(BSD syslog 日志协议规范:http://www.ietf.org/rfc/rfc3164.txt)

<BSD syslog 日志协议规范>不是强制性的,很多都是<建议/约定>,因此,很多设备并不遵守或不完全遵守这个规范。

​ <BSD syslog 日志协议规范>的<建议/约定>

<syslog日志消息>的<UDP报文>不能超过<1024字节>,并且全部由<可打印的字符>组成。

<完整的syslog日志消息>可以由3部分 ,分别是: PRI + HEADER+ MSG

PRI部分 是一个:用 [<>尖括号] 包括的 [数字]
       该 [数字] 用于表示:<Facility程序模块><Severity严重性>。
       例如:<165>Aug 24 05:34:00 1987 my_machine my_proc[10]: %% It's ...

HEADER部分 包括两个[字段]:<时间>和<主机名或IP>。
       例如:<165>Aug 24 05:34:00 1987 my_machine my_proc[10]: %% It's ...

MSG部分 分为两个[部分]<TAG标签><Content内容部分>
       <TAG部分>是可选的,它包含了<进程名称><进程PID><进程PID>放在"[] 方括号"中,也可以没有。
       例如:<165>Aug 24 05:34:00 1987 my_machine my_proc[10]: %% It's ...
       <TAG标签>后面用一个 [ : 冒号] 隔开<Content内容部分>,<Content内容部分>是应用程序自定义的。
       例如:<165>Aug 24 05:34:00 1987 my_machine my_proc[10]: %% It's ...

日志级别

`debug`	## 最详细的日志级别,用于调试和排查问题,通常不建议在生产环境中使用。
`info`	## 默认的日志级别,提供一般性的信息,如服务器启动、停止等事件。
`notice` ## 更重要的信息级别,用于报告重要的系统事件,如配置文件加载、重启等。
`warn`	## 警告级别,用于报告一般性的警告信息,如请求超时、磁盘空间不足等。
`error`	## 错误级别,用于报告错误事件,如请求错误、连接超时等。
`crit`	## 临界级别,用于报告临界错误,可能导致系统崩溃或不可用的问题。
`alert`	## 警报级别,用于报告需要立即采取行动的问题,如内存耗尽、磁盘故障等。
`emerg`	## 紧急级别,用于报告系统不可用的严重错误,通常会导致系统崩溃。

Syslog 消息级别总结

级别编号名称描述
0Emergency系统不可用,紧急情况
1Alert需要立即处理的紧急事件
2Critical严重错误,系统关键功能受影响
3Error错误情况,影响功能但不至于崩溃
4Warning警告,系统运行中潜在问题
5Notice正常操作中的通知消息
6Informational信息日志,记录常规操作
7Debug调试日志,详细记录系统状态或问题排查信息

不同的 Syslog 实现可能会在具体的消息记录和格式上有所不同,但这个级别的定义是广

在这里插入图片描述

一般不会使用 debug 而是 info 或者 info 往上的级别

2 管理 rsyslog 日志服务

2.1 简介

rsyslog是一个高性能、高安全性和模块化设计的<日志服务>,用来代替syslog,并兼容syslog。

rsyslog的<接收端口>默认为: 514/UDP,<服务进程名>为: rsyslogd

rsyslog可以接收<来自各种来源>的<输入信息>,然后转换它们,并将结果<输出>到<不同的目的地>。

rsyslog可以每秒向<本地目标>传送超过一-百万条的消息。

收发<日志消息>的<设备名称 与 通信端口>

在这里插入图片描述

rsyslog 的语法格式

在这里插入图片描述

语法理解我们要结合配置文件才行,我们先简单了解一下语法

服务名称,有很多

了解facility设施

facility设施:它可以是<操作系统内核进程>、<各种服务进程(如:mail、httpd)>、<其它设备(如:路由器)>等等

常用的<facility设施>有以下几种:用<整数>来表示不同的Facility设施

Syslog 设施

设施用于分类日志消息,以下是一些常见的设施:

  整数	  别名             	备注说明
   0   	   kern             内核相关的<内核消息>
   1  	   user             用户相关的<用户级别消息>
   2  	   mail             邮件相关的<邮箱系统消息>
   3   	  daemon            守护进程相关的<系统守护进程消息>
   4  	 security|auth	    被大多数系统用于<安全|授权>相关的<消息>,security是<auth代名词>,但被弃用
   5       syslog           由Syslogd自身产生的消息
   6       lpr              打印相关的<打印子系统消息>
   7       news             新闻组日志
   8       uucp             uucp(UNIX至UNIX的拷贝)日志,在Internet兴起之前,这是Unix系统之间连网的主要方式。
   9       cron             被大多数系统用于<cron/at计划任务的消息>
  10     security|auth      被大多数系统用于<安全|授权>相关的<消息>,security是auth代名词,但被弃用
   11 	   ftp              FTP守护进程的<消息>
   12      ntp              NTP子系统的<消息>
   13 	 security|auth      被大多数系统用于<安全|授权>相关的<消息>,security是<auth代名词>,但被弃用
   14 	 security|auth      被大多数系统用于<安全|授权>相关的<消息>,security是<auth代名词>,但被弃用
   15  	   cron             被大多数系统用于<cron/at计划任务的消息>
##         alert            被大多数系统用于<报警>相关的<消息>
##         authpriv         被大多数系统用于<敏感的安全信息>的<消息>
   
## 16-23保留给本地使用,厂商可自定义
   16  	  local0           	保留给本地使用,厂商可自定义
   17  	  local1           	保留给本地使用,厂商可自定义
   18  	  local2           	保留给本地使用,厂商可自定义
   19  	  local3           	保留给本地使用,厂商可自定义
   20 	  local4           	保留给本地使用,厂商可自定义	例如:Cisco就用local4发送PIX防火墙的syslog
   21 	  local5           	保留给本地使用,厂商可自定义
   22  	  local6           	保留给本地使用,厂商可自定义
   23  	  local7           	保留给本地使用,厂商可自定义	例如:CentOS用local7发送<启动消息>,Cisco就用local7发送3000VPN集中器的syslog

常用以下的服务名称

authpriv(auth)	## 用户授权相关的,认证等  ssh、login、su等
cron			## 和计划任务相关的服务
mail			## 邮件相关的
news			## 新闻相关的  uucp
kern			## 内核相关的
lpr				## 打印机相关的
syslog			## 和rsyslogd进程相关的
local0~local7	## 自定义服务名称

了解 priority优先级

常用的<priority优先级>有以下几种:用<整数>来表示<不同的Severity严重等级>

    整数	    别名          	备注说明
      0      emerg			(紧急):系统无法使用。
      1      alert			(警报):应立即采取行动。
      2      crit			(关键):临界状态,需要马上解决。
      3      err			(错误):错误条件。
      4      warning		(警告):警告条件。
      5      notice			(通知):正常但重要的条件。
      6      info			(信息):一般信息。
      7      debug			(调试):调试信息。
      							
priority优先级注意:
*      		## 表示:所有<priority优先级> 即什么都记录
none		## 表示:未指定<priority优先级>(即:什么都不记录)

举例:
local7.*	## 表示:local7设施的所有优先级
*.* 		## 表示:所有的设施的所有的优先级
mail.none;authpriv.none;cron.none 	## 表示:不接收<mail、authpriv、cron设施>的<消息>

2.2 管理 rsyslog 日志服务

*主配置文件 /etc/rsylog.conf 辅助配置文件 /etc/rsylog.d/ .conf

1 安装 默认已安装

yum install rsyslog -y
systemctl enable rsyslog
systemctl start rsyslog
systemctl status rsyslog

2 了解主配置文件 /etc/rsylog.conf

后面写入 是 服务名称 + priority优先级 + 辅助配置文件(自定义)

[root@server logs]# cat /etc/rsyslog.conf | egrep -v "^\s*(#|$)"
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

解析如下

$ModLoad imuxsock   	 ## 加载imuxsocl模块,支持:通过<UNIX套接字>接收<本机应用程序>发来的<日志消息>
$ModLoad imjournal   	 ## 加载imjournal模块,支持:将<systemd的journal日志内容>导入到<syslog日志>
$WorkDirectory  /var/lib/rsyslog        ## 设置rsyslog的工作目录
$ActionFileDefaultTemplate  RSYSLOG_TraditionalFileFormat		## 设置默认的时间戳格式
$IncludeConfig  /etc/rsyslog.d/*.conf   ## 导入/etc/rsyslog.d/目录中的配置文件
$OmitLocalLogging  on                   ## 开启/dev/log 日志套接字设备文件,接收本地日志消息
$IMJournalStateFile  imjournal.state    ## 设置日志状态文件名,默认位置在/var/lib/rsyslog/目录
*.info;mail.none;authpriv.none;cron.none    /var/log/messages     ## 在 /var/log/messages 日志文件中,保存众多日志消息
authpriv.*                                  /var/log/secure
mail.*                                      -/var/log/maillog
cron.*                                      /var/log/cron
*.emerg                                     :omusrmsg:*
uucp,news.crit                               /var/log/spooler
local7.*                                     /var/log/boot.log  
## 最后一行为接收locak7设施发来的所有等级的日志消息,并保存在 /var/log/boot.log 日志文件中
## .* 不是正则表达式 , 而是 .全部的意思 * 就是什么都写入,none 是 什么都不写入       
## *.info;mail.none;authpriv.none;cron.none  意思是除了这几个服务,别的日志都写入 /var/log/messages 该文件          	

2.3 配置rsyslog日志服务的服务端,网络远程接收日志消息

需要一台服务端和一台客户端作测试,创建辅助配置文件测试

注意:服务端和客户端都要安装并启动 rsyslog 服务

服务端:

vim /etc/rsyslog.d/dj.conf

####################################
## 加载:指定的<MODULES模块>
##    imxxxxxx 表示:input输入模块
##    omxxxxxx 表示:output输出模块
####################################

## 加载 imudp 模块,用于支持:通过<UDP协议>接收<日志消息>
$ModLoad imudp
## 设置<UDP端口>为:514/udp
$UDPServerRun 514
## 加载imtcp模块,用于支持:通过<TCP协议>接收<日志消息>
$ModLoad imtcp
## 设置<TCP端口>为:514/tcp
$InputTCPServerRun 514


systemctl restart rsyslog
firewall-cmd --permanent --add-port=514/tcp --add-port=514/udp
firewall-cmd --reload
netstat -tunlp | grep rsyslogd

客户端:

vim /etc/rsyslog.d/cl.conf

##############################################################################
## 设置:<rsyslog queue 队列>中的<动作队列>相关参数
##            <rsyslog queue 队列>分为:<消息队列> 和 <动作队列>
##                  ┌──进──> 消息队列 ──出/进──> 动作队列 ──出──┐
##               产生消息                                  发送消息
##############################################################################

## 定义:动作队列的内存队列类型,<LinkedList类型>采用<动态内存分配机制>,推荐使用
$ActionQueueType LinkedList
## 定义:<动作队列>的<磁盘辅助队列文件>的<前缀名>,仅当<内存队列>被填满,或者,主机关闭的时候,才会被激活使用
## 磁盘辅助队列文件的位置:/var/lib/rsyslog/ 目录
$ActionQueueFileName action_queue_file
## 定义:<动作队列>的<磁盘辅助队列文件>占用的<最大磁盘空间>,否则就尽可能使用<所有可用的磁盘空间>
$ActionQueueMaxDiskSpace 1g
## 定义:在<关机>时,针对<动作队列>的<内存队列内容>,执行<落盘保存>
$ActionQueueSaveOnShutdown on
## 定义:遇到<动作队列>中断时,将执行<无限次重试>
$ActionResumeRetryCount -1
## 设置:采用TCP方式,将<所有设施.所有级别>的<日志消息>,都发送给<指定的rsyslog服务端> tcp 要两个 @@
*.* @@192.168.58.100:514
## 或设置:采用UDP方式,将<所有设施.所有级别>的<日志消息>,都发送给<指定的rsyslog服务端> udp 要一个 @
## *.* @192.168.58.100:514

systemctl restart rsyslog
firewall-cmd --permanent --add-port=514/tcp --add-port=514/udp
firewall-cmd --reload

测试

可在 客户端创建一个用户
useradd ll

到服务端查看 /var/log/secure 是否有日志

cat /var/log/secure

Aug 15 05:13:37 192 useradd[8428]: new group: name=ll, GID=1004
Aug 15 05:13:37 192 useradd[8428]: new user: name=ll, UID=1004, GID=1004, home=/home/ll, shell=/bin/bash

最后两行如图所示

若想更清晰看到 , 可以在主配置文件定义一个文件,将所有日志内容都放到里面

vim  /etc/rsyslog.conf

在最后一行加上
*.*                                      /test/test1    

保存退出刷新即可,然后继续在客户端进行操作  ## 什么日志内容都写入 /test/test1  

到服务端

cat /test/test1  查看日志

3 管理 logrotate 日志切割

日志的轮替、日志的轮转

​ 为什么要轮转?
​ 1)防止日志文件过大
​ 2)定期清除日志

达到固定大小 或者 天数 就切割成几个文件,定时清空,因为日志内容都都放在同一个文件内容太多会变卡

日志轮转的配置文件

# vim /etc/logrotate.conf
# grep -v ^# /etc/logrotate.conf | grep -v ^$
        weekly                      ## 轮转的周期,一周一轮转
        rotate 4                    ## 保留几个旧的日志文件,类似于备份
        create                      ## 旧日志轮转后是否创建新的空白日志
        dateext                     ## 使用日期作为旧日志的后缀
        include /etc/logrotate.d    ## 包含该路径下的所有配置文件
        /var/log/wtmp {             ## 针对特定的日志进行定制设置
            monthly                 ## 轮滚周期,一个月 daily 是一天,即一天切割一次
            create 0664 root utmp   ## 创建新的日志文件 权限664所有者root所属组utmp
	        minsize 1M              ## 轮滚的最小大小是1M 
	        						## 大于1M或者超过一个月就轮转(切割)
            rotate 1       			## 保留一个备份,原文件变新,轮转之前的日志内容到备份里面          
        }
        /var/log/btmp {
            missingok               ## 丢了也没关系
            monthly
            create 0600 root utmp
            rotate 1
        }

小实验:

1、修改配置文件,添加一行自己定义的内容,重启服务
    # vim /etc/rsyslog.conf
        authpriv.*            /var/log/anquan
    # systemctl rsyslog restart
2、自己编写轮转配置文件
    # vim /etc/logrotate.d/anquan       ##  authpriv(auth):用户授权相关的,认证等  ssh、login、su等
        /var/log/anquan {
            missingok
            daily
            create  0600  root root
            rotate 4					## 4个备份
        }
3、手动轮转日志文件
    # logrotate -vf /etc/logrotate.d/anquan
    # cd /var/log
    # ls anquan*
        anquan  anquan.1
    
相关的参数  							功能
compress      				通过gzip压缩转储以后的日志
nocompress  				不需要压缩时,用这个参数
copytruncate  				用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate  			备份日志文件但是不截断
create mode owner group  	转储文件,使用指定的文件模式创建新的日志文件
nocreate  					不建立新的日志文件
delaycompress 和 compress   一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress  			覆盖delaycompress 选项,转储同时压缩。
errors address  			专储时的错误信息发送到指定的Email 地址
ifempty  					即使是空文件也转储,这个是logrotate 的缺省选项。
notifempty  				如果是空文件的话,不转储
mail address  				把转储的日志文件发送到指定的E-mail 地址
nomail  					转储时不发送日志文件
olddir directory  			转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir  					转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript  		在转储以前需要执行的命令,这两个关键字必须单独成行
postrotate/endscript  		在转储以后需要执行的命令,这两个关键字必须单独成行
daily  						指定转储周期为每天
weekly  					指定转储周期为每周
monthly  					指定转储周期为每月
rotate count  				指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和~
size size  					当日志文件到达指定的大小时才转储,Size 可以指定bytes (缺省)以及KB (sizek)或者MB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值