Linux---日志管理

news2024/11/28 15:54:13

本章主要介绍Linux中的日志管理

  • 了解rsyslog是如何管理日志的
  • 查看日志的方法

日志管理简介

  工作当中的日志,特指硬件和软件的日志,管理员可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。日志管理包括管理系统日志、应用程序日志、安全日志、日志审计、网络日志等。

  日志中记录了各种各样的问题,所以读取日志是检测并排除故障的一个重要方式,日志文件默认放在/var/log目录下。不同的问题要读取不同的日志,例如,邮件发不出去,可以读 取/var/log/maillog日志文件;要查看哪些用户试图用ssh登录到本机,可以读 取/var/log/secure日志文件。 

  在RHEL8/CentOS8中,日志是由rsyslogd服务管理的,不同类别的日志放在哪个文件中,由/etc/rsyslog.conf决定。 

  在/etc/rsyslog.conf中可以定义一系列的规则,决定不同类别的日志保存在哪个文件中。 定义规则的格式如下。 

  •  日志类别.日志级别标准线 文件

  如果某个应用程序的日志级别大于等于日志类别后面的级别标准线,则日志会被记录到指定的文件中,不妨先仔细看完下面的内容。 

日志类别包括以下几种。

  1. auth:用户认证时产生的日志。
  2. authpriv:ssh、ftp等登录信息的验证信息。
  3. daemon:一些守护进程产生的日志。
  4. ftp:ftp产生的日志。
  5. lp:打印相关活动。
  6. mark:服务内部的信息,是时间标识。
  7. news:网络新闻传输协议(NNTP)产生的消息。
  8. syslog:系统日志。
  9. security:安全相关的日志。
  10. uucp:Unix-to-Unix Copy,两个 UNIX之间的相关通信。
  11. console:针对系统控制台的消息。
  12. cron:系统执行定时任务产生的日志。
  13. kern:系统内核日志。
  14. local0~local7:由自定义程序使用。
  15. mail:邮件日志。
  16. user:用户进程。 

日志级别包括以下几种。

  1. emerg:恐慌状态,如关机、重启系统等。
  2. alert:紧急状态。
  3. crit:临界状态。
  4. err:其他错误。
  5. warning:警告。
  6. notice:需要调查的事项。
  7. info:一般的事件信息。
  8. debug:仅供调试。 

  不需要详细了解具体每个级别的意义,只需知道这些级别从上往下是越来越低的。emerg 级别最高,debug级别最低。   

  在写程序时,可以在程序的代码中定义一个日志信息,这个日志应该属于哪个类别,以及级别是什么。当程序中的这个代码块被执行时,/etc/rsyslog.conf决定这个日志会写入哪个文件中。 

为了更好地理解,先看一个例子。假设rsyslog.conf中已经定义了4条日志规则,如下图所示。 

   这里定义了不同类别的日志记录的最低标准,以及记录到哪个文件中。例如,第4条规则 local5类别的日志,如果级别大于等于info,会记录到 file4.log中,如下图所示。 

  现在有一个A应用,在其代码中指定它所使用的日志类别是local5,所以在A应用的日志生成时,会使用第4条规则。因为第4条规则指定的是如何记录 local5级别的日志。 

  那么,A应用所产生的日志到底会不会被第4条规则记录呢?主要取决于A应用的日志级别 是否达到规则要求的最低标准。A应用产生的日志级别为debug,而规则4要记录的最低级别为info, debug的级别低于info。所以,A应用产生的日志没有达到规则4的最低“分数 线”,是不会被记录到file4.log 中的。 


  

rsyslog的配置 

  用vim编辑器打开/etc/rsyslog.conf,往下找到RULES关键字#### RULES ####,定义的都是记录日志的规则,去掉对应的注释行之后内容如下。

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

  上面这行*.info中的*表示所有类别的日志,都可以匹配到这条规则,但是要求应用程序的日志级别要达到info以上才会记录到/var/log/messages中。 

  但是这里的*要排除mail、authpriv和 cron这三个类别,即这三个类别的日志不匹配这条规则,因为这三个类别后面写的级别是non。 

authpriv.*                                              /var/log/secure

  这条规则的意思是,只要应用程序产生的日志是authpriv类别的就匹配这条规则,不管日志是哪个级别的,日志都记录到/var/log/secure中。 

mail.*                                                  -/var/log/maillog

   这条规则的意思是,只要应用程序产生的日志是mail类别的就匹配这条规则,不管日志是哪个级别的,日志都记录到/var/log/maillog中。

cron.*                                                  /var/log/cron

  这条规则的意思是,只要应用程序产生的日志是cron类别的就匹配这条规则,不管日志是哪个级别的,日志都记录到/var/log/cron 中。 

*.emerg                                                 :omusrmsg:*

  这条规则的意思是,不管应用程序产生的日志是哪个类别的,只要日志级别是emerg,就 会通知所有人(所有终端都会有消息提醒)。 

uucp,news.crit                                          /var/log/spooler

  这条规则的意思是,只要应用程序产生的日志是uucp或news类别的就匹配这条规则,日志级别大于或者等于crit时,日志都记录到/var/log/spooler 中。 

local7.*                                                /var/log/boot.log

  这条规则的意思是,只要应用程序产生的日志是local7类别的就匹配这条规则,不管日志是哪个级别的,日志都记录到/var/log/boot.log 中。 

下面开始自己写一条规则,在vim 编辑模式下,在上面规则的后面添加一条内容。

local6.info                                             /var/log/xx.log

  这条规则的意思是,只要应用程序产生的日志是 local6类别的就匹配这条规则,但是要求日志的级别要大于等于info才能记录到/var/log/xx.log中。 

保存退出并重启rsyslog,命令如下。

[root@rhel03 ~]# systemctl restart rsyslog.service

下面模拟一个应用程序产生一个类别为local6、级别为debug的日志,命令如下。 

[root@rhel03 ~]# logger -p local6.debug "1111"
[root@rhel03 ~]# 

这个命令的意思是,模拟产生一个类别为local6、级别为debug的日志,日志内容为 1111. 

这个日志应该会使用配置文件/etc/rsyslog.conf中所定义的如下两条规则。 

*.info;mail.none;authpriv.none;cron.none                /var/log/messages
local6.info                                             /var/log/xx.log

  第一条规则能匹配到任何类别,但是要求info级别以上的日志;第二条能匹配local6类别、 info级别以上的日志。但模拟日志仅仅是debug级别的,不达标,所以模拟日志是不会被记录的,如下所示。 

[root@rhel03 ~]# ls /var/log/xx.log
ls: 无法访问'/var/log/xx.log': 没有那个文件或目录
[root@rhel03 ~]#

现在重新模拟一个 local6级别为info的日志,日志内容为2222,命令如下。 

[root@rhel03 ~]# logger -p local6.info "2222"
[root@rhel03 ~]# 

  按照上面的分析,这个日志会被记录,且会记录到/var/log/messages和/var/log/xx.log 两个日志文件中,下面来验证一下。 

[root@rhel03 ~]# grep -w "2222" /var/log/messages
Dec  7 11:58:19 rhel03 root[7372]: 2222
[root@rhel03 ~]#
[root@rhel03 ~]# cat /var/log/xx.log 
Dec  7 11:58:19 rhel03 root[7372]: 2222
[root@rhel03 ~]#

可以看到,这个日志被记录到两个文件中了。

现在重新模拟—个local6级别为err 的日志,日志内容为3333,命令如下。 

[root@rhel03 ~]# logger -p local6.err "3333"
[root@rhel03 ~]# 

然后确认这个日志是否被记录,命令如下。 

[root@rhel03 ~]# grep 3333 /var/log/messages
Dec  7 12:03:41 rhel03 root[7454]: 3333
[root@rhel03 ~]# cat /var/log/xx.log 
Dec  7 11:58:19 rhel03 root[7372]: 2222
Dec  7 12:03:41 rhel03 root[7454]: 3333
[root@rhel03 ~]# 

查看日志 

前面分析了rsyslog是如何归纳日志信息的,下面来看如何查看日志。

  第一种方式就是查看日志文件,因为不同类别的日志被记录到不同的日志文件了,所以我们查看对应的日志文件即可。 

  • 查看系统的启动过程,可以通过/var/log/boot.log来查看。
  • 查看谁通过ssh、ftp等登录系统或尝试登录系统,可以通过/var/log/secure 来查 看。
  • 查看邮件服务器收发邮件的情况,可以通过/var/log/maillog来查看。
  • 查看安装或卸载了哪些包,可以通过/var/log/dnf.log来查看。 

  大部分的日志信息都是记录在/var/log/messages中的,可以在此日志文件中查找相关信 息。除以上查看日志文件的方式外,还可以通过 journalctl 命令来查看,命令如下。 

[root@rhel03 ~]# journalctl 
-- Logs begin at Thu 2023-12-07 05:47:36 +03, end at Thu 2023-12-07 12:03:41 +03. --

  直接输人“journalctl”,会显示系统所有的日志。此时显示了一页的日志,按【Esc】键 可以退出来,按【Enter】键可以一行一行地往下显示,按空格键可以一页一页地往下显示。 

如果想查看最新的日志,命令如下。 

[root@rhel03 ~]# journalctl -f
-- Logs begin at Thu 2023-12-07 05:47:36 +03. --

  此处日志仍然处于打开状态,不会看到终端提示符,如果此时日志有变化,这里会继续输 出。按【Ctrl+C】组合键退出。 

  如果想查看日志中某级别以上的日志,可以加上“-p级别”选项来查看。例如,查看 emerg级别的日志,命令如下。 

[root@rhel03 ~]# journalctl -p emerg 
-- Logs begin at Thu 2023-12-07 05:47:36 +03, end at Thu 2023-12-07 12:03:41 +03. --
-- No entries --
[root@rhel03 ~]# 

  没有任何输出,说明系统中暂时没有emerg级别的日志。我们先模拟一个类别为local6、 级别为emerg的日志,命令如下。 

[root@rhel03 ~]# logger -p local6.emerg "xxxx"
[root@rhel03 ~]# 
Broadcast message from systemd-journald@rhel03 (Thu 2023-12-07 12:09:22 +03):

root[7532]: xxxx


Message from syslogd@rhel03 at Dec  7 12:09:22 ...
 root[7532]:xxxx
[root@rhel03 ~]#

然后再次查看所有emerg 级别以上的日志,命令如下。 

[root@rhel03 ~]# journalctl -p emerg 
-- Logs begin at Thu 2023-12-07 05:47:36 +03, end at Thu 2023-12-07 12:09:22 +03. --
12月 07 12:09:22 rhel03 root[7532]: xxxx
[root@rhel03 ~]# 

可以看到,有一条emerg 级别的日志了。

journalctl还可以查看某个时间段的日志,格式如下。 

  • journalctl ‐‐since "时间1" ‐‐until "时间2"

  这里since指的是起始时间,until指的是终止时间,整体的意思是查看的是时间1和时间2 之间的日志。例如,要查看自2023-10-6 20:00:00到2023-10-07 10:00:00且级别要大于等于 err 的日志,命令如下。 

[root@rhel03 ~]# journalctl -p err --since "2023-10-6 20:00:00" --until "2023-10-07 10:00:00"
-- Logs begin at Thu 2023-12-07 05:47:36 +03, end at Thu 2023-12-07 12:09:22 +03. --
[root@rhel03 ~]#

如果没有写until,则查看的是从since所指定的时间点到现在的日志。 

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

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

相关文章

三数组最小距离:2020年408算法题

算法思想 算法实现 #define INT_MAX 0x7fffffff //c语言int类型最大值 //计算绝对值 int abs(int a){if(a<0) return -a;else return a; } //判断a是否为3个数中最小值 bool isMin(int a,int b,int c){if(a<b&&a<c) return true;return false; }//主函数 in…

SpringCloud 微服务集群升级记录(1.5.x-2.7.18)

前言 前段时间&#xff0c;因项目被扫出大量漏洞&#xff0c;全是因为依赖版本过低&#xff0c;存在高中危漏洞需要升级。正好本来也有规划集群升级&#xff0c;因为工作量大迟迟落实不了&#xff0c;正好有这次修漏洞的机会&#xff0c;升级微服务集群。这篇文章主要记录了本…

案例053:基于微信小程序的乐室预约系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

如何快速完成企业私有云部署

快解析赋能企业私有云部署 ​ 很多企业形成了以总部为中心的多点生产体系结构&#xff0c;并借助网络化办公工具搭建跨区域协同办公系统&#xff0c;满足总部与分支机构间的信息互通&#xff0c;进而促进异地业务的信息共享&#xff0c;提高办公处理效率和综合管理水平。 北…

redis-学习笔记(string)

redis 中的字符串, 是按照二进制的方式存储和读取的, 即存啥取啥, 所以一般不会出现乱码问题 (乱码问题是因为存储和读取时使用的编码方式不一样, 但是 redis 没有编码转换) redis 限制了 string 的大小 : 512M, 因为 单线程模型 希望进行的操作能够比较快速, 越大越慢 set key…

基于Java技术的选课管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

uniapp实战 —— 弹出层 uni-popup (含vue3子组件调父组件的方法)

效果预览 弹出的内容 src\pages\goods\components\ServicePanel.vue <script setup lang"ts"> // 子组件调父组件的方法 const emit defineEmits<{(event: close): void }>() </script><template><view class"service-panel"…

uniapp-实现一级二级职位选择,完整页面!!!

一、需求 该页面实现的功能有&#xff1a; 该页面是左侧为一级&#xff0c;右侧为二级&#xff1b;可以搜索职位进行选择&#xff1b;底部显示已选的岗位&#xff0c;点击每一项会删除&#xff1b;右侧的二级岗位&#xff0c;点击时会选中&#xff0c;再次点击会取消&#xf…

Qt 5.15.2 三维显示功能

Qt 5.15.2 三维显示功能 三维显示效果&#xff1a; .pro项目文件 QT core gui opengl 3dcore 3drender 3dinput 3dextrasgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. # In ord…

“我要报名”参观双十二外贸电商节,报名方式都在这!

双十二外贸电商节深圳进出口贸易博览会 2023年12月11-12日 深圳福田会展中心 近1万方展览面积 30000专业观众 跨境选品 外贸采购 行业趋势 人才对接 ▼▼▼▼ 展会时间 2023年12月11日-12日 展会地点 深圳福田会展中心 双十二外贸电商节暨2023深圳进出口贸易博览会选…

更多内窥镜维修技能学习与交流可关注西安彩虹

内窥镜结构及光学成像原理 众多品牌的硬镜其内部结构基本相似&#xff08;如下图&#xff09;&#xff0c;最关键的在于不同用途的硬镜在其结构上发生变化&#xff0c;包括光学成像系统和机械结构。光学成像系统由物镜系统、转像系统、目镜系统三大系统组成。 工作原理 被观察…

发布“最强”AI大模型,股价大涨,吊打GPT4的谷歌股票值得投资吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 谷歌在AI领域的最新进展&#xff0c;引发投资者关注 在谷歌-C(GOOGL)谷歌-A&#xff08;GOOG&#xff09;昨日发布了最新的AI大模型Gemini后&#xff0c;其股价就出现了大幅上涨&#xff0c;更是引发了投资者的密切关注&a…

将输入的字符串反向输出(c语言)

#include<stdio.h> #include<string.h> int main() {int i, j, k;char s[50], temp;gets(s);//输入k strlen(s);//计算字符的长度//反向输出for (i 0, j k - 1;i < k / 2;i, j--){temp s[i];s[i] s[j];s[j] temp;}puts(s);//输出 }

Ubuntu22.04安装和卸载软件的命令行

一、安装 sudo apt install xxx 二、卸载 sudo apt remove xxx 三、卸载依赖包(可选) 第二步软件卸载之后&#xff0c;有一些依赖包没有被卸载。可以使用sudo apt autoremove xxx来卸载。如果不卸载应该也没什么影响

数据结构线性表-栈和队列的实现

1. 栈(Stack) 1.1 概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 …

周星驰 互联网3.0 团队下个月将上线独立 App

2023年12月7日&#xff0c;新浪科技报道指出&#xff0c;周星驰旗下的互联网3.0团队透露&#xff0c;Moonbox&#xff0c;这家周星驰创立的互联网3.0初创公司&#xff0c;计划在明年1月份完成Moonbox App的上线&#xff0c;届时该应用将免费向用户提供服务。 目前&#xff0c;…

进制 + 原码,反码,补码

进制转换 整数部分 小数部分 原码 反码 补码 原码转补码&#xff1a; 左边和右边第一个1不变&#xff0c;中间取反。-0 除外。 计算机系统中数值一律用补码来存储的原因 其他 术语 进制表 进制数的表示 详细教程可转 爱编程的大丙

GEE:不同方向的线性检测算子

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine(GEE)平台上,使用不同方向的线性检测算子进行卷积操作的代码框架、核心函数和多种卷积核,比如 E-W、NE-SW、N-S、NW-SE 方向检测算子等。 结果如下图所示, 文章目录 一、定向检测算子二、完整代码三、代码链接一…

机器人纯阻抗控制接触刚性环境

问题描述 在机器人学中&#xff0c;阻抗控制是一种常用的控制策略&#xff0c;用于管理机器人在与环境交互时的运动和力。阻抗控制背后的关键概念是将环境视为导纳&#xff0c;而将机器人视为阻抗。 纯阻抗控制接触刚性环境时&#xff0c;机器人的行为方式主要受其阻抗参数的…

MeteoInfo-Java解析与绘图教程

MeteoInfo-Java解析与绘图教程(四) 上文我们说到,将地图叠加在色斑图上,但大部分都是卫星绘图,现在开始讲解micaps数据绘图,同样也是更多自定义 配置 首先我们解析micaps数据,将之前学到的东西拿过来绘图 MeteoDataInfo meteoDataInfo new MeteoDataInfo(); meteoDataInfo.o…