简化您的日志:探索 Rsyslog 在 Ubuntu 上实现高效系统日志管理

Streamline Your Logs: Exploring Rsyslog for Effective System Log Management on Ubuntu

简介

在系统管理领域,有效的日志管理对于故障排除、安全监控和确保系统稳定性至关重要。日志提供了关于系统活动、错误和安全事件的宝贵见解。Ubuntu 与大多数 Linux 发行版一样,依赖于日志记录机制来跟踪系统和应用程序事件。

Ubuntu 上最强大的日志记录系统之一是 Rsyslog。它扩展了传统的 syslog 功能,并具有高级功能,例如过滤、通过网络转发日志和日志轮换。本文提供了 在 Ubuntu 上使用 Rsyslog 管理系统日志 的指南,涵盖安装、配置、远程日志记录、故障排除和高级功能。

了解 Rsyslog

什么是 Rsyslog?

Rsyslog(Rocket-fast System for Log Processing,日志处理的火箭速度系统)是一个增强的 syslog 守护程序,可以实现高性能的日志处理、过滤和转发。它旨在高效处理大量的日志,并提供强大的功能,例如

  • 多线程日志处理

  • 基于各种标准的日志过滤

  • 支持不同的日志格式(例如,JSON、CSV)

  • 通过 TCP、UDP 和 TLS 的安全日志传输

  • 日志转发到远程服务器

  • 将日志写入数据库

Rsyslog 是 Ubuntu 20.04 LTS 及更高版本 中的默认日志记录系统,并且通常在企业环境中使用。

安装和配置 Rsyslog

检查 Rsyslog 是否已安装

在安装 Rsyslog 之前,请使用以下命令检查它是否已安装并正在运行

systemctl status rsyslog

如果输出显示 active (running),则表示 Rsyslog 已安装。如果未安装,您可以使用以下命令安装

sudo apt update
sudo apt install rsyslog -y

安装完成后,启用并启动 Rsyslog 服务

sudo systemctl enable rsyslog
sudo systemctl start rsyslog

要验证 Rsyslog 的状态,请运行

systemctl status rsyslog

了解 Rsyslog 配置

Rsyslog 配置文件

Rsyslog 的主要配置文件是

  • /etc/rsyslog.conf – 主配置文件

  • /etc/rsyslog.d/ – 用于附加配置文件的目录

基本配置语法

Rsyslog 使用 facility(设施), severity(严重性), action(动作) 模型

FACILITY.SEVERITY  ACTION
  • Facility(设施):定义日志的类型(例如,auth、cron、daemon、mail、user、syslog)

  • Severity(严重性):定义重要性级别(例如,debug、info、warning、error、critical)

  • Action(动作):定义日志应存储或转发的位置

示例

authpriv.*    /var/log/auth.log
*.info;mail.none;authpriv.none;cron.none    /var/log/syslog
常用日志指令
  • *.*:记录所有设施和严重性

  • cron.*:记录所有 cron 作业

  • authpriv.*:记录身份验证消息

使用 Rsyslog 管理日志文件

默认日志位置

Ubuntu 日志通常存储在

  • /var/log/syslog:通用系统日志

  • /var/log/auth.log:身份验证日志

  • /var/log/kern.log:内核日志

  • /var/log/dmesg:启动日志

自定义日志文件配置

要将日志存储在自定义文件中,请编辑 /etc/rsyslog.conf 并添加

local7.*    /var/log/custom.log

编辑后,重启 Rsyslog

sudo systemctl restart rsyslog
使用 Logrotate 进行日志轮换

为了防止日志文件无限增长,Ubuntu 使用 logrotate。Rsyslog 通过 /etc/logrotate.d/rsyslog 与其无缝集成。

要配置日志轮换,请编辑 /etc/logrotate.d/rsyslog 并修改

/var/log/syslog
{
    rotate 7
    daily
    compress
    missingok
    notifempty
}

此配置

  • 保留 7 天的日志

  • 每天轮换日志

  • 压缩旧日志

通过运行以下命令应用更改

sudo logrotate -f /etc/logrotate.conf

使用 Rsyslog 进行远程日志记录

为什么使用远程日志记录?

远程日志记录对于以下方面至关重要

  • 集中来自多个系统的日志

  • 通过防止本地篡改来增强安全性

  • 使跨网络分析日志更容易

将 Rsyslog 配置为日志服务器

要接收来自远程客户端的日志,请将 Rsyslog 配置为服务器。编辑 /etc/rsyslog.conf 并取消注释

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

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

重启 Rsyslog

sudo systemctl restart rsyslog
将日志发送到远程服务器

在客户端机器上,配置 Rsyslog 以转发日志

*.*    @192.168.1.100:514   # Send logs via UDP
*.*    @@192.168.1.100:514  # Send logs via TCP

在客户端上重启 Rsyslog

sudo systemctl restart rsyslog

监控和故障排除日志

实时查看日志

使用以下命令查看日志

tail -f /var/log/syslog
journalctl -f
调试 Rsyslog 问题

要检查 Rsyslog 错误

sudo journalctl -u rsyslog --no-pager

要启用调试模式,请编辑 /etc/rsyslog.conf

$DebugLevel 2

重启 Rsyslog

sudo systemctl restart rsyslog

高级 Rsyslog 功能

日志记录到数据库

Rsyslog 可以使用 ommysql 模块将数据记录到 MySQL 或 PostgreSQL 中。

module(load="ommysql")
*.* :ommysql:DBServer,DBUser,DBPassword;DBTable
将 Rsyslog 与 Logstash 和 Graylog 一起使用

要与 LogstashGraylog 集成,请配置 Rsyslog 以 JSON 格式输出日志

module(load="mmjsonparse")
*.*  /var/log/json-logs.log

结论

Rsyslog 是一款功能极其强大的日志记录工具,可实现有效的日志管理、过滤和远程日志记录。通过掌握其配置、日志轮换和故障排除技术,您可以确保在 Ubuntu 上实现无缝的日志监控。无论是用于安全审计还是性能分析,配置良好的 Rsyslog 设置都非常宝贵。

George Whittaker 是 Linux Journal 的编辑,也是一位定期撰稿人。George 撰写技术文章已有二十年,并且是 Linux 用户超过 15 年。在空闲时间,他喜欢编程、阅读和游戏。

加载 Disqus 评论