当前位置: 首页 > news >正文

linux-系统管理与监控-日志管理

Linux 系统管理与监控:日志管理

1. 日志管理概述

日志文件是系统在运行过程中记录的各种信息,它们是系统管理员排查问题、监控系统健康状况的重要工具。在 Linux 系统中,日志涵盖了系统事件、内核信息、用户操作、软件服务和应用程序等内容。通过日志管理,管理员可以监控系统状态、追踪故障、分析性能、甚至发现潜在的安全威胁。

Linux 提供了一套成熟的日志管理机制,通常由 syslogjournald 系统负责收集和管理各种日志。

2. 常见日志文件位置

在大多数 Linux 系统中,日志文件存储在 /var/log 目录下。以下是一些常见的日志文件:

  • /var/log/messages:记录通用系统消息,包括启动、设备驱动信息等(主要用于基于 RHEL、CentOS 的系统)。
  • /var/log/syslog:记录系统范围内的消息和日志(主要用于 Debian 系列系统,如 Ubuntu)。
  • /var/log/auth.log:用户登录与认证相关的日志,包括成功与失败的登录尝试。
  • /var/log/kern.log:内核消息日志,记录内核级别事件和错误。
  • /var/log/dmesg:启动过程中的内核信息和硬件检测日志。
  • /var/log/boot.log:系统启动时的日志,记录启动服务的状态。
  • /var/log/cron.log:定时任务(crontab)的执行情况和错误。
  • /var/log/maillog/var/log/mail.log:与邮件服务相关的日志。
  • /var/log/httpd//var/log/nginx/:Web 服务器日志目录,记录 Web 请求和错误。
  • /var/log/faillog:记录用户登录失败的情况。
  • /var/log/secure:与安全相关的日志,如认证、SSH 连接等。
3. syslogrsyslog 日志管理

syslog 是最早的日志系统,后来发展为功能更强大的 rsyslog。在大多数现代 Linux 发行版中,rsyslog 是默认的日志管理工具。它负责收集系统和应用程序产生的日志,并将它们写入指定的日志文件。

3.1 rsyslog 配置文件

rsyslog 的配置文件位于 /etc/rsyslog.conf,此外,配置目录 /etc/rsyslog.d/ 中的文件也会被自动加载。典型的配置文件包括以下几部分:

  • 模块加载:加载不同的输入和输出模块,用于支持不同格式和传输方式。

    module(load="imuxsock")    # 支持本地 socket(/dev/log)
    module(load="imklog")      # 支持内核日志 (/proc/kmsg)
    
  • 规则格式:日志规则由两部分组成,第一部分定义日志来源(设施和级别),第二部分定义日志的目标(日志文件、远程主机等)。规则格式如下:

    <设施>.<级别>   <日志文件或其他目标>
    

    其中,设施(facility)表示日志的来源,常见设施包括:

    • auth:认证相关日志(如 SSH、sudo)。
    • cron:定时任务日志。
    • kern:内核相关日志。
    • mail:邮件系统日志。
    • daemon:守护进程日志。
    • user:用户进程日志。

    级别(level)表示日志的严重性,从低到高的级别包括:

    • debug:调试信息。
    • info:普通信息。
    • notice:正常但值得注意的情况。
    • warning:警告,可能有问题。
    • err:错误,影响系统功能。
    • crit:严重错误,可能导致系统宕机。
    • alert:需要立即采取行动。
    • emerg:紧急情况,系统可能无法使用。

    例如,以下规则将所有 auth 相关的 info 及以上级别的日志记录到 /var/log/auth.log 文件中:

    auth.info   /var/log/auth.log
    

    将内核警告级别以上的日志记录到 /var/log/kern.log

    kern.warn   /var/log/kern.log
    
3.2 远程日志收集

rsyslog 支持远程日志收集,可以将日志发送到远程服务器进行集中管理。为了启用远程日志收集,需要在客户端和服务器上进行相应配置。

  • 在日志服务器上,编辑 /etc/rsyslog.conf,启用 UDP 或 TCP 监听:

    module(load="imudp")
    input(type="imudp" port="514")module(load="imtcp")
    input(type="imtcp" port="514")
    

    然后重启 rsyslog 服务:

    sudo systemctl restart rsyslog
    
  • 在客户端上,编辑 /etc/rsyslog.conf,将日志发送到远程服务器:

    *.*  @@192.168.1.100:514  # 使用 TCP 协议
    

    或者:

    *.*  @192.168.1.100:514   # 使用 UDP 协议
    

    同样,重启 rsyslog 以使配置生效。

3.3 日志轮转(Log Rotation)

日志文件会随着时间变得越来越大,因此需要定期对日志文件进行轮转(Log Rotation)。在 Linux 系统中,logrotate 工具负责自动轮转日志文件。它通常通过 cron 任务定期运行。

logrotate 的配置文件位于 /etc/logrotate.conf,具体的服务日志文件配置通常位于 /etc/logrotate.d/ 目录下。

一个简单的 logrotate 配置文件示例如下:

/var/log/syslog {dailyrotate 7compressmissingoknotifemptydelaycompresspostrotate/usr/lib/rsyslog/rsyslog-rotateendscript
}
  • daily:每天轮转一次日志。
  • rotate 7:最多保留 7 个旧日志文件。
  • compress:压缩旧日志文件。
  • missingok:如果日志文件不存在,不要报错。
  • notifempty:如果日志文件为空,不进行轮转。
  • postrotate:轮转后执行的脚本或命令,通常用于重新加载日志服务。
4. systemdjournald

在基于 systemd 的现代 Linux 系统中,journaldsystemd 的日志收集组件。与传统的基于文本文件的 rsyslog 不同,journald 通过二进制格式存储日志,这带来了更好的性能和搜索功能。

4.1 journald 日志查看

journald 使用 journalctl 命令来查看系统日志。以下是一些常见的 journalctl 用法:

  • 查看所有日志

    journalctl
    
  • 按时间范围查看日志

    查看最近一小时的日志:

    journalctl --since "1 hour ago"
    
  • 查看特定服务的日志

    查看 nginx 服务的日志:

    journalctl -u nginx
    
  • 查看启动后的日志

    查看本次启动后的日志:

    journalctl -b
    
  • 持续实时查看日志

    类似于 tail -f,实时查看新生成的日志:

    journalctl -f
    
4.2 journald 配置

journald 的配置文件位于 /etc/systemd/journald.conf。一些重要的配置选项包括:

  • Storage:定义日志的存储方式。可以是 volatile(存储在内存中,重启后丢失)、persistent(存储在硬盘上)、auto(默认,若 /var/log/journal/ 目录存在,则使用持久存储)。
  • Compress:是否压缩日志文件。
  • SystemMaxUse:定义日志占用的最大磁盘空间。
  • SystemMaxFileSize:每个日志文件的最大大小。

例如,启用持久化日志存储并设置日志大小限制:

[Journal]
Storage=persistent
SystemMaxUse=1G
SystemMaxFileSize=200M

修改配置后,可以通过以下命令重新启动 journald

sudo systemctl restart systemd-journald
5. 日志分析和监控

除了记录系统日志,系统管理员还需要定期分析日志以发现潜在问题和异常行为。常见的日志分析工具和方法包括:

  • grep 和 awk:通过 grepawk 可以方便地过滤和提取日志中的关键信息。

    例如,查找所有 SSH 登录失败的日志条目:

    grep "Failed password" /var/log/auth.log
    
  • 日志监控工具:如 logwatch,可以定期分析日志并生成简报。

    安装 logwatch

    sudo apt install logwatch
    

    使用 logwatch 生成报告:

    sudo logwatch --detail high --mailto admin@example.com --service sshd
    
  • 可视化工具:ELK 堆栈(Elasticsearch、Logstash、Kibana)是常用的日志收集、分析和可视化解决方案。通过 Logstash 收集日志,Elasticsearch 进行存储和检索,Kibana 提供用户友好的界面进行日志可视化。

6. 日志管理的最佳实践
  • 定期检查日志:系统管理员应定期检查关键日志文件,如认证日志(auth.log)、系统日志(syslog),以尽早发现异常。
  • 配置日志轮转:确保日志文件不会占用过多的磁盘空间,合理设置轮转策略,压缩旧日志。
  • 启用远程日志收集:对于关键的服务器,使用集中式日志管理工具(如 ELK、Graylog),将日志发送到远程服务器,避免本地日志被篡改。
  • 设置合适的日志级别:根据需求调整日志的记录级别,避免过多不必要的日志信息占用系统资源。
7. 总结

日志管理是 Linux 系统管理与监控的重要组成部分。通过配置 rsyslogjournald,系统可以收集、存储和管理大量的日志信息。借助 logrotate,日志可以自动轮转,防止占用过多磁盘空间。使用工具如 journalctllogwatch,管理员可以轻松分析和监控系统状态。

相关文章:

linux-系统管理与监控-日志管理

Linux 系统管理与监控&#xff1a;日志管理 1. 日志管理概述 日志文件是系统在运行过程中记录的各种信息&#xff0c;它们是系统管理员排查问题、监控系统健康状况的重要工具。在 Linux 系统中&#xff0c;日志涵盖了系统事件、内核信息、用户操作、软件服务和应用程序等内容…...

VulhubDC-4靶机详解

项目地址 https://download.vulnhub.com/dc/DC-4.zip实验过程 将下载好的靶机导入到VMware中&#xff0c;设置网络模式为NAT模式&#xff0c;然后开启靶机虚拟机 使用nmap进行主机发现&#xff0c;获取靶机IP地址 nmap 192.168.47.1-254根据对比可知DC-4的一个ip地址为192.1…...

[数据集][目标检测]烟叶病害检测数据集VOC+YOLO格式612张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;612 标注数量(xml文件个数)&#xff1a;612 标注数量(txt文件个数)&#xff1a;612 标注类别…...

Sapiens——人类视觉大模型的基础

引言 大规模预训练以及随后针对特定任务的语言建模微调取得了显著成功&#xff0c;已将这种方法确立为标准做法。同样&#xff0c; 计算机视觉方法正逐步采用大规模数据进行预训练。LAION5B、Instagram-3.5B、JFT-300M、LVD142M、Visual Genome 和 YFCC100M 等大型数据集的出现…...

《深度学习》【项目】 OpenCV 身份证号识别

目录 一、项目实施 1、自定义函数 2、定位模版图像中的数字 1&#xff09;模版图二值化处理 运行结果&#xff1a; 2&#xff09;展示所有数字 运行结果&#xff1a; 3、识别身份证号 1&#xff09;灰度图、二值化图展示 运行结果 2&#xff09;定位身份证号每一个数…...

机器学习实战—天猫用户重复购买预测

目录 背景 数据集 用户画像数据 用户行为日志数据 训练数据 测试数据 提交数据 其它数据 数据探索 导入依赖库 读取数据 查看数据信息 缺失值分析 数据分布 复购因素分析 特征工程 模型训练 模型验证 背景 商家有时会在特定日期,例如节礼日(Boxing-day),黑…...

一款rust语言AI神器cursor在ubuntu环境下的安装启动教程

虽然cursor目前只支持英文但是它强大的代码联想能力以及问答能力&#xff0c;可以高效的提高编码效率。 如下步骤所有的前提是你的ubuntu上面已经安装了vscode以及其必须的extensions。 1 下载 到官网https://www.cursor.com下载指定版本的软件。 下载到本地以后会生成如下软…...

【C#生态园】发现C#中的数据科学魔法:6款不可错过的库详解

探索C#中的数据科学与机器学习&#xff1a;6个强大库解析 前言 在数据科学和机器学习领域&#xff0c;Python一直占据着主导地位&#xff0c;然而对于习惯使用C#编程语言的开发人员来说&#xff0c;寻找适用于C#的数据科学库一直是一个挑战。本文将介绍几个流行的用于C#的数据…...

导入neo4j数据CSV文件及csv整理demo示例

Neo4j导入CSV文件&#xff08;实体和关系&#xff09;_neo4j导入csv关系-CSDN博客 https://blog.csdn.net/m0_69483514/article/details/131296060?spm1001.2101.3001.6661.1&utm_mediumdistribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ER…...

bug | pycharm社区版无sciview解决办法

一个程序运行多个图&#xff0c;plt.show()一次只弹出一个独立窗口&#xff0c;必须关掉一个才能显示下一张图&#xff0c;想找sciview却发现找不到&#xff0c;本来以为是新版pycharm的问题&#xff0c;后来才发现是community版根本没有sciview…不想换专业版了&#xff0c;研…...

PL/SQL程序设计入门

PL/SQL程序设计 PL/SQL起步鼻祖&#xff1a;hello World语法分析声明部分举例 应用举例 PL/SQL 起步鼻祖&#xff1a;hello World 先举个例子&#xff0c;用PL/SQL打印输出hello world declarev_string varchar2(20); beginv_string:hello world;dbms_output.put_line(v_str…...

一、Numpy入门

Numpy入门 前言一、numpy简介二、Numpy的ndarray属性2.1. 直接用 .属性的方法实现2.2. 直接函数的方法实现 三、Numpy的ndarray的创建3.1. ndarray介绍3.2. 数组形式3.3. zeros()、ones() 、 empty()3.4. arange()&#xff0c;类似 python 的 range() &#xff0c;创建一个一维…...

自动化测试框架设计核心理念——关键字驱动

很多人在接触自动化测试时&#xff0c;都会听到关键字驱动这样的一个概念&#xff0c;但是在研究时却有些不太清楚这种驱动模式的设计及实现到底该如何着手去做。 关键字驱动&#xff0c;作为一种自动化测试框架的设计形式&#xff0c;在很早的时候就已经有提及过了。它的基本…...

GO GIN SSE DEMO

文章目录 接口描述&#xff1a;1.1 /events/time - 时间流1.2 /events/numbers - 数字流 2. 用户管理接口2.1 /user/:id - 获取用户信息2.2 /user - 创建用户 项目结构1. main.go2. 创建 handlers/event_time.go3. 创建 handlers/event_number.go4. handlers/user.go5. 运行服务…...

GEE教程:1950-2023年ECMWF数据中积雪的长时序统计分析

目录 简介 数据 函数 millis() Arguments: Returns: Long 代码 结果 简介 1950-2023年ECMWF数据中积雪的长时序统计分析 数据 ECMWF/ERA5_LAND/DAILY_AGGR是由欧洲中期天气预报中心(ECMWF)提供的数据集。它是一个格网数据集,包含从ERA5-Land再分析数据集中得出的…...

【React Native】路由和导航

RN 中的路由是通过 React Navigation 组件来完成的 Stack 路由导航RN 中默认没有类似浏览器的 history 对象在 RN 中路由跳转之前&#xff0c;需要先将路由声明在 Stack 中<Stack.Navigator initialRouteNameDetails> <Stack.Screen nameDetails /> </Stack.N…...

Linux环境基础开发工具---vim

1.快速的介绍一下vim vim是一款多模式的编辑器&#xff0c;里面有很多子命令&#xff0c;来实现代码编写操作。 2.vim的模式 vim一共有三种模式&#xff1a;底行模式&#xff0c;命令模式&#xff0c;插入模式。 2.1vim模式之间的切换 2.2 谈论常见的模式---命令模式&#xf…...

python AssertionError: Torch not compiled with CUDA enabled

查看&#xff1a;torch import torch# 输出带CPU&#xff0c;表示torch是CPU版本的 print(ftorch的版本是&#xff1a;{torch.__version__}) # print(ftorch是否能使用cuda&#xff1a;{torch.cuda.is_available()}) 修改一下代码&#xff0c;将cuda改成cpu 最后运行正常&…...

Pandas的入门操作-Series对象

Pandas的数据结构 Series对象 class pandas.Series(dataNone, indexNone) data参数 含义&#xff1a;data是Series构造函数中最主要的参数&#xff0c;它用来指定要存储在Series中的数据。 数据类型&#xff1a;data可以是多种数据类型&#xff0c;例如&#xff1a; Python 列…...

自然语言处理系列六十八》搜索引擎项目实战》搜索引擎系统架构设计

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十八搜索引擎项目实战》搜索引擎系统架构设计…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...