syslog是一个标准的计算机消息记录协议。它允许程序、设备和系统管理器将事件通知或者消息记录到系统日志文件,以便后续审查。

这个协议广泛应用于各种操作系统(包括Unix/Linux等),并且许多网络设备(如路由器、交换机、防火墙等)也支持syslog协议来记录他们的事件。

syslog可以按照不同的级别(如警告、错误、信息等)和类别(如auth, authpriv, daemon, cron等)对日志进行分类,并把这些日志发送到不同的位置,如控制台、特定文件或者远程的日志服务器。

在Linux中,有很多工具可以用来收集、处理和分析syslog日志,比如rsyslog、syslog-ng等。这些工具可以配置复杂的规则,比如根据日志的级别和类别将其重定向到不同的文件,或者发送到远程服务器等。

Linux Syslog介绍

Syslog是Linux和UNIX系统中的一种标准消息记录系统。它可以记录操作系统或者应用程序运行时产生的各种事件信息,如警告、错误信息和状态信息等。在Linux系统中,这些信息通常被发送到/var/log/syslog文件。

本文将深入探讨Linux syslog,从syslog协议的概述,到syslog的配置,以及如何使用syslog来查看和管理日志。

Syslog 协议

Syslog协议是一种广泛使用的标准网络协议,可以收集、转发、存储和报告各种设备、系统和网络操作生成的日志信息。RFC 5424定义了该协议的最新版本。

Syslog 服务

Linux中主要有两种常见的syslog守护进程:Syslogd和Rsyslog。

Syslogd

Syslogd是最早的syslog守护进程,它在系统启动时自动启动,然后一直运行,收集和分拣系统的日志信息。

Rsyslog

Rsyslog是syslogd的一个更现代和灵活的替代品。它增加了新的特性,如TCP/IP网络传输、可配置模块、高级过滤选项等。

Syslog 配置

Syslog服务的配置通常存储在/etc/syslog.conf或者/etc/rsyslog.conf文件中。在这些配置文件中,可以定义哪些类型的消息应该被记录,以及这些消息应该被发送到哪里。

配置文件中的每一行都包含两部分:选择器和动作。

/etc/rsyslog.conf示例

来自华为昇腾服务器

root@ky:~# cat /etc/rsyslog.conf
# /etc/rsyslog.conf configuration file for rsyslog
#
# For more information install rsyslog-doc and see
# /usr/share/doc/rsyslog-doc/html/configuration/index.html
#
# Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
#module(load="immark")  # provides --MARK-- message capability

# provides UDP syslog reception
#module(load="imudp")
#input(type="imudp" port="514")

# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")

# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
root@ky:~#

选择器

选择器定义了哪些类型的消息会被处理。它由两部分组成:设施(facility)和优先级(priority)。设施是生成消息的程序类型,如auth, cron, daemon等。优先级是消息的重要性级别,如debug, info, notice, warning, err等。

动作

动作定义了对选择的消息进行的操作。这可能是将消息写入文件,发送电子邮件,或者转发到另一个服务器。

下面是一个简单的配置例子:

auth.info   /var/log/auth.log

这个例子表示所有来自认证设施的信息级别和更高级别的消息都将被写入到/var/log/auth.log文件中。

Syslog 使用实例

查看日志(cat /var/log/syslog)

最基本的查看syslog的方法就是使用cat或者less命令查看日志文件。例如:

cat /var/log/syslog

这将会显示/var/log/syslog文件的全部内容。

在这里插入图片描述

日志过滤(grep ‘error’ /var/log/syslog)

如果想要查找特定的信息,可以使用grep命令过滤日志。例如,如果想要查找所有包含"error"的日志行,可以运行:

grep 'error' /var/log/syslog

在这里插入图片描述

使用logger命令发送消息

logger命令是一个shell命令,用于向syslog发送消息。例如,下面的命令将会发送一条级别为info的消息:

logger -p info "This is an info message"

这个消息会被syslog处理,并且根据配置可能会被记录到日志文件中。

参考资料:

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐