文章目录
Linux Syslog介绍Syslog 协议Syslog 服务SyslogdRsyslog Syslog 配置/etc/rsyslog.conf示例选择器动作 Syslog 使用实例查看日志(cat /var/log/syslog)日志过滤(grep 'error' /var/log/syslog)使用logger命令发送消息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 messagesmodule(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/*.confroot@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处理,并且根据配置可能会被记录到日志文件中。
参考资料:
RFC 5424 - The Syslog ProtocolRsyslog official websiteSyslog man page