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

Linux 日志与时间同步指南

1. 如何记录系统信息?日志有什么作用?

记录系统信息的方法

  • 日志文件:系统和服务将运行状态、错误、事件写入文件(如 /var/log/syslog)。

  • 日志服务:通过 systemd-journald 或 rsyslog 统一收集和管理日志。

日志的核心作用

  1. 故障排查:通过错误日志定位问题根源(如服务崩溃原因)。

  2. 安全审计:记录用户登录、文件修改等敏感操作。

  3. 性能监控:分析资源使用情况(如 CPU、内存占用峰值)。

  4. 合规要求:满足行业法规对日志保留的要求。

通俗比喻:日志就像飞机的“黑匣子”,记录系统运行的每一刻。


2. systemd-journald 服务的事件来源

systemd-journald 是系统日志的“中央收集站”,从以下来源获取信息:

  1. 内核日志:硬件错误、驱动问题(如 dmesg 显示的内容)。

  2. 系统服务日志:所有 systemd 管理的服务(如 nginxssh)。

  3. 标准输出/错误:应用程序直接输出的日志。

  4. 结构化日志:支持附加元数据(如优先级、时间戳)。

关键特性

  • 二进制格式存储(效率高,但需用 journalctl 查看)。

  • 支持按时间、服务名、优先级过滤日志。


3. systemd-journald 与 rsyslog 的协作流程
  1. systemd-journald

    • 实时收集所有日志(包括内核、服务、应用)。

    • 临时存储日志到内存或持久化文件(/var/log/journal/)。

  2. rsyslog

    • 从 systemd-journald 读取日志。

    • 根据规则将日志分类存储到不同文件(如 /var/log/auth.log)。

    • 支持转发到远程服务器或数据库。

流程示意图

应用程序 → systemd-journald → rsyslog → /var/log/ 或远程服务器  

4. rsyslog 的日志处理规则存放位置
  • 主配置文件/etc/rsyslog.conf

  • 自定义规则/etc/rsyslog.d/*.conf

示例规则

# 将所有认证相关日志存到 auth.log  
auth.*    /var/log/auth.log  
# 将错误日志转发到远程服务器  
*.error   @192.168.1.100:514  

5. 日志文件轮转的作用

轮转(Log Rotation):自动分割、压缩、删除旧日志,防止单个文件过大。

  • 作用

    • 节省磁盘空间。

    • 保留历史日志(如按周、月归档)。

    • 避免打开大文件时的性能问题。

轮转工具logrotate(配置文件在 /etc/logrotate.conf 和 /etc/logrotate.d/)。

示例配置

# 轮转 /var/log/nginx/access.log,保留30天  
/var/log/nginx/access.log {  
    daily  
    rotate 30  
    compress  
    missingok  
}  

6. 手动发送 Syslog 消息

使用 logger 命令:

logger -p auth.warning "Failed login attempt"  # 发送一条认证警告日志  
  • 参数解释

    • -p:指定优先级(如 auth.warning)。

    • -t:添加标签(如 -t "MyScript")。


7. 默认系统日志存储位置
  • 传统日志/var/log/ 目录下,如:

    • syslog:通用系统日志。

    • auth.log:认证相关日志。

    • kern.log:内核日志。

    • messages:旧版系统的通用日志。

  • Journald 日志/var/log/journal/(二进制格式,需用 journalctl 查看)。


8. 系统日志字段解析

一条典型的 Syslog 条目包含以下字段:

Aug 10 14:30:01 server sshd[1234]: Failed password for root from 192.168.1.5 port 22  
│      │       │      │    │         │  
│      │       │      │    │         └─ 日志内容  
│      │       │      │    └─ 进程名和 PID  
│      │       │      └─ 服务名  
│      │       └─ 主机名  
│      └─ 时间  
└─ 月份  

9. 避免系统重启时清除日志

针对 Journald

  1. 修改 /etc/systemd/journald.conf,设置:

    Storage=persistent  # 持久化存储日志  
  2. 创建日志目录并重启服务:

    sudo mkdir -p /var/log/journal  
    sudo systemctl restart systemd-journald  

10. /etc/systemd/journald.conf 的 Storage 参数
  • auto:默认值,若 /var/log/journal/ 存在则持久化,否则存内存。

  • persistent:强制持久化存储(重启后保留)。

  • volatile:仅存内存(重启后丢失)。

  • none:不存储(仅转发到其他服务)。


11. 持久系统日志的优点与轮转机制

优点

  • 长期保留日志,便于追溯历史问题。

  • 支持全文搜索和复杂过滤。

内置轮转机制

  • Journald 自动按时间或大小分割日志文件。

  • 默认配置:

    • 单个日志文件不超过 10MB。

    • 总日志大小不超过磁盘空间的 10%。


12. 配置持久系统日志
  1. 编辑 /etc/systemd/journald.conf

    Storage=persistent  
    Compress=yes        # 启用压缩  
    SystemMaxUse=1G     # 日志最大占用 1GB 空间  
  2. 重启服务:

    sudo systemctl restart systemd-journald  

时间同步(NTP)与 Chrony

13. NTP 协议的作用
  • 网络时间协议(NTP):确保所有设备时间一致(误差在毫秒级)。

  • 重要性

    • 日志时间戳对齐(排查跨主机问题)。

    • 加密通信(如 HTTPS 证书验证)。

    • 分布式系统协调(如数据库事务)。

通俗比喻:NTP 是互联网的“原子钟”,让全球计算机时间同步。


14. tzselect 命令
  • 作用:交互式选择时区(不修改系统配置,仅生成时区名称)。

  • 用法

    tzselect  
    # 按提示选择洲、国家、城市  
    # 输出示例:TZ='Asia/Shanghai'  
  • 实际配置时区

    sudo timedatectl set-timezone Asia/Shanghai  

15. chronyd 服务
  • 作用:替代传统 ntpd,实现更精确的时间同步。

  • 优点

    • 更快适应时钟漂移(如虚拟机暂停后恢复)。

    • 支持间歇性网络连接(如笔记本电脑)。

  • 管理命令

    systemctl status chronyd    # 查看状态  
    chronyc tracking            # 查看时间同步状态 

16. chrony.conf 中的时间源类别
  • server:指定具体的 NTP 服务器(如 server ntp.aliyun.com)。

  • pool:使用池域名(自动选择多个服务器,如 pool.ntp.org)。

示例配置

server ntp1.aliyun.com iburst  
pool pool.ntp.org iburst  

17. iburst 选项的作用
  • 功能:在启动时快速同步时间(发送多个请求包,加速收敛)。

  • 适用场景:初次同步或长时间未同步后恢复连接。


18. NTP 时间源的 Stratum 层级
  • Stratum:表示时间源的距离权威源(如原子钟)的跳数。

    • Stratum 0:原子钟、GPS 时钟(物理设备)。

    • Stratum 1:直接连接 Stratum 0 设备的服务器。

    • Stratum 2:从 Stratum 1 同步的服务器,依此类推。

  • 选择原则:Stratum 越小,时间越精确(通常优先选择 Stratum 1-3)。


http://www.kler.cn/a/589765.html

相关文章:

  • 2024浙江大学计算机考研上机真题
  • 【蓝桥杯】省赛:神奇闹钟
  • 自然语言处理(2)—— NLP之百年风雨路
  • Android第三次面试(Java基础)
  • 蓝牙系统的核心组成解析
  • Secs/Gem第一讲 · 总结精华版(基于secs4net项目的ChatGpt介绍)
  • TypeScript类型兼容性 vs JavaScript动态类型:深入对比解析
  • redis分片集群如何解决高并发写问题的?
  • 【2025年3月最新】Cities_Skylines:城市天际线1全DLC解锁下载与教程
  • 对项目进行优化
  • STL——vector
  • openai 标准化协议 Structured Outputs 具体示例教程
  • [蓝桥杯 2024 国 A] 最长子段
  • 虚幻基础:GAS
  • 2.4 python网络编程
  • Matlab 单球机器人动力学与LQR控制研究
  • 2025年03月11日Github流行趋势
  • 深入理解C++编程:从内存管理到多态与算法实现
  • 国密系列加密技术及其在爬虫逆向中的应用研究
  • JDK15开始偏向锁不再默认开启