感謝原作者:古丁高手
原文出處:http://blog.chinaunix.net/uid-27575921-id-3598140.html
日誌消息通常是指Cisco IOS中的系統錯誤消息。其中每條錯誤信息都被分配了一個嚴重級別,伴隨一些只是問題或事件的嚴重性分析。Cisco IOS發送日誌消息(包括debug命令的輸出)到日誌記錄過程。默認情況下,只發送到控制檯接口,可可以將日誌記錄到路由器內部緩存,終端線路,系統日誌服務器和SNMP管理站。
一、日誌消息格式
在Cisco IOS設備中,日誌消息採用下面的格式:
%--:
下面是一個簡單的例子:
%LINK-5-CHANGED:Interface Ethernet1,changed state to
administratively down
假設爲日誌消息已經啓用了時間戳和序列號,對於日誌消息,將看到以下信息,首先是序列號,緊接着是時間戳,然後纔是消息:
000022:Jan 02 15:42:11.048:%LINK-5-CHANGED:Interface Ethernet0,
changed state to administratively down
二、基本日誌記錄配置
在設置日誌記錄時,需要完成兩個基本的任務:打開日誌記錄和控制日誌在線路上的顯示。
1、打開日誌記錄
默認地,日誌記錄只在路由器的控制檯線路上打開,要在**地方記錄日誌,則必須相應地打開日誌記錄並進行配置。使用以下命令打開日誌記錄:
Router(config)#logging on
使用logging on命令,可以爲日誌記錄打開**已配置的目的地,如系統日誌服務器或路由器的內部緩存。在將系統消息記錄到除了控制檯端口的**位置之前,必須執行該命令;但是,使用**的logging命令,可以單獨控制哪個過程將接收日誌消息。例如,已經配置了命令,將日誌消息記錄到系統日誌服務器,但是沒有執行logging on命令,則Cisco IOS只將消息記錄到控制檯線路。
二、配置同步日誌記錄
logging synchronous命令的主要目的是將日誌消息輸出和調試輸出同步到路由器線路上:控制檯、輔助和VTY線路。
同步日誌的主要目的是控制何時消息被顯示在路由器的線路上。當啓用這個特性時,同步日誌使得Cisco IOS顯示消息,然後執行一個等價的Ctrl-R的命令,這使得路由器將已經輸入的信息重新顯示在命令行上。
可以使用logging synchronous命令來影響日誌消息的顯示:
Router(config)#line type #
Router(config)-line)#logging synchronous [level severity_level|all]
[limit #_of_lines]
嚴重程度是指日誌消息的嚴重程度,這些消息是異步顯示的。嚴重性數值比該值高的消息(更低嚴重性的消息)被同步顯示;數值更低的(更嚴重)消息被異步顯示。默認的嚴重級別是2。參數all使得所有消息都被異步顯示,不管分配的嚴重級別。
參數limit指定在路由器開始丟棄新的消息前,有多少個同步消息可以排在隊列中。默認是20條消息。如果到達該閥值,路由器必須丟棄消息時,就會看到以下日誌消息,說明路由器必須丟棄的消息數目:
%SYS-3-MSGLOST #_of_messages due to overflow
同步日誌的主要缺點是當路由器正在產生許多消息,而我們正在CLI中很慢地輸入時,路由器必須丟棄超過閥值地任何消息。因此,將無法在線路上看到這些消息。如果看到這類事件對你來說很關鍵,建議將它們記錄在路由器內部緩存、系統日誌服務器或者SNMP管理臺。
在給非控制檯線路(如VTY)設置很大地隊列極限值時要小心。如果***可以進入路由器上的VTY,而VTY上打開了同步日誌,則***可以在輸入命令期間使VTY線路空閒。這將導致Cisco IOS用消息填滿很大的隊列,可能會耗盡路由器的整個內存。
三、日誌記錄目的地
可以將日誌信息轉發到以下4種基本目的地
●線路;
●內部緩存;
●系統日誌服務器;
●SNMP管理臺。
1、嚴重級別
每個日誌消息被關聯一個嚴重級別,用來分類消息的嚴重等級:數字越低,消息越嚴重。嚴重級別的範圍從0(最高)到7(最低)。使用logging命令可以用數字或者名稱來指定嚴重性。
日誌消息的嚴重級別
參數 級別 系統日誌描述 描述
emergencies 0 LOG_EMERG 系統不可用
alerts 1 LOG_ALERT 在端口下是需要立即操作的
critical 2 LOG_CRIT 路由器上存在一個關鍵狀態
errors 3 LOG_ERR 路由器上存在一個錯誤狀態
warnings 4 LOG_WARNING 路由器上存在一個警告狀態
notifications 5 LOG_NOTICE 路由器上發生了一個平常的但重要的事件
informational 6 LOG_INFO 路由器上發生了一個信息事件
debugging 7 LOG_DEBUG 來自debug命令的輸出
缺省地,console、monitor、buffer的logging被設置爲debugging級,而trap(syslog)服務器的logging被設置爲informational
如果在ACL語句中使用log關鍵字,則只有嚴重級別設爲6或者7時,纔會在控制檯上顯示輸出。
對於日誌記錄功能可以控制的一個選項是,哪些消息被記錄到4個目的地。例如,在控制檯上,可以限制記錄嚴重級別爲4(即顯示從0到4的消息)的日誌消息;但是對系統日誌服務器,可以設置爲6(0到6)。
2、線路日誌
有兩個命令可用於控制日誌消息被髮送到路由器的線路上: Router(config)#logging console [severity_level] Router(config)#logging monitor [severity_level]
logging console命令是指將日誌記錄到物理的TTY,如控制檯和輔助線路。logging monitor命令將日誌記錄到邏輯VTY。默認地,記錄日誌到控制檯對所有級別都打開;但是可以通過改變logging console命令中的嚴重級別來修改。
將日誌記錄到VTY和AUX默認是關閉的,要打開就要執行特權級的EXEC命令terminal monitor,將控制檯日誌消息複製到VTY,或者配置logging monitor命令。如果使用了後者,在初次訪問路由VTY時,則不需要執行terminal monitor命令來查看TTY命令行的日誌輸出。在配置logging monitor命令時,如果不指定嚴重級別,則默認爲7(調試)。
對兩個命令,都必須使用logging on命令來打開日誌記錄。
由於將消息顯示在終端線路上,如控制檯,會給路由器增加處理負擔,所以建議將嚴重級別改到比調試更高的嚴重級別(較低的數字)。如果要查看較低嚴重級別的消息,可以使用路由器內部緩存、系統日誌服務器,或者SNMP管理臺。
如果在生成錯誤和調試消息的過程中,關閉logging on命令,會大大降低路由器的速度,直到這些消息顯示在路由器的線路上。因此爲顯示在控制檯線路的日誌消息分配嚴重級別時要小心。
3、內部緩存日誌
記錄日誌消息到TTY或者VTY存在的一個問題是,如果沒在看連接線路的屏幕輸出,消息滾過屏幕並超出了終端軟件的歷史緩存,則沒有任何機制可以再看到那些丟失的消息。如果把日誌消息記錄到除了線路以外的**目的地,則可以避免這個問題。
一個解決方案是將日誌消息記錄到路由器的內部緩存,根據路由器平臺的不同,該項可能是默認打開或關閉的;大多數平臺下,默認是打開的。使用以下命令將日誌記錄到路由器的緩存: Router(config)#logging buffered [buffer_size|severity_level] 該命令有兩個參數,buffer_size指定爲內部緩存分配多大的內存,以字節爲單位。使用default logging buffered命令將緩存大小設回出廠的默認值。severity_level指出應該記錄的嚴重級別。默認的大小和嚴重級別(通常是7)依賴於平臺型號。
4、系統日誌服務器日誌
以下是將日誌記錄到系統日誌服務器的基本命令: Router(config)#logging on Router(config)#logging host {IP_address|hostname} Router(config)#logging trap severity_level Router(config)#logging source-interface interface_type_interface_# Router(config)#logging origin-id {hostname|ip|string string} Router(config)#logging facility facility_type
logging on命令允許將日誌記錄到非控制檯目的地。logging host命令指定系統日誌服務器的IP地址、主機名或者完全合格的域名(FQDN)。如果不只一次輸入該命令,指定不同的系統日誌服務器目的地,可以建立路由器使用的系統日誌服務器列表。
在Cisco IOS12.2(15)T版本之前,使用logging {hostname|IP_address}命令打開陷阱日誌記錄,現在使用logging host命令。
logging trap命令指定要發送到系統日誌服務器的日誌消息的嚴重級別。默認是informational。
默認地,路由器用來到達系統日誌服務器的接口IP地址將作爲IP數據包頭中的源IP地址。使用logging source-interface命令來生成一致的日誌條目。這樣路由器使用一個相同的源地址。使用該命令時,必須指定接口的名稱和編號。只有路由器有兩個或更多接口可以到達系統日誌服務器時,該命令纔是必需的。但是爲了一致性,要確保在系統日誌數據包中使用相同的源地址。這使得在系統日誌服務器上執行過濾規則來阻止的不希望的日誌消息變得更容易。
在12.2(15)T版本中,Cisco增加了將路由器身份信息添加到系統日誌消息的功能,這樣可以基於每個路由器,更容易地在系統日誌服務器上搜尋或者分離信息。這是由logging origin-id實現的。該命令默認是關閉的。身份信息可以選擇hostname(使用hostname命令配置的名稱)、IP地址(發送接口的IP地址)和string(用來定義路由器身份信息的字符串)。如果字符串包含空格,則必須用引號將它括起來。
logging facility命令定義在運行UNIX的系統日誌服務器上使用的工具,日誌信息將保存在該服務器上。
系統日誌工具類型
參數 描述
auth 授權系統
cron Cron工具
daemon 系統守護程序
kern 內核
local0到local7 本地定義的消息(從0到7)
lpr 打印機系統
mail E-mail系統
news USENET新聞
sys9到sys14 系統使用
syslog 系統日誌
user 用戶定義進程
uucp UNIX到UNIX的複製系統
如果不指定工具,默認是local7。在UNIX上,可以通過編輯適當的配置文件來爲指定的工具指定日誌文件的保存位置。例如,編輯/etc/syslog配置文件,可以爲工具創建一個條目。如:local7.debugging /usr/adm/logs/router.log
該例中,工具級別是local7,debugging關鍵字指定了系統日誌記錄級別。系統日誌級別將決定哪個級別的消息將保存在以下的文件中:任何該嚴重級別及更高級別的消息將存儲在這個特定的文件中。
5、SNMP日誌
要將日誌消息發送到SNMP管理臺,要執行以下命令: Router(config)#snmp-server enable trap syslog
然後,有三個命令控制將日誌消息記錄到管理臺: Router(config)#logging on Router(config)#logging history severity_level Router(config)#logging history size number
第二個命令指定哪些嚴重級別的日誌消息應該被髮送到SNMP管理臺。默認級別是warning。由於SNMP使用UDP,而UDP是不可靠的連接,系統日誌陷阱保存在路由器的歷史表中。至少一條系統日誌消息(最新的一條)被保存在歷史表中(默認是一條消息)。可以用logging history size將這個值增加到500條。
從Cisco IOS12.2(1.4)版本開始,Cisco IOS可以使用ip nat log translations syslog命令來記錄每個NAT轉換。
四、**日誌命令
1、日期和時間戳
默認地,日誌消息不包括日期和時間戳。使用以下兩個命令中的一個來添加日期和時間戳: Router(config)#service timestamps {debug|log} uptime 或者 Router(config)#service timestamps {debug|log} datetime [msec] [localtime] [show-timezone] [year]
可以在兩種類型的消息中添加時間戳:調試和日誌消息。使用debug參數使Cisco IOS在調試輸出時包括時間戳。使用log參數則在每種日誌消息中添加一個時間戳。第一個命令包括了uptime參數,使得Cisco IOS在消息中包括路由器開機以來的時間,如: 1w0d:%sys-5-CONFIG_I:Configured from console by console
如果要知道準確的日期和時間,則使用datetime參數。這個參數使得Cisco IOS在消息中包括日期和時間(日期和時間使用UTC格式),標準格式是:MMM DD HH:MM:SS。當使用datetime參數時,有一些可選的參數可用。msec參數在消息中包括毫秒信息。localtime顯示基於路由器本地配置的時區時間。默認情況下,年份信息不包括在時間信息中,但是使用可選的year則可以包括該信息。show-timezone參數在日期和時間輸出中包括時區名稱。下面是一個log參數和datetime、localtime和show-timezone選項一起使用的簡單例子: (.May 23 11:13:25 UTC: %SYS-5-CONFIG_I:Configured from console by consle)
日誌消息一般是從三種字符的一種開始的:空格、星號或者句點。
日誌消息起始字符
參數 名稱 描述
空格 路由器的時鐘被手動設置,或者和NTP時間服務器同步
* 星號 路由器的始終沒有被設置,或者沒有和NTP服務器同步
. 句點 路由器的時鐘被設置爲同步,但和NTP服務器失去聯繫
2、序列號
除了將時間戳添加到日誌消息中外,還可以讓Cisco IOS在每條消息中顯示序列號。可以使用以下命令來實現: Router(config)#service sequence-numbers
3、速率限制
從Cisco IOS12.1(3)T版本開始,可以用logging rate-limit命令以秒爲單位限制記錄日誌消息的速率 Router(config)#logging rate-limit {number|all number|console number}[except severity]
默認地,路由器上沒有速率限制。通過指定一個從1到10,000的數。可以將每秒記錄的日誌消息數限制到該值。all關鍵字,後面跟一個數值,將作用於所有日誌記錄和調試消息。console關鍵字則限制將日誌消息記錄到控制檯的速率。except參數對指定嚴重級別或者根高級別的消息建立一個例外。
強烈建議使用該命令,特別是在控制檯接口上。在受到***時,會出現泛洪,該命令可以減少路由器需要處理的消息量。
五、日誌記錄驗證
1、show logging命令
show logging顯示了當前系統日誌錯誤和事件記錄的狀態,包括所有配置的系統日誌服務器地址,哪種類型日誌打開,以及日誌記錄統計。以下是命令的格式: Router#show logging [summary]
使用clear logging命令清除內部緩存器中的日誌消息。
2、show logging history命令
該命令顯示了系統日誌歷史表的大小、表中的消息的狀態以及消息本身。
六、日誌記錄和錯誤計數
如果正在使用路由器內部緩存,並且較老的消息正在老化時,該特性非常有用。使用該特性,Cisco IOS仍然會跟蹤特定日誌消息的發生數,以及該消息最後一次發生的情況。如果內部緩存不能夠保留所有消息,而同樣的錯誤或者問題卻持續發生時,則該特性很有用。該特性基本上可以替代上面討論的show logging summary命令
在配置模式執行以下命令啓用該特性: Router(config)#logging count
該命令對每個日誌消息進行計數,包括每種消息類型最後一次發生的時間戳。
啓用該特性後,可以使用show logging count命令來查看錯誤計數。