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

Linux 日志管理与时钟同步详解

Linux 日志管理与时钟同步详解

一、日志管理

1. 日志服务概述

Linux 系统中主要有两种日志服务,分别负责临时和永久日志的管理:

  • systemd-journald:存储临时日志,服务器重启后日志会丢失,无需手动配置
  • rsyslog:存储永久日志,日志文件可长期保存,核心配置文件为/etc/rsyslog.conf

2. 日志文件的种类与主要路径

系统日志按内容可分为三类:内核及系统日志、用户日志、程序日志。主要日志文件及功能如下:

日志文件路径记录内容
/var/log/dmesg系统引导过程中的各种事件信息(如硬件检测、驱动加载)
/var/log/lastlog每个用户最近一次的登录事件信息
/var/log/wtmp所有用户的登录、注销记录及系统启动、停机事件
/var/log/btmp失败的登录尝试及验证错误事件

3. 日志分析方法

(1)日志优先级

日志优先级从低到高(严重程度递增)如下:

  • debug:程序或系统调试信息(最详细,仅用于开发排查)
  • info:一般信息性事件(正常运行状态记录)
  • notice:不影响功能但需注意的事件
  • warning:可能影响功能的重要提醒
  • err:运行错误(非严重故障)
  • cirt:较严重的情况(需关注)
  • alert:必须立即处理的问题(如服务中断风险)
  • emerg:导致系统不可用的致命错误(最高优先级)
(2)实时监控日志

使用tail -f命令实时跟踪日志文件变化:

tail -f /var/log/messages  # 实时监控系统默认日志
(3)日志记录格式

一条完整日志通常包含四部分:

  • 时间标签:消息发出的日期和时间(如2024-05-20 14:30:00
  • 主机名:生成消息的主机名称(如server01
  • 子系统名称:发出消息的应用程序名或进程 PID(如sshd[1234]
  • 消息内容:具体事件描述(如Accepted password for root from 192.168.1.1
(4)journalctl命令(管理 systemd 日志)

journalctl用于查询systemd-journald记录的日志,常用选项:

选项功能
-n 数字查看最新 N 条日志(默认 10 条,如journalctl -n 20
-f实时监控日志更新(类似tail -f
-p 优先级按优先级显示日志(如journalctl -p err显示错误及以上级别)
--since 时间显示指定时间之后的日志(如journalctl --since "2024-05-20 08:00"
--until 时间显示指定时间之前的日志(配合--since使用)
-o verbose显示详细日志信息(可结合条件过滤,如journalctl -o verbose _COMM=su

常用过滤条件

  • _COMM=命令名:过滤指定命令的日志
  • _PID=进程号:过滤指定 PID 的日志
  • _UID=用户ID:过滤指定用户的日志
  • _SYSTEMD_UNIT=服务名:过滤指定 systemd 服务的日志
(5)手动发送日志消息

使用logger命令向rsyslog服务发送自定义消息,格式:

logger -p 设施.优先级 "消息内容"  # 设施用于分类(如local7、mail等)

示例:向/var/log/boot.log发送 notice 级消息:

logger -p local7.notice "chenyu"

4. 用户日志查询

用户日志主要记录登录相关事件,常用查询命令:

命令功能
lastlog显示所有用户最近一次登录的时间、终端和 IP
users查看当前登录系统的用户(仅显示用户名)
who查看登录用户的终端、登录时间及来源主机
w显示登录用户及其正在执行的命令(比who更详细)
last/var/log/wtmp中读取成功登录的用户历史记录
lastb/var/log/btmp中读取失败的登录尝试记录

5. 远程日志收集配置

通过rsyslog实现远程日志集中管理(以将邮件日志发送到ldap.example.com为例):

  1. 编辑

    rsyslog
    

    配置文件:

    vim /etc/rsyslog.conf
    
  2. 添加规则(格式):

    事件.优先级 目标主机
    
    mail.*    ldap.example.com  # 将所有邮件相关日志发送到ldap.example.com
    
  3. 重启服务使配置生效:

    systemctl restart rsyslog
    systemctl enable rsyslog  # 设置开机自启
    

规则格式说明

  • 第一个*:表示事件类型(如mailauthkern*代表所有)
  • 第二个*:表示优先级(*代表所有级别)

二、时钟同步

1. 基本时间管理(timedatectldate

(1)timedatectl命令

用于查看和设置系统时间、时区及 NTP 同步:

命令功能
timedatectl查看当前时间、时区、NTP 状态
timedatectl list-timezones列出所有可用时区
timedatectl set-timezone "Asia/Shanghai"设置时区为上海
timedatectl set-time "YYYY-MM-DD hh:mm:ss"手动设置系统时间
(2)date命令

手动修改系统时间:

date -s "2024-05-20 15:30:00"  # 设置时间为2024年5月20日15:30:00

2. chrony时间同步服务

chrony是高效的 NTP 替代工具,适用于网络不稳定环境,基于 UDP 协议(端口 323),由chronyd(后台服务)和chronyc(命令行工具)组成

注意:chronydntpd不可同时运行,需二选一

(1)服务端配置(作为时间服务器)
  1. 安装chrony

    yum -y install chrony  # CentOS/RHEL系统
    
  2. 编辑配置文件/etc/chrony.conf

    vim /etc/chrony.conf
    

    添加以下内容:

    local stratum 10        # 不同步外部时间,作为本地时间源(stratum为层级,1-15,越低越优)
    allow 172.16.30.0/24    # 允许172.16.30.0/24网段的主机同步此服务器
    
  3. 重启服务并设置开机自启:

    systemctl restart chronyd
    systemctl enable chronyd
    
  4. 配置防火墙(允许 NTP 服务):

    firewall-cmd --add-service=ntp --permanent  # 永久开放NTP服务
    firewall-cmd --reload  # 重载防火墙规则
    
(2)客户端配置(同步服务端时间)
  1. 安装chrony

    yum -y install chrony
    
  2. 编辑配置文件,指向服务端:

    vim /etc/chrony.conf
    

    修改为:

    server 172.16.30.20 iburst  # 172.16.30.20为服务端IP,iburst表示快速同步
    
  3. 重启服务并设置开机自启:

    systemctl restart chronyd
    systemctl enable chronyd
    
  4. 将系统时间同步到硬件时钟(避免重启后失效):

    hwclock -w
    
(3)chronyc客户端命令
命令功能
chronyc sources查看时间同步源信息(服务端地址及状态)
chronyc sourcestats -v查看同步源的统计信息(如偏差、延迟)

总结

日志管理是系统监控与故障排查的核心,通过rsyslogsystemd-journald可实现日志的永久存储与实时分析;时钟同步则通过chrony确保多主机时间一致性,两者都是 Linux 系统运维的基础技能。掌握日志文件路径、优先级划分及chrony配置,能有效提升系统稳定性与可维护性

http://www.lryc.cn/news/604485.html

相关文章:

  • GIS工程师面试题
  • GitHub 热门项目 PandaWiki:零门槛搭建智能漏洞库,支持 10 + 大模型接入
  • UG NX二次开发(Python)-根据封闭曲线创建拉伸特征
  • Class27GoogLeNet
  • 实用性方案:高效处理图片拼接的正确打开方式
  • sed编程入门
  • [Agent开发平台] Coze Loop开源 | 前端 | typescript架构API速查
  • Python Pandas.get_dummies函数解析与实战教程
  • 【iOS】weak修饰符
  • 磁盘io查看命令iostat与网络连接查看命令netstat
  • [Qt]QString 与Sqlite3 字符串互动[汉字不乱码]
  • iOS电池寿命与App能耗监测实战 构建完整性能监控系统
  • 常见CMS获取webshell的方法-靶场练习
  • 2025年自动化工程与计算机网络国际会议(ICAECN 2025)
  • C++菱形虚拟继承:解开钻石继承的魔咒
  • 3D空间中的变换矩阵
  • 应用药品 GMP 证书识别技术,实现证书信息的自动化、精准化提取与核验
  • Jupyter Notebook安装使用
  • React 开发中遇见的低级错误
  • 防止飞书重复回调通知分布式锁
  • 从单体到分布式:解锁架构进化密码
  • 基于定制开发开源AI智能名片S2B2C商城小程序的B站私域流量引流策略研究
  • day25——HTML CSS 前端开发
  • eBPF 赋能云原生: WizTelemetry 无侵入网络可观测实践
  • 一款基于 ReactNative 最新发布的`Android/iOS` 新架构文档预览开源库
  • 从训练到推理:Intel Extension for PyTorch混合精度优化完整指南
  • Visual Studio Code 使用指南 (2025年版)
  • 记录Linux下ping外网失败的问题
  • 看涨虚值期权卖方亏损风险有多大?
  • Linux 系统进程管理与计划任务详解