Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

单机箱系统上的系统日志记录

使用 功能资源管理器 确认平台和版本对特定功能的支持。

查看该 特定于平台的系统日志记录行为 部分,了解与您的平台相关的注意事项。

单机箱系统日志记录配置概述

Junos 系统日志记录实用程序类似于 UNIX syslogd 实用程序。本节介绍如何为运行 Junos OS 的单机箱系统配置系统日志记录。

在通用标准环境中,Junos-FIPS 软件和瞻博网络设备的系统日志记录配置与 Junos OS 相同。有关更多信息,请参阅 通用标准和 Junos-FIPS 安全配置指南

每个系统日志消息都属于一个 设施,该设施将相关消息组合在一起。每条消息还预先分配了一个 严重性级别,该级别指示触发事件对路由器功能的严重程度。始终指定要包含在日志中的消息的设施和严重性。有关更多信息,请参阅 指定要包含在日志中的消息的设施和严重性

通过在层次结构级别包含相应的语句 [edit system syslog] ,可以将消息定向到一个或多个目标:

默认情况下,消息以标准格式记录,该格式基于 UNIX 系统日志格式;有关邮件格式的详细信息,请参阅 系统日志资源管理器。您可以通过以下方式更改记录消息的内容和格式:

  • 您可以以结构化数据格式(而不是标准 Junos 格式)将消息记录到文件中。结构化数据格式提供了更多信息,而无需增加大量长度,并使自动化应用程序更容易从消息中提取信息。有关更多信息,请参见 以结构化数据格式记录消息

  • 消息的设施和严重性级别一起称为其 优先级。默认情况下,消息的标准 Junos 格式不包含优先级信息(默认情况下,结构化数据格式包含优先级代码)。要在定向到文件或远程目标的标准格式消息中包含优先级信息,请包含 explicit-priority 语句。有关详细信息,请参阅 在系统日志消息中包含优先级信息

  • 默认情况下,消息的标准 Junos 格式指定记录消息时的月份、日期、小时、分钟和秒。您可以修改标准格式系统日志消息上的时间戳,以包括年份和/或毫秒。(默认情况下,结构化数据格式指定年份和毫秒。有关更多信息,请参阅 在时间戳中包含年份或毫秒

  • 将邮件定向到远程计算机时,可以将邮件中报告的 IP 地址指定为其源。您还可以配置一些功能,以便更轻松地将 Junos OS 生成的消息或在特定设备上生成的消息分开。有关更多详细信息,请参阅将系统日志消息定向到远程目标

  • 预定义的设施将相关消息组合在一起,但您也可以使用正则表达式更精确地指定将设施中的哪些消息记录到文件、用户终端或远程目标中。有关更多信息,请参见 使用字符串和正则表达式优化记录的消息集

注:

在提交检查期间,控制台上不会显示有关配置的 traceoptions 警告(例如,跟踪文件大小或跟踪文件数不匹配)。但是,提交新配置时,系统会在系统日志消息中记录这些警告。

Junos OS 系统日志配置语句

要将交换机配置为记录系统消息,请在层次结构级别包含 syslog 语句 [edit system]

Junos OS 最低系统日志记录配置

要记录或查看系统日志消息,必须在层次结构级别包含[edit system]语句syslog。至少为消息指定一个目标,如中所述 表 1。有关配置语句的详细信息,请参阅 单机箱系统日志记录配置概述

表 1: 系统日志记录的最低配置语句

目的地

最低配置语句

文件

[edit system syslog]
file filename {
    facility severity;
}

一个、多个或所有用户的终端会话

[edit system syslog]
user (username | *) {
    facility severity;
}

路由器或交换机控制台

[edit system syslog]
console {
    facility severity;
}

远程机器或路由器或交换机上的其他路由引擎

[edit system syslog]
host (hostname | other-routing-engine) {
    facility severity;
}

默认情况下,在特定路由器上生成以下消息。

  • 要在 MX 系列路由器上记录内核进程消息,请在相应的层级包含语 kernel info 句:

    [编辑系统日志]
    (控制台 | 文件文件名 | 主机目标 | 用户用户名){
        内核信息;
    }
    

示例:配置系统日志消息

QFabric 系统监控其组件设备上发生的事件,并将有关这些事件的系统日志消息分发到配置的所有外部系统日志消息服务器(主机)。组件设备可能包括节点设备、互连设备、Director 设备和虚拟机箱。消息存储在 QFabric 系统数据库中以供查看。要查看消息,请发出 show log 命令。

此示例介绍如何在 QFabric 系统上配置系统日志消息。

要求

此示例使用以下硬件和软件组件:

  • Junos OS 12.2 版

  • QFabric 系统

  • 可配置为系统日志消息主机的外部服务器

概述

生成系统日志消息事件的组件设备可能包括节点设备、互连设备、Director 设备和控制平面交换机。以下配置示例在 QFabric 系统中包括这些组件:

  • 控制器组上运行的控制器软件

  • 控制平面交换机

  • 互连设备

  • 多节点设备

配置

程序

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit] 中。

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 Junos OS CLI 用户指南 中的在配置模式下使用 CLI 编辑器

要配置来自 QFabric Director 设备的系统消息:

  1. 指定主机、任何设施和严重 error 性级别。

    注:

    您可以配置多个系统日志消息服务器(主机)。QFabric 系统将消息发送到配置的每个服务器。

  2. (可选)指定要捕获日志消息的文件名。

    注:

    在 QFabric 系统上,名为 messages 的系统日志文件隐式配置了设施和严重性级别 any any 为 100 MB。因此,您无法在配置中指定文件名 messages ,并且自动命令完成不适用于该文件名。

  3. (可选)配置系统日志消息存档文件的最大大小。此示例指定存档大小为 1 GB。

结果

在配置模式下,输入 show system 命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。

如果完成设备配置,请从配置模式输入 commit

以结构化数据格式记录消息

您可以以结构化数据格式(而不是标准 Junos OS 格式)将消息记录到文件中。结构化数据格式提供了更多信息,而无需增加大量长度,并使自动化应用程序更容易从消息中提取信息。

结构化数据格式符合互联网标准 RFC 5424,即 系统日志协议,该协议位于 https://tools.ietf.org/html/rfc5424。RFC 建立标准消息格式,而不考虑记录消息的源或传输协议。

要将消息以结构化数据格式输出到文件,请在层次结构级别包含structured-data[edit system syslog file filename]语句:

可选 brief 语句禁止显示默认情况下显示在消息末尾的英语文本,用于描述错误或事件。

结构化格式用于记录到文件中由 Junos 进程或软件库生成的所有消息。

注:

如果将 and time-format 语句中的一个explicit-priority或两个都包含在语句中structured-data,则会忽略这些语句。这些语句适用于标准 Junos OS 系统日志格式,不适用于结构化数据格式。

指定日志文件大小、编号和存档属性

为防止日志文件过大,默认情况下,Junos OS 系统日志记录实用程序会将消息写入定义大小的一系列文件。序列中的文件称为 存档 文件,以将它们与当前正在写入消息 的活动文件区 分开来。默认最大大小取决于平台类型,请参阅 特定于平台的系统日志记录行为 部分。

当调用 logfile 的活动日志文件达到最大大小时,日志记录实用程序将关闭该文件,对其进行压缩,并将压缩的归档文件 logfile.0.gz命名为 。然后,日志记录实用程序将打开并写入名为 logfile的新活动文件。此过程也称为文件轮换。当 new logfile 达到配置的最大大小时, logfile.0.gz 将重命名 logfile.1.gz,并且关闭 logfile 、压缩和重命名 logfile.0.gz新的 。缺省情况下,日志记录实用程序以这种方式创建最多 10 个归档文件。当达到最大存档文件数且活动文件的大小达到配置的最大大小时,当前活动文件将覆盖最后一个存档文件的内容。默认情况下,日志记录实用程序还将可读取日志文件的用户限制为 root 具有 Junos OS maintenance 权限的用户和用户。

Junos OS 提供了一个配置语句 log-rotate-frequency ,通过配置检查日志文件大小的时间间隔来配置系统日志文件轮换频率。频率可以设置为 1 分钟到 59 分钟的值。默认频率为 15 分钟。

要配置日志轮换频率,请在层次结构级别包含 log-rotate-frequency 语句 [edit system syslog]

您可以包含语句来 archive 更改每个文件的最大大小、创建的存档文件数以及谁可以读取日志文件。

要配置适用于所有日志文件的值,请在层次结构级别包含 archive 语句 [edit system syslog]

要配置适用于特定日志文件的值,请在层次结构级别包含 archive 语句 [edit system syslog file filename]

archive-sites site-name 指定要用于存储文件的存档站点的列表。该 site-name 值是指向目标的任何有效 FTP URL。如果配置了多个站点名称,则会创建系统日志文件的存档站点列表。存档文件时,路由器或交换机会尝试将文件传输到列表中的第一个 URL,仅当传输不成功时才移动到下一个站点。日志文件以指定的日志文件名存储在存档站点上。有关如何指定有效 FTP URL 的信息,请参阅 在 Junos OS CLI 命令中指定文件名和 URL 的格式

binary-data 将文件标记为包含二进制数据。这允许正确存档二进制文件,例如 WTMP 文件(基于 UNIX 的系统的登录记录)。若要恢复默认设置,请包含 no-binary-data 语句。

files number 指定在覆盖最旧的文件之前要创建的文件数。该值可以是 1 到 1000。

size size 指定每个文件的最大大小。该值可以从 64 KB (64k) 到 1 千兆字节 (1g);若要表示兆字节,请在整数后使用字母 m 。数字与 kmg 单位字母之间没有空格。

start-time "YYYY-MM-DD.hh:mm" 定义将活动日志文件一次性传输到语句指定的 archive-sites 站点列表中的第一个可访问站点的本地时区日期和时间。

transfer-interval interval 定义当前日志文件在关闭并传输到存档站点之前保持打开状态(即使它未达到最大可能大小)并接收新统计信息的时间量。此间隔值可以是 5 到 2880 分钟。

world-readable 使所有用户都能读取日志文件。要恢复默认权限,请包含该 no-world-readable 语句。

在系统日志消息中包含优先级信息

消息的设施和严重性级别统称为其 优先级。默认情况下,以标准 Junos OS 格式记录的消息不包含有关优先级的信息。要在定向到文件的标准格式消息中包含优先级信息,请在层次结构级别包含 explicit-priority 语句 [edit system syslog file filename]

注:

默认情况下,以结构化数据格式记录的消息包含优先级信息。如果在层次结构级别将[edit system syslog file filename]语句与语句一起explicit-priority包括在structured-data内,则会忽略该explicit-priority语句,并以结构化数据格式记录消息。

有关该 structured-data 语句的信息,请参阅 以结构化数据格式记录消息

要在定向到远程计算机或其他路由引擎的消息中包含优先级信息,请在层次结构级别包含 explicit-priority 语句 [edit system syslog host (hostname | other-routing-engine)]

消息中记录的优先级始终指示原始的本地设施名称。如果定向到远程目标的消息包含该 facility-override 语句,则在将消息定向到远程目标时,Junos OS 系统日志记录实用程序仍会使用消息本身的备用设施名称。有关更多信息,请参阅 更改定向到远程目标的系统日志消息的备用设施名称

explicit-priority包含语句时,Junos OS 日志记录实用程序会将设施名称和严重性级别的代码附加到消息标记名称(如果消息包含):

(标记是分配给某些 Junos OS 系统日志消息的唯一标识符。)

在以下示例中, CHASSISD_PARSE_COMPLETE 消息属于 daemon 设施,并分配了严重性 info (6):

如果未包含该 explicit-priority 语句,则优先级不会出现在消息中:

系统日志设施代码和优先级信息中报告的数字代码

表 2 列出可出现在系统日志消息中的设施代码,并将其映射到设施名称。

注:

如果 中的 表 2 第二列不包含代码的 Junos OS 设施名称,则无法将该工具包含在层次结构级别的语句 [edit system syslog] 中。在报告内部操作时,Junos OS 可能会使用中的 表 2功能以及未列出的其他工具。

表 2: 优先级信息中报告的设施代码

法典

Junos 设施名称

事件或错误的类型

AUTH

authorization

身份验证和授权尝试

AUTHPRIV

 

只有超级用户才能查看的身份验证和授权尝试

CHANGE

change-log

对 Junos OS 配置的更改

CONFLICT

conflict-log

路由器类型的指定配置无效

CONSOLE

 

内核控制台输出 r 写入的消息/dev/console

CRON

 

cron 进程执行的操作或遇到的错误

DAEMON

daemon

系统进程执行的操作或遇到的错误

DFC

dfc

动态流捕获过程执行的操作或遇到的错误

FIREWALL

firewall

防火墙过滤器执行的数据包过滤操作

FTP

ftp

FTP 进程执行的操作或遇到的错误

INTERACT

interactive-commands

在 Junos OS CLI 提示符下发出或由客户端应用程序(如 Junos XML 协议或 NETCONF 客户端)调用的命令

KERN

kernel

Junos 内核执行的操作或遇到的错误

NTP

 

网络时间协议 (NTP) 执行的操作或遇到的错误

PFE

pfe

数据包转发引擎执行的操作或遇到的错误

SYSLOG

 

Junos 系统日志记录实用程序执行的操作或遇到的错误

USER

user

用户空间进程执行的操作或遇到的错误

表 3 列出可能出现在系统日志消息中的数字严重性代码,并将其映射到严重性级别。

表 3: 优先级信息中报告的严重性级别的数字代码

数字代码

严重性级别

Description

0

emergency

系统崩溃或导致路由器停止运行的其他情况

1

alert

需要立即更正的情况,例如系统数据库损坏

2

critical

关键情况,如硬错误

3

error

错误条件的后果通常不如紧急、警报和严重级别的错误严重

4

warning

需要监控的条件

5

notice

不是错误但可能需要特殊处理的情况

6

info

感兴趣的事件或非错误条件

7

debug

软件调试消息(仅当技术支持代表指示您配置此严重性级别时,才会显示这些消息)

在时间戳中包含年份或毫秒

默认情况下,标准格式系统日志消息中记录的时间戳指定记录消息时的月份、日期、小时、分钟和秒,如以下示例所示:

要在时间戳中包含年份和/或毫秒,请在 或 [edit security log] 层次结构级别包含time-format[edit system syslog]语句:

但是,默认情况下,traceoption 消息的时间戳以毫秒为单位指定,并且与语句无关 [edit system syslog time-format]

修改后的时间戳用于定向到层次结构级别上[edit system syslog]由 、 consoleuser语句配置file的每个目标的消息,但不用于定向到语句配置host的目标的消息。

注:

缺省情况下, 在 FreeBSD 控制台中, 额外的时间信息在定向到由语句配置 host 的每个目标的系统日志消息中不可用。但是, 在使用 FreeBSD 控制台的 Junos OS 特定实现中, 额外的时间信息在定向到每个目标的系统日志消息中提供。

以下示例说明了同时包含毫秒 (401) 和年份 (2006) 的时间戳的格式:

注:

默认情况下,以结构化数据格式记录的消息包括年份和毫秒。如果在层次结构级别将 [edit system syslog file filename] 结构化数据语句与语句一起 time-format 包括在内,则会忽略该 time-format 语句,并以结构化数据格式记录消息。

有关该 structured-data 语句的信息,请参阅 以结构化数据格式记录消息

使用字符串和正则表达式优化记录的消息集

预定义的设施将相关消息组合在一起,但您也可以将消息与字符串和正则表达式进行匹配,以优化将设施中的哪些消息记录到文件、用户终端或远程目标中。

通过 and match 配置语句,match-strings可以分别将系统日志消息与字符串或正则表达式进行匹配。您可以在以下层次结构级别包含这些语句:

  • [edit system syslog file filename] (对于文件)

  • [edit system syslog user (username | *)] (对于特定用户会话或终端上的所有用户会话)

  • [edit system syslog host (hostname | other-routing-engine)] (对于远程目标)

要根据正则表达式评估消息并仅将匹配的消息记录到给定目标,请包含 match 该语句并指定正则表达式:

您可以使用简单的字符串比较来更有效地筛选消息,因为它比匹配复杂的正则表达式占用更少的 CPU 资源。要指定消息中必须显示的文本字符串,以便将消息记录到目标,请包含 match-strings 该语句并指定匹配的字符串或字符串列表:

match-stringsmatch语句选择具有与给定字符串或正则表达式匹配的已配置设施和严重性的消息。该 match-strings 语句执行简单的字符串比较,因此,与使用该语句与 match 复杂的正则表达式匹配相比,它的 CPU 密集度更低。如果为同一目标同时配置 and matchmatch-strings 语句,Junos OS 将 match-strings 首先评估条件;如果消息包含任何已配置的子字符串,则会记录消息,但不 match 评估条件。match-strings如果不满足条件,则系统会根据配置语句中的match正则表达式计算消息。

match 语句指定正则表达式时,请使用 POSIX 标准 1003.2 中定义的扩展(现代)UNIX 正则表达式的表示法。解释正则表达式语法超出了本文档的范围,但 POSIX 标准可从电气和电子工程师协会 (IEEE, http://www.ieee.org) 获得。

表 4 指定哪些字符与可在 match 语句中使用的某些正则表达式运算符匹配。在说明中,术语是指单个字母数字字符或括在方括号、括号或大括号中的一组字符。

注:

match 语句不区分大小写。

表 4: 匹配语句的正则表达式运算符
操作人员 比赛

.(句号)

任何字符的一个实例。

*(星号)

前一个术语的零个或多个实例。

+(加号)

前一个术语的一个或多个实例。

?(问号)

前一个术语的零个或一个实例。

|(管道)

显示在管道运算符两侧的术语之一。

!(感叹号)

当感叹号出现在表达式开头时,表达式指定的字符串以外的任何字符串。感叹号的使用特定于 Junos OS。

^ (插入符号)

当插入符号出现在方括号之外时,行的开头。

当插入符号是方括号内的第一个字符时,不在方括号内的任何字符的一个实例。

$(美元符号)

行尾。

[ ] (成对方括号)

括起来的字母数字字符之一的一个实例。要指示字符范围,请使用连字符 ( - ) 分隔范围的开头和结尾字符。例如,[a-z0-9] 匹配任何字母或数字。

( ) (成对括号)

所含项的计算值的一个实例。括号用于指示正则表达式中的计算顺序。

使用字符串和正则表达式

过滤属于 interactive-commands 该工具的消息,将包含字符串 configure 的消息定向到 root 用户的终端:

当用户发出configure命令以进入配置模式时,用户终端上root会显示如下消息:

过滤属于设施且 daemon 严重性为 error 或更高的消息,将它们定向到文件 /var/log/process-errors。省略 SNMP 进程 (snmpd) 生成的消息,而是将它们定向到文件 /var/log/snmpd-errors

匹配语句的 Junos 系统日志正则表达式运算符

表 5: 匹配语句的正则表达式运算符

操作人员

比赛

. (句号)

任何字符的一个实例。

* (星号)

前一个术语的零个或多个实例。

+ (加号)

前一个术语的一个或多个实例。

? (问号)

前一个术语的零个或一个实例。

| (管道)

显示在管道运算符两侧的术语之一。

! (感叹号)

当感叹号出现在表达式开头时,表达式指定的字符串以外的任何字符串。感叹号的使用特定于 Junos OS。

^ (插入符号)

当插入符号出现在方括号之外时,行的开头。

当插入符号是方括号内的第一个字符时,不在方括号内的任何字符的一个实例。

$ (美元符号)

行尾。

[ ] (成对方括号)

括起来的字母数字字符之一的一个实例。要指示字符范围,请使用连字符 ( - ) 分隔范围的开头和结尾字符。例如,匹配 [a-z0-9] 任何字母或数字。

( ) (成对括号)

所含项的计算值的一个实例。括号用于指示正则表达式中的计算顺序。

禁用设施的系统日志记录

要禁用属于特定设施的消息的日志记录,请在配置中包含该 facility none 语句。例如,当您要记录具有相同严重性级别且属于除少数设施之外的所有设施的消息时,此语句非常有用。您可以先包括该语句,然后再为 any severity 不想记录的每个设施包含一个语句,而不是为要记录的每个设施都包含语句 facility none 。例如,以下内容会将级别或更高级别的所有 error 消息记录到控制台,但来自 和 daemonkernel 设施的消息除外。来自这些设施的消息将改为记录到文件中 >/var/log/internals

示例:配置系统日志记录

以下示例说明如何配置有关用户在 CLI 提示符下输入或由客户端应用程序(如 Junos OS XML 协议或 NETCONF 客户端应用程序)调用的所有命令的所有命令的消息日志记录,以及所有身份验证或授权尝试 cli-commands 的消息记录,包括对已登录的任何用户的文件和终端:

以下示例显示如何配置将警报状态中的所有更改记录到文件中 /var/log/alarms

下面的示例演示如何配置各种类型的消息的处理,如注释中所述。信息被记录到两个文件, 用户 alex终端 , 远程计算机和控制台:

以下示例显示如何配置用户发出 Junos OS CLI 命令时生成的消息的处理,方法是指定 interactive-commands 具有以下严重性级别的功能:

  • info— 当用户在 CLI 操作或配置模式提示符下发出任何命令时记录消息。该示例将消息写入文件 /var/log/user-actions

  • notice— 当用户发出配置模式命令 rollbackcommit时记录一条消息。该示例将消息写入用户 philip的终端。

  • warning- 当用户发出重新启动软件进程的命令时记录一条消息。该示例将消息写入控制台。

示例:分配替代设施

将在本地路由平台上生成的错误级别或更高级别的所有消息记录到远程计算机上名为 的设施中local0monitor.mycompany.com

配置位于加利福尼亚州的路由平台和位于纽约的路由平台,以将消息发送到名为 的 central-logger.mycompany.com单个远程计算机。来自加利福尼亚的消息被分配到替代设施 local0 点,来自纽约的消息被分配到替代设施 local2点。

  • 配置加利福尼亚路由平台以聚合设施中的 local0 消息:

  • 配置纽约路由平台以聚合设施中的 local2 消息:

然后 central-logger ,可以将系统日志记录实用程序配置为将消息从设施写入 local0 文件 california-config ,并将消息从设施写入 local2 文件 new-york-config