12-EAA配置
本章節下載: 12-EAA配置 (321.53 KB)
目 錄
EAA(Embedded Automation Architecture,嵌入式自動化架構)是集成在係統軟件中的一係列相關軟件模塊的總稱。
使用EAA功能:
· 用戶可以定製一係列監控策略,在策略中定義自己感興趣的事件以及事件發生時的處理動作。監控策略被啟用後,係統會實時監控設備的運行,當用戶定製的事件發生時,就觸發相應的監控策略並自動執行監控策略中的動作。
· 設備能夠智能地監控多種事件,並做出靈活多變的響應,從而大大地提升係統的可維護性。
圖1-1 EAA框架示意圖
EAA框架如圖1-1所示,它包括事件源、EM(Event Monitor,事件監控)模塊、RTM(Real-Time Event Manager,實時事件管理)模塊和EAA監控策略。
事件源是係統中的軟件或硬件模塊,它們會觸發事件。例如,CLI事件源能觸發命令行事件,Syslog事件源能觸發日誌事件。
EM根據用戶配置對事件源中發生的事件進行過濾匹配,匹配成功則通知RTM執行相應監控策略。當用戶配置了多個監控策略,係統會創建多個EM模塊,每個EM組件監控一個事件。
RTM是EAA的核心部件,負責管理監控策略,包括監控策略的創建、狀態變化和執行。
通過監控策略,用戶可以定義自己感興趣的事件以及事件發生時的處理動作。
監控策略有兩種配置方式:一種是通過命令行來配置,一種是通過Tcl腳本來定義。通過命令行配置的監控策略稱為基於CLI的監控策略,以下簡稱CLI監控策略;通過Tcl腳本定義的監控策略稱為基於Tcl的監控策略,以下簡稱Tcl監控策略。
每個監控策略中必須包含以下元素:事件、動作、用戶角色、執行時間。
表示用來觸發監控策略的事件。目前,EAA能夠監控的事件類型如表1-1所示。
事件類型 |
描述 |
cli |
監控命令行事件 配置該事件後,當用戶輸入指定的命令並對其進行特定操作(執行、幫助或者補全)就會觸發策略執行 |
syslog |
監控日誌事件 配置該事件後,當係統在指定時間段內生成指定規格的日誌信息時觸發監控策略執行;RTM模塊產生的日誌不會觸發策略執行 |
process |
監控進程事件 配置該事件後,當指定進程(可以為用戶命令行觸發的或者係統自動觸發的)發生指定狀態變化(異常、關閉、啟動或重啟時),觸發監控策略執行 |
hotplug |
監控成員設備加入或離開IRF、子卡插入或拔出事件 配置該事件後,當成員設備加入或離開IRF、子卡插入或拔出,均會觸發監控策略執行 |
interface |
監控接口事件 接口事件中存在一個觸發開關: 1. 配置該事件後,觸發開關立即打開 2. 當指定接口上的指定報文的數目達到start-op start-op start-val start-val參數指定的條件時,觸發監控策略執行一次(第一次執行),並關閉觸發開關,但係統會繼續監控接口事件 3. 當滿足restart-op restart-op restart-val restart-val參數指定的條件時,才重新開啟觸發開關 4. 如果指定接口上的指定報文的數目再次達到start-op start-op start-val start-val參數指定的條件時,則再次觸發監控策略執行一次(第二次執行),並關閉觸發開關,係統繼續監控接口事件 5. 如此循環 |
snmp |
監控SNMP節點值變化事件 SNMP節點值變化事件中存在一個觸發開關: 1. 配置該事件後,觸發開關立即打開 2. 係統根據用戶配置,定時輪詢設備上某個節點的值,當該值達到start-op start-op start-val start-val指定的條件時,觸發監控策略執行一次(第一次執行),並關閉觸發開關,但係統會繼續監控SNMP節點值變化事件 3. 當節點值滿足restart-op restart-op restart-val restart-val指定的條件時,才重新開啟觸發開關 4. 當節點值再次達到start-op start-op start-val start-val指定的條件時,則再次觸發監控策略執行一次(第二次執行),並關閉觸發開關,係統繼續監控SNMP節點值變化事件 5. 如此循環 |
snmp-notification |
監控SNMP告警事件 配置該事件後,當係統生成一條告警,告警中攜帶的MIB對象(由oid參數指定)的值到達oid-val oid-val op op指定的條件時,觸發監控策略執行 |
track |
監控Track事件 配置該事件後,當關聯的Track項狀態由Positive變為Negative或者Negative變為Positive時,觸發監控策略執行;如果關聯多個Track項,則最後一個處於Positive(Negative)狀態的Track項變為Negative(Positive)時,觸發監控策略執行 如果配置了抑製時間,觸發策略的同時開始計時,定時器超時前,收到狀態從Positive(Negative)變為Negative(Positive)的消息,直接丟棄,不會處理。直到定時器超後,收到狀態從Positive(Negative)變為Negative(Positive)的消息才處理,再一次觸發策略執行 |
表示事件發生時,監控策略將執行的動作。目前設備支持的動作有執行指定的命令行、生成一條指定內容的日誌、主備倒換和重啟。
表示執行監控策略的用戶角色。用戶角色中定義了允許用戶操作哪些係統功能以及資源對象,設備支持的每條命令都有缺省用戶角色:
· 如果監控策略中指定的用戶角色權限比命令行的缺省用戶角色的權限小,則不能執行該命令以及該命令後麵的所有動作。
· 如果指定的用戶角色不存在,則監控策略不能執行。
· 如果給某個監控策略配置了多個用戶角色,則使用這些用戶角色權限的並集去執行該策略。例如,給某策略配置了用戶角色A和B,如果策略中的動作是角色A或者B允許執行的,則策略可以執行;如果策略中存在角色A和B都不能執行的命令,則該命令以及該命令後麵的所有動作都不能執行。
關於用戶角色的詳細描述請參見“基礎配置指導”中的“RBAC”。
表示監控策略的運行時間,運行時間達到時即使策略沒有執行完畢,也會立即停止執行策略。該元素用來限製策略的運行時間,以免策略長時間運行占用係統資源。
EAA環境變量指的是專用於監控策略的環境變量。環境變量由<環境變量名、環境變量值>字對組成。在配置監控策略的動作時,可以在應該輸入參數的地方輸入“$環境變量名”,表示此處需要引用環境變量值。係統在運行監控策略的時候,會自動用環境變量值去替代“$環境變量名”。如果要修改監控參數的值,隻需在係統視圖下,修改環境變量值即可,而無需進入監控策略視圖,修改監控策略下的具體配置。因此,定義和使用環境變量可以簡化監控策略的配置,提高監控策略的靈活性和易用性。
目前,EAA支持的環境變量包括內部環境變量和用戶自定義環境變量。
設備缺省支持的環境變量,用戶不能創建、刪除和修改。內部環境變量名均以“_”開頭,內部環境變量的值由係統決定。內部環境變量又包括兩類:一類是公共環境變量,另一類是非公共環境變量。
· 公共環境變量可被所有類型的事件使用:其中_event_id、_event_type、_event_type_string在係統啟動時生成,關聯的事件類型不同,其值不同,其值一旦確定不能更改;_event_time、_event_severity在運行時產生。
· 非公共環境變量隻能被對應的事件使用,其值在事件觸發時獲得,它表示當前事件的部分信息。例如,CLI事件對應的內部環境變量為“_cmd”,當CLI事件被觸發時,環境變量“_cmd”的值為監控策略匹配到的用戶執行的命令行。
目前EAA支持內部環境變量如表1-2所示。
事件 |
內部環境變量的名稱 |
描述 |
CLI |
_cmd |
匹配上的命令 |
SYSLOG |
_syslog_pattern |
匹配的日誌信息的內容 |
HOTPLUG |
_slot |
發生熱插拔的子卡所在的子槽位號(獨立運行模式) |
HOTPLUG |
_slot |
加入或離開IRF的成員設備的編號(IRF模式) |
HOTPLUG |
_subslot |
發生熱插拔的子卡所在的子槽位號 |
INTERFACE |
_ifname |
接口的名稱 |
SNMP |
_oid |
SNMP操作中攜帶的OID |
_oid_value |
OID對應節點的值 |
|
SNMP TRAP |
_oid |
SNMP告警信息中攜帶的OID |
PROCESS |
_process_name |
進程的名稱 |
公共環境變量 |
_event_id |
事件的ID |
_event_type |
事件的類型 |
|
_event_type_string |
事件類型的描述 |
|
_event_time |
事件發生的時間 |
|
_event_severity |
事件的嚴重級別 |
用戶定義環境變量名可包含數字、字符或者“_”,但不能以“_”開頭。用戶自定義環境變量可用於所有類型的事件,其值由用戶配置決定。用戶定義環境變量可修改、刪除。
使用本特性,用戶可以自定義EAA環境變量的名稱和值,以便定義監控策略時可以引用。
(1) 進入係統視圖。
system-view
(2) 配置用戶自定義環境變量。
rtm environment var-name var-value
係統中缺省支持的內部環境變量,請參見表1-2。
· 用戶可創建多個監控策略,請確保同時啟用的策略間動作不能衝突,因為當係統同時執行多個策略,且不同策略間動作有衝突時,執行結果是隨機的。
· Tcl監控策略和CLI監控策略的名稱可以相同,相同類型的監控策略的名稱不能相同。
· 同一個策略下,隻能配置一個觸發事件和運行時間。
· 同一監控策略下可配置多個用戶角色,最多可以配置64個有效用戶角色,超過該上限後,新配置的用戶角色不會生效。
用戶可為CLI監控策略配置多個動作,係統會按照動作的編號由小到大順序執行這些動作。如果新配置的動作的編號和已有動作的編號相同,最後一次配置並且commit的生效。
(1) 進入係統視圖。
system-view
(2) 創建CLI監控策略並進入CLI監控策略視圖。
rtm cli-policy policy-name
(3) 配置監控事件。
¡ 配置命令行事件。
event cli { async [ skip ] | sync } mode { execute | help | tab } pattern regular-exp
¡ 配置熱插拔事件。
(獨立運行模式)
event hotplug [ insert | remove ] slot slot-number
(IRF模式)
event hotplug [ insert | remove ] slot slot-number [ subslot subslot-number ]
¡ 配置接口事件。
event interface interface-type interface-number monitor-obj monitor-obj start-op start-op start-val start-val restart-op restart-op restart-val restart-val [ interval interval ]
¡ 配置進程事件。
event process { exception | restart | shutdown | start } [ name process-name [ instance instance-id ] ] [ slot slot-number ]
¡ 配置SNMP操作事件。
event snmp oid oid monitor-obj { get | next } start-op start-op start-val start-val restart-op restart-op restart-val restart-val [ interval interval ]
配置本命令前,請先開啟SNMP功能,否則,本命令配置失敗。配置本命令後,如果關閉SNMP功能,設備會自動刪除本命令,如需繼續使用本命令,請重新配置。
¡ 配置SNMP告警事件。
event snmp-notification oid oid oid-val oid-val op op [ drop ]
配置本命令前,請先開啟SNMP功能,否則,本命令配置失敗。配置本命令後,如果關閉SNMP功能,設備會自動刪除本命令,如需繼續使用本命令,請重新配置。
¡ 配置日誌事件。
event syslog priority { priority | all } msg msg occurs times period period
¡ 配置Track事件。
event track track-list state { negative | positive } [ suppress-time suppress-time ]
缺省情況下,未配置事件。
多次執行event命令時,最後一次配置並且commit的生效。
(4) 配置動作。請至少選擇以下一項進行配置。
¡ 配置事件發生時執行指定的命令行。
action number cli command-line
缺省情況下,監控策略下未配置CLI動作。
¡ 配置事件發生時執行重啟操作。
(獨立運行模式)
action number reboot [ slot slot-number ]
(IRF模式)
action number reboot [ slot slot-number [ subslot subslot-number ] ]
缺省情況下,監控策略下未配置重啟動作。
¡ 配置事件發生時進行主備倒換。
action number switchover
缺省情況下,監控策略下未配置主備倒換動作。
¡ 配置事件發生時發送指定的LOG。
action number syslog priority priority facility local-number msg msg-body
缺省情況下,監控策略下未配置日誌動作。
(5) (可選)配置執行CLI監控策略時使用的用戶角色。
user-role role-name
缺省情況下,執行CLI監控策略時使用的用戶角色為創建該策略的用戶的角色。
安全日誌管理員角色與其它用戶角色互斥:為監控策略配置安全日誌管理員角色後,係統會自動刪除當前配置的其它用戶角色;反之亦然。
(6) (可選)配置CLI監控策略執行動作的持續時間。
running-time time
缺省情況下,CLI監控策略執行動作的持續時間為20秒。
多次執行本命令時,最後一次配置並且commit的生效。
(7) 啟用CLI監控策略。
commit
缺省情況下,CLI監控策略未被啟用。
必須執行該命令後,CLI監控策略下的配置才會生效。
按內容Tcl腳本可以分為兩大部分:首行和其它行。
(1) 首行
首行用於定義事件、用戶角色和運行時間。用戶創建並啟用Tcl監控策略後,設備會立即解析Tcl腳本首行,並下發、生效。
Tcl腳本首行的格式為::platformtools::rtm::event_register event-type arg1 arg2 arg3 … user-role role-name1 | [ user-role role-name2 | [ … ] ] [ running-time running-time ]。其中:
¡ event-type用來指定事件的類型,取值同CLI監控策略支持的事件類型,詳情請參見表1-1。
¡ arg用來指定事件參數,具體要求與相應event命令中的參數規格一致,請參考“網絡管理和監控命令參考”中的“EAA”。當arg內容中包含空格時,請在arg內容的兩端添加英文格式的雙引號,形如"a b c"。
¡ user-role用來指定執行腳本的用戶角色,參數含義和配置要求同CLI監控策略。
¡ running-time用來指定動作執行的最大時間,參數含義和配置要求同CLI監控策略。未指定該參數時,表示不限製Tcl監控策略的運行時間。
(2) 其它行
從Tcl腳本的第二行開始,定義監控策略觸發時將執行的動作。用戶可使用多行定義多個動作,係統會按照Tcl腳本中配置的先後順序執行這些動作。Tcl監控策略支持如下三類動作:
¡ Tcl語言標準命令。
¡ EAA模塊的switchover和syslog動作。配置該類動作時,請使用格式::platformtools::rtm::action switchover或::platformtools::rtm::action syslog priority priority facility local-number msg msg-body。priority、local-number、msg-body參數的詳細描述請參考“網絡管理和監控命令參考/EAA”中的action syslog命令。
¡ 設備支持的其它命令行。配置該類動作時,每行為設備可執行的命令行即可。
Tcl監控策略啟用後,不允許修改Tcl腳本。如需修改,請先停用Tcl監控策略,修改後,再啟用Tcl監控策略。否則,Tcl監控策略將不能運行。
(1) 使用FTP或者TFTP功能將Tcl腳本下載到設備上,FTP及TFTP具體配置請參見“基礎配置指導”中的“FTP和TFTP”。
(2) 創建並啟用Tcl監控策略。
a. 進入係統視圖。
system-view
b. 創建並啟用Tcl監控策略,並將該策略與Tcl腳本綁定。
rtm tcl-policy policy-name tcl-filename
缺省情況下,不存在Tcl監控策略。
配置Tcl監控策略時,tcl-filename請使用相對路徑並確保所有的成員設備上都存在該腳本,以免主備倒換或腳本所在成員設備離開IRF後,策略無法執行。(IRF模式)
使用本特性可以暫停運行所有的監控策略。如果配置本特性時,某個監控策略正在執行動作,則設備會等待該監控策略的所有動作全部執行完畢後,再暫停運行該監控策略。
如果要將暫停運行的所有策略恢複運行,請使用undo rtm scheduler suspend命令。
(1) 進入係統視圖。
system-view
(2) 暫停運行所有的監控策略。
rtm scheduler suspend
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後EAA的運行情況,通過查看顯示信息驗證配置的效果。
表1-3 EAA顯示和維護
操作 |
命令 |
顯示CLI監控策略下生效的具體配置 |
display current-configuration |
顯示用戶自定義的EAA環境變量配置 |
display rtm environment [ var-name ] |
顯示監控策略的相關信息 |
display rtm policy { active | registered [ verbose ] } [ policy-name ] |
顯示CLI監控策略下生效的具體配置(請在CLI監控策略視圖下執行該命令) |
display this |
配置一個Tcl監控策略,當設備執行包含字符串display this的命令時,讓係統自動發送日誌信息rtm_tcl_test is running。
圖1-2 Tcl監控策略基本配置舉例組網圖
# 在PC上使用寫字板或者word編輯Tcl策略腳本rtm_tcl_test.tcl,內容如下:
::platformtools::rtm::event_register cli sync mode execute pattern display this user-role network-admin
::platformtools::rtm::action syslog priority 1 facility local4 msg rtm_tcl_test is running
以上腳本的含義為:當設備執行包含字符串display this的命令時,讓係統自動發送日誌信息rtm_tcl_test is running。
# 通過TFTP將rtm_tcl_test.tcl下載到設備上。
<Sysname> tftp 1.2.1.1 get rtm_tcl_test.tcl
# 創建並啟用Tcl監控策略,並將它和Tcl腳本rtm_tcl_test.tcl綁定。
<Sysname> system-view
[Sysname] rtm tcl-policy test rtm_tcl_test.tcl
[Sysname] quit
# 通過display rtm policy registered命令可以看到存在策略名為test,策略類型為Tcl的策略。
<Sysname> display rtm policy registered
Total number: 1
Type Event TimeRegistered PolicyName
TCL CLI Jan 01 09:47:12 2019 test
# 打開允許日誌輸出的開關,執行display this命令,有rtm_tcl_test is running日誌輸出,同時有策略運行成功的日誌輸出。
<Sysname> terminal monitor
The current terminal is enabled to display logs.
<Sysname> system-view
[Sysname] info-center enable
Information center is enabled.
[Sysname] quit
<Sysname> display this
%Jan 1 09:50:04:634 2019 Sysname RTM/1/RTM_ACTION: rtm_tcl_test is running
%Jan 1 09:50:04:636 2019 Sysname RTM/6/RTM_POLICY: TCL policy test is running successfully.
#
return
配置一個CLI監控策略,當設備執行包含數字、字母(大小寫均可)的命令行的幫助操作時,讓係統自動發送日誌信息hello world,並創建一個VLAN。
# 創建CLI監控策略,名稱為test。
<Sysname> system-view
[Sysname] rtm cli-policy test
# 配置監控事件:監控包含數字、字母(大小寫均可)的命令行的幫助。
[Sysname-rtm-test] event cli async mode help pattern [a-zA-Z0-9]
# 事件發生時,發送優先級為4,日誌記錄工具為local3,信息為hello world的日誌。
[Sysname-rtm-test] action 0 syslog priority 4 facility local3 msg “hello world”
# 事件發生時,進入係統視圖。
[Sysname-rtm-test] action 2 cli system-view
# 事件發生時,創建VLAN 2。
[Sysname-rtm-test] action 3 cli vlan 2
# 配置CLI監控策略執行動作的持續時間為2000秒。
[Sysname-rtm-test] running-time 2000
# 配置用戶角色network-admin具有執行該策略的權限。
[Sysname-rtm-test] user-role network-admin
# 確認執行該策略。
[Sysname-rtm-test] commit
# 通過display rtm policy registered查看,可以看到策略名為test,策略類型為CLI的策略。
[Sysname-rtm-test] display rtm policy registered
Total number: 1
Type Event TimeRegistered PolicyName
CLI CLI Jan 1 14:56:50 2019 test
# 打開允許日誌輸出的開關,並對包含字母d的命令進行幫助,可以看到有信息為“hello world”的日誌輸出,同時有策略運行成功的日誌輸出。
[Sysname-rtm-test] return
<Sysname> terminal monitor
The current terminal is enabled to display logs.
<Sysname> system-view
[Sysname] info-center enable
Information center is enabled.
[Sysname] quit
<Sysname> d?
debugging
delete
diagnostic-logfile
dir
display
<Sysname>d%Jan 1 14:57:20:218 2019 Sysname RTM/4/RTM_ACTION: "hello world"
%Jan 1 14:58:11:170 2019 Sysname RTM/6/RTM_POLICY: CLI policy test is running successfully.
Device A和Device D、Device E已經建立BGP會話,正常情況下,Device D、Device E發往外網的流量通過Device A轉發。現要求通過對Device A進行配置實現:當Device A連接Device C的接口GigabitEthernet1/0/1狀態變為Down之後,Device A能夠自動感知,並禁止和Device D、Device E建立BGP會話,這樣,Device D、Device E發往外網的流量可通過Device B轉發。
圖1-3 EAA和Track聯動的CLI監控策略配置舉例組網圖
# 查看當前的BGP對等體的狀態和統計信息。
<DeviceA> display bgp peer ipv4
BGP local router ID: 1.1.1.1
Local AS number: 100
Total number of peers: 3 Peers in established state: 3
* - Dynamically created peer
Peer AS MsgRcvd MsgSent OutQ PrefRcv Up/Down State
10.2.1.2 200 13 16 0 0 00:16:12 Established
10.3.1.2 300 13 16 0 0 00:10:34 Established
10.3.2.2 300 13 16 0 0 00:10:38 Established
# 配置Track項監控接口GigabitEthernet1/0/1的狀態。
<DeviceA> system-view
[DeviceA] track 1 interface gigabitethernet 1/0/1
# 配置CLI監控策略,當GigabitEthernet1/0/1狀態變為Down之後,Device A能夠自動感知,並禁止和Device D、Device E建立BGP會話。
[DeviceA] rtm cli-policy test
[DeviceA-rtm-test] event track 1 state negative
[DeviceA-rtm-test] action 0 cli system-view
[DeviceA-rtm-test] action 1 cli bgp 100
[DeviceA-rtm-test] action 2 cli peer 10.3.1.2 ignore
[DeviceA-rtm-test] action 3 cli peer 10.3.2.2 ignore
[DeviceA-rtm-test] user-role network-admin
[DeviceA-rtm-test] commit
[DeviceA-rtm-test] quit
# 將接口GigabitEthernet1/0/1關閉。
[DeviceA] interface gigabitethernet 1/0/1
[DeviceA-GigabitEthernet1/0/1] shutdown
# 在DeviceA上使用display bgp peer ipv4命令查看BGP對等體的狀態和統計信息,無established狀態的對等體。
配置一個CLI監控策略,用於實現:當用戶執行帶有字符串loopback0的命令時,
· 係統會自動創建LoopBack0接口。
· 將該接口的IP地址配置為1.1.1.1/24。
· 將匹配到的命令行通過日誌打印輸出。
# 創建環境變量loopback0IP,將其值配置為1.1.1.1。
<Sysname> system-view
[Sysname] rtm environment loopback0IP 1.1.1.1
# 創建CLI監控策略,名稱為test。
[Sysname] rtm cli-policy test
# 配置監控事件:用戶執行帶有字符串loopback0的命令。
[Sysname-rtm-test] event cli async mode execute pattern loopback0
# 事件發生時,係統會自動創建LoopBack0接口,將該接口的IP地址配置為1.1.1.1/24,並將匹配到的命令行通過日誌打印輸出。
[Sysname-rtm-test] action 0 cli system-view
[Sysname-rtm-test] action 1 cli interface loopback 0
[Sysname-rtm-test] action 2 cli ip address $loopback0IP 24
[Sysname-rtm-test] action 3 syslog priority 7 facility local7 msg $_cmd
[Sysname-rtm-test] user-role network-admin
[Sysname-rtm-test] commit
[Sysname-rtm-test] return
<Sysname>
# 打開允許日誌輸出的開關,當用戶執行帶有字符串loopback0的命令時,係統會將匹配到的命令行通過日誌打印輸出,同時有策略運行成功的日誌輸出。
<Sysname> terminal monitor
The current terminal is enabled to display logs.
<Sysname> terminal log level debugging
<Sysname> system-view
[Sysname] info-center enable
Information center is enabled.
[Sysname] interface loopback0
[Sysname-LoopBack0]%Jan 1 09:46:10:592 2019 Sysname RTM/7/RTM_ACTION: interface loopback0
%Jan 1 09:46:10:613 2019 Sysname RTM/6/RTM_POLICY: CLI policy test is running successfully.
# 顯示接口信息,發現已存在LoopBack0接口,IP地址為1.1.1.1。
[Sysname-LoopBack0] display interface loopback brief
Brief information on interfaces in route mode:
Link: ADM - administratively down; Stby - standby
Protocol: (s) - spoofing
Interface Link Protocol Primary IP Description
Loop0 UP UP(s) 1.1.1.1
[Sysname-LoopBack0]
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!