linux日志管理总结,rules详解、轮转详解、实例展示。

news2024/11/26 14:25:13

概述

​ 1、日志文件记录系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等
​ 2、通过日志来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。

1. rsyslog系统日志管理

1.1 处理日志的程序:

rsyslog:系统专职日志程序,是一个程序,是一个进程,有配置文件

#ps aux |grep rsyslogd    
(注:d deamon 程序,守护程序,一般不会退出)

用户 /进程号 /cpu /内存 /虚拟内存*2 /没有终端 /线程在sleep /2021年开的 /占cpu104.43秒 /命令

安装: yum install -y rsyslog
启动:systemctl start rsyslog.service

1.2 rsyslogd的主配置文件 — /etc/rsyslog.conf

# rsyslog configuration file

# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html

#### MODULES ####
# 必要的加载模块
# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark  # provides --MARK-- message capability

发送到远程主机,需开启网络服务
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514



#### GLOBAL DIRECTIVES ####

# Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog

# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
定义日志的时间使用默认的时间戳格式

# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on
定义同步功能

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf
子配置文件

# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on

# File to store the position in the journal
$IMJournalStateFile imjournal.state

#### RULES ####

# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none        /var/log/messages
	## *.info  所有设备的基本信息
	## ;  和
	##  mail.none  none表示排除
	
# The authpriv file has restricted access.
authpriv.*                  /var/log/secure

# Log all the mail messages in one place.
mail.*                      -/var/log/maillog
# “-”符号,表示使用异步的方式记录,先放到缓存区,稍晚写到文件中

# Log cron stuff
cron.*                      /var/log/cron


# Everybody gets emergency messages
*.emerg                     :omusrmsg:*
#匹配任何类型,且消息等级是emerg(致命性,最高等级)的消息,会被发送到系统所有用户的登录终端

# Save news errors of level crit and higher in a special file.
uucp,news.crit              /var/log/spooler

1) /etc/rsyslog.conf 配置文件格式

authpriv.* /var/log/secure

·#服务名称+[连接符号]+日志等级 日志记录位置
·#认证相关服务.所有日志等级 记录在/var/log/secure中

RULES:即规则,是一套生成日志,以及存储日志的策略。

规则由四部分组成::facility + 连接符 + level + path     
  • facility 设备:同种应用程序,设计程序时已经制定
设备名说明
authprivssh、ftp 等登录信息的验证信息
cron时间任务相关
kern内核
lpr打印
mail邮件
mark(syslog)-rsyslog服务内部的信息,时间标识
news新闻组
user用户程序产生的相关信息
uucpunix to nuix copy主机之间相关的通信
local 1-7自定义的日志设备

不同设备类型对应多款app

  • 连接符号

    • .”代表只要比后面的等级高的(包含该等级)日志都记录下来。比如:“cron.info”代表cron服务产生的日志,只要日志等级大于等于info级别,就记录
    • .=”代表只记录所需等级的日志,其他等级的都不记录。比如:“*. =emerg”代表任何日志服务产生的日志,只要等级是emerg等级就记录。这种用法及少见,了解就好
    • .!”代表不等于,也就是除了该等级的日志外,其他等级的日志都记录。
  • level级别:记录信息的类型

等级介绍
debug有调试信息的,日志通信最多
info通知信息,属于一般信息
notice普通信息,但是有一定的重要性
warnig警告信息,还不会影响到服务或系统的运行
err错误级别,阻止某个功能或者模块不能正常工作的信息
crit临界状况信息,阻止整个系统或者整个软件不能正常工作的信息
alert警告状态信息,需要立即处理和解决,eg磁盘空间不足
emerg紧急,致命,服务无法继续运行,eg:配置文件丢失
*代表所有日志等级
none忽略这个日志服务
  • path :存储信息的位置 四种写法

    • 日志文件的绝对路径

    • 转达给远程主机(日志服务器)

      • UDP协议:@192.168.1.181:514 (514是日志服务默认端口)
      • TCP协议:@@192.168.1.181:514
    • 用户名

      eg:root,就会把日志发送给root用户(必须在线);”*“ 代表发送给所有在线用户。

      如需把日志发送给多个在线用户,用户名之前用","隔开。

    • ”,代表忽略或丢弃日志。

测试:更改日志保存路径

修改:日志存储路径
vim /etc/rsyslog.conf
# The authpriv file has restricted access.
#authpriv.*                                              /var/log/secure
authpriv.*                                              /var/log/anquan

重新加载rsyslog
[root@vm-150 ~]# systemctl restart rsyslog
[root@vm-150 ~]# cat /var/log/anquan
Dec 16 14:01:55 vm-150 polkitd[710]: Unregistered Authentication Agent for unix-process:125930:137224934 (system bus name :1.6006, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)

换账号测试
[root@vm-150 ~]# su - Bess
上一次登录:三 1216 13:58:32 CST 2022pts/1 上
-bash-4.2$ su -
密码:
上一次登录:三 1216 13:59:20 CST 2022pts/1 上

日志已更新
[root@vm-150 ~]# cat /var/log/anquan 
Dec 16 14:01:55 vm-150 polkitd[710]: Unregistered Authentication Agent for unix-process:125930:137224934 (system bus name :1.6006, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)
Dec 16 14:02:12 vm-150 su: pam_unix(su-l:session): session opened for user Bess by root(uid=0)
Dec 16 14:02:21 vm-150 su: pam_unix(su-l:session): session opened for user root by root(uid=10001)

1.3 常见日志文件(系统、进程、应用程序):

除了系统默认的日志外,采用rpm方式安装的系统服务也会把日志记录在/var/log/目录下,各个服务使用字的日志管理文档来记录自身日志。 源码包安装的服务日志是在源码包指定目录中。

系统常用日志:

日志文件说明
/var/log/message 记录系统重要消息的日志,该日志文件记录 Linux 系统的绝大多数重要信息,如果系统出现问题,首先检查该日志文件 tailf 动态查看日志文件尾部
/var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统登录、ssh 登录、su 切换用户、sudo 授权,添加用户、修改用户密码都会记录在这个日志文件中
/var/log/dmesg 记录系统在开机时内核自检的信总,也可以使用 dmesg 命令直接查看内核自检信息
/var/log/mailog记录邮件信息的日志
/var/log/boot.log系统启动日志
/var/log/cron记录与系统定时任务相关的日志
/var/log/btmp记录错误登录的日志,该文件为二进制文件,不能直接使用 Vi 查看,而要使用 lastb 命令查看。b-bad
/var/log/wtmp永久记录所有用户的登录、注销信息,同时记录系统的后动、重启、关机事件,为二进制文件,要使用 last 命令查看。w-who
/var/tun/utmp记录当前已经登录的用户的信息,该文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息,该文件不能用vi查看,而要使用 w、who、users 等命令查看。u-user
/var/log/lastlog记录系统中所有用户最后一次的登录时间的日志,该文件为二进制文件,要使用 lastlog 命令查看
日志文件说明
/var/log/httpdRPM包安装的apache服务的默认日志目录
/var/log/mail/RPM包安装的邮件服务的额外日志目录
/var/log/samba/Rpm包安装的samba服务的日志目录
/var/log/sssd/守护进程安全服务目录

**举例:messages 内容查看 **

# tailf  /var/log/messages 
Dec 16 09:19:07 lvm-150 sudo: bess : TTY=pts/0 ; PWD=/mnt ; USER=root ; COMMAND=/bin/tailf /var/log/secure
Dec 16 09:19:07 vm-150 sudo: pam_unix(sudo:session): session opened for user root by bess(uid=0)
Dec 16 09:19:23 vm-150 sshd[88436]: Accepted password for bess from 192.168.2.13 port 1738 ssh2
Dec 16 09:19:23 vm-150 sshd[88436]: pam_unix(sshd:session): session opened for user bess by (uid=0)
Dec 16 09:19:53 vm-150 sshd[88436]: pam_unix(sshd:session): session closed for user bess

日志文件格式

只要由日志服务rsyslogd记录的日志文件,格式是一样的,基本包含以下四列:

  • 事件产生的时间;
  • 发生事件的服务器的主机名;
  • 产生事件的服务名或程序名;
  • 事件的具体信息。

1.4 自定义日志

(1)添加日志文件:/var/log/自定义日志.log
(2)编辑 /etc/rsyslog.conf,添加自定义文件
(3)日志类型、日志级别,决定该日志获取的信息

自定义日志   /var/log/ztest.log
[root@vm-150 ~]# vim /etc/rsyslog.conf

cat  /etc/rsyslog.conf
#test 2022-12-15 Besssss
*.*							/var/log/ztest.log

重新加载
[root@vm-150 ~]# systemctl restart rsyslog.service 

查看
[root@vm-150 ~]# cat  /var/log/ztest.log
Dec 15 10:33:49 vm-150 systemd: Stopping System Logging Service...
Dec 15 10:33:49 vm-150 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-57.el7_9.1" x-pid="14640" x-info="http://www.rsyslog.com"] exiting on signal 15.
Dec 15 10:33:49 vm-150 systemd: Stopped System Logging Service.
Dec 15 10:33:49 vm-150 systemd: Starting System Logging Service...
Dec 15 10:33:49 vm-150 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-57.el7_9.1" x-pid="14695" x-info="http://www.rsyslog.com"] start
Dec 15 10:33:49 vm-150 systemd: Started System Logging Service.
Dec 15 10:33:49 vm-150 polkitd[710]: Unregistered Authentication Agent for unix-process:14689:152534829 (system bus name :1.6641, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale zh_CN.UTF-8) (disconnected from bus)

2. logrotate日志轮转 (切割+轮替)

简介:

​ 把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除

目的:

​ 为了节省空间和整理方便,日志文件经常需要按!时间或!大小等维度分成多份,删除时间久远的日志文件。

  • 主配置文件 /etc/logrotate.conf (决定每个日志如何轮转)

  • 子配置文件夹/etc/logrotate.d/*

[root@vm-150 ~]# ls /etc/logrotate.conf /etc/logrotate.d/
/etc/logrotate.conf

/etc/logrotate.d/:
bootlog  firewalld    libvirtd   numad   rh-nginx116-nginx  sssd   yum    chrony   glusterfs    libvirtd.qemu  ppp     rh-php72-php-fpm   syslog     zabbix-agent
cups     iscsiuiolog  mysql    psacct  samba    wpa_supplicant  zabbix-server

2.1 logratate 主配置文件

vim /etc/logrotate.conf

# see "man logrotate" for details
# rotate log files weekly
weekly      #每周对日志文件进行一次轮替

# keep 4 weeks worth of backlogs
rotate 4	#共保存4份日志文件,当建立新的日志文件时,旧的将会被删除

# create new (empty) log files after rotating old ones
create		#在日志轮替后,创建新的空日志文件

# use date as a suffix of the rotated file
dateext		#使用日期作为日志轮替文件的后缀

# uncomment this if you want your log files compressed
#compress   #日志文件是否压缩。如果取消注释,则日志会在转储的同时进行压缩

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d    #包含 /etc/logrotate.d/ 目录中所有的子配置文件,即读取目录中所有子配置文件


#下面是单独设置,优先级更高
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly			        #每月对日志文件进行一次轮替 
    create 0664 root utmp	#建立的新日志文件,权限是 0664 ,所有者是 root ,所属组是 utmp 组
    minsize 1M				#日志文件最小轮替大小是 1MB 。也就是日志一定要超过 1MB 才会轮替,否则就算时间达到一个月,也不进行日志转储
    rotate 1				# 仅保留一个日志备份,即保留 wtmp 和 wtmp.1 日志
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

属性说明:

配置说明
daily轮转周期,每天轮转
weekly轮转周期,一周轮转
monthly轮转周期,每月轮转
yearly轮转周期,一年轮转
rotate 数字保留的日志文件的个数,0 指没有备份
create轮转后创建新文件,旧文件改名
dateext以时间作为文件扩展名(date 时间、extend 扩展)
compress日志轮替时,压缩旧的日志
include /etc/logrotate.d包含该目录下的子配置文件
maxsize 1M达到1M才轮转(date跟max 是或的关系
minsize 30k最小达到30k轮转(date跟mix 同时满足才轮转
size 大小日志只有大于指定大小才进行日志轮替,而不是按照时间轮替
create 0600 root utmp
create mode owner group
轮转后创建新日志,并设置权限。
权限、属主、属组
missingok丢失不提示
notifempty空文件不轮转
missingok如果日志不存在,则忽略该日志的警告信息
mail address当日志轮替时,输出内容通过邮件发送到指定的邮件地址
sharedscripts在此关键字之后的脚本只执行一次
prerotate/endscript在日志轮替之前执行脚本命令,endscript 标识 prerotate 脚本结束
postrotate/endscript在日志轮替之后执行脚本命令,endscrip i标识 postrotate 脚本结束

yum日志轮转实例:

vim /etc/logrotate.d/yum 

之前的:
#/var/log/yum.log {
 #  missingok
 #  notifempty
 #  maxsize 30k
 #  yearly
 #   create 0600 root root
#}

修改后的
/var/log/yum.log {
        missingok
        #notifempty
        daily
        rotate 3
        create 0770 root root
}

重新加载
[root@vm-150 ~]# /usr/sbin/logrotate /etc/logrotate.conf

强制轮转,展示效果
[root@vm-150 logrotate.d]# logrotate  -vf yum 
reading config file yum
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /var/log/yum.log  forced from command line (3 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/yum.log
  log needs rotating
rotating log /var/log/yum.log, log->rotateCount is 3
dateext suffix '-20221216'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
creating new /var/log/yum.log mode = 0770 uid = 0 gid = 0

[root@vm-150 logrotate.d]# ll /var/log/yum.log
-rwxrwx--- 1 root root 0 1216 14:17 /var/log/yum.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工控安全-Modbus重放攻击

文章目录Modbus-重放攻击Modbus-仿真环境(ModSim)Modbus-协议采集(ModbusScan)抓取Modbus/TCP流量使用青云工具进行重放攻击Modbus-重放攻击 Modbus-仿真环境(ModSim) 首先开启Modbus仿真环境 ip地址是10.10.100.11 ModSim32,这个软件是模拟Modbus协议的一个仿真…

git push错误->Error: src refspec master does not match any

参考文章问题描述:在执行命令 git push origin master 时报错->Error: src refspec master does not match any问题分析:在网上查找解决方法,大部分人说是暂存区没有文件,未执行git add 导致出错。但是此时已经执行了git add 操…

将石油和天然气推向边缘

无论是来自在线购物交易还是工业环境中的物联网(IoT)设备,数据都是不断收集的。幸运的是,世界各地的每一个行业都可以利用这一趋势,许多行业都已经这样做了。在石油和天然气行业,持续的数据通信是现在保持完…

JavaScript刷LeetCode-字符串类解题技巧

序章 我们把字符串、数组、正则、排序、递归归为简单算法。接下来系列里,将系列文章里将为大家逐一介绍。 字符串 翻转字符串中的单词 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例 1: 输…

数据库和SQL介绍

数据库管理系统(数据库软件)那么如何实现这种数据库形式的数据管理呢?我们需要借助:数据库管理系统,也就是常说的数据库软件。数据库软件是非常多的,常见的有:这些软件都能实现︰管理库﹑管理表、基于表来管理数据数据库和SQL的关系数据库是…

Java 诊断利器 Arthas 快速入门

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信…

ORB-SLAM2 --- LocalMapping::KeyFrameCulling函数

目录 1.函数作用 2.code 3.函数解析 1.函数作用 检测当前关键帧在共视图中的关键帧,根据地图点在共视图中的冗余程度剔除该共视关键帧。 冗余关键帧的判定:90%以上的地图点能被其他关键帧(至少3个)观测到。 2.code /*** brie…

第七次作业部分

文章目录1、获取根分区剩余大小2、获取当前机器ip地址3、统计出apache的access.log中访问量最多的5个IP4、打印/etc/passwd中UID大于500的用户名和uid5、/etc/passwd 中匹配包含root或net或ucp的任意行6、处理以下文件内容,将域名取出并根据域名进行计数排序处理(百度搜狐面试题…

透过现象看本质,我找到了Netty粘包与半包的这几种解决方案。

1、粘包与半包 啥也不说了,直接上代码是不是有点不太友好,我所谓了,都快过年了,还要啥自行车 我上来就是一段代码猛如虎 1.1 服务器代码 public class StudyServer {static final Logger log LoggerFactory.getLogger(StudyS…

ORB-SLAM2 --- ORBmatcher::Fuse函数 --- 局部建图线程调用重载版

目录 1.函数作用 2.code 3.函数解析 1.函数作用 将参数一的关键帧的地图点与参数二的地图点集合进行融合。 将地图点投影到关键帧中进行匹配和融合;融合策略如下: 1.如果地图点能匹配关键帧的特征点,并且该点有对应的地图点&…

六、k8s Pod控制器详解

1 Pod控制器介绍 Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类: 自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建控制器创建的pod&#x…

异常处理部分

文章目录一、异常概述及体系结构分类ErrorException异常的体系结构异常处理:抓抛模型异常处理机制一:try-catch-finallyfinally的使用异常处理机制一:throws异常类型如何选择两种方式手动生成异常对象如何定义自定义的异常类一、异常概述及体…

JVM学习- - -虚拟机栈详解

前言:今天学长带领大家走进JVM学习,让我们一起来学习认识虚拟机栈吧~ 目录 1 虚拟机栈概述 虚拟机栈出现的背景 初步印象 内存中的栈和堆 虚拟机栈基本内容 栈的优点 2 栈的存储单位 栈中存储什么? 栈运行原理 栈帧的内部结构 3 局…

【云原生】k8s之存储卷

内容预知 前言 1.emptyDir存储卷 2.hostPath存储卷 3.nfs共享存储卷 4. PVC 和 PV的静态存储卷 4.1 pv和pvc的介绍 4.2 pvc 和pv的创建过程及销毁过程 4.3 对pv的操作指导 4.4 静态创建pv和pvc资源由pod运用过程 步骤一:在NFS主机上创建共享目录,…

采用rknn-toolkit导出rknn模型并部署在rock3a-rk3568芯片 上全流程

因工作需要,需要将目标检测模型 部署在开发板上。在走了很多弯路后 找到一个成功的案例并记载下来 这里说一下我现有的硬件设备 。 我是购买的RADXA的rock3a开发板 搭载的soc是rk3568 这是开发板的正面图,因为瑞芯微针对计算机视觉中的目标检测模型有一…

Java IO流 - 缓冲流的详细使用介绍

文章目录缓冲流缓冲流概述字节缓冲流字符缓存流缓冲流 缓冲流概述 缓冲流介绍: 缓冲流也称为高效流、或者高级流。之前学习的字节流和字符流可以称为原始流。 作用:缓冲流自带缓冲区、可以提高原始字节流、字符流读写数据的性能 缓冲流分为: 字节缓存输入流、字节…

做个测试工具

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

uniapp中引入vant Weapp

Vant Weapp官:https://vant-contrib.gitee.io/vant-weapp/#/home 步骤一:下载vant组件插件 从github上下载该插件https://github.com/youzan/vant-weapp 只要这个dist文件夹,把dist重命名为vant; 步骤二: 与pages…

301-295- 至少有 K 个重复字符的最长子串-0105

题解 本题使用分治策略,如果某个字符的出现次数小于k,则用它将数组分开,再把每个子数组组委参数递归执行.如果都大于k,则将该字符串的长度返回. 用一个字符分割,往深了分割各子字符串,这个字符分割完成,使用另一个字符进行分割,而不是一次用多个字符进行分割.这个题递归有些绕…

电脑怎么重装系统?小白也能轻松掌握这些方法

重新安装计算机系统有两种原因:一种是计算机系统可以正常使用,但是电脑比较卡,为了提高它的运行速度,所以想要通过重新安装系统来解决这个问题;另一种原因是计算机系统文件丢失,系统出现蓝屏,或…