第三方平臺告警接入、翻譯、關聯恢復

      網友投稿 928 2022-05-28

      第三方平臺告警接入、翻譯、關聯恢復

      第1章 簡介

      1.1 說明

      本文檔描述了如何通過SNMPTT,將中興云桌面以及中興云桌面存儲SnmpTrap告警接入Zabbix,并對產生的告警漢化翻譯,通過Zabbix標簽功能實現自動關聯恢復告警。

      1.2 環境

      第2章 接入中興云桌面平臺SNMPTRAP

      2.1 導入ZTE桌面平臺MIB

      net-snmp組件默認只提供了通用的MIB文件,第三方私有MIB文件需要自行導入并配置搜索解析。

      1. 創建自定義MIB目錄

      # mkdir /usr/share/snmp/mibs/ZTE/ # ls -l /usr/share/snmp/mibs/ZTE/ total 60 -rw-r--r-- 1 root root 907 Feb 9 2012 ZTE-IRP-MIB -rw-r--r-- 1 root root 46864 Mar 23 2012 zxcomc-snmp-alarmirp-mib-v1.1.txt -rw-r--r-- 1 root root 2962 Feb 9 2012 zxcomc-snmp-csirp-mib.txt -rw-r--r-- 1 root root 907 Feb 9 2012 zxcomc-snmp-irp-common-mib.txt

      2. 配置net-snmp加載自定義mib

      #查看系統snmp模塊默認加載配置路徑 # net-snmp-config --snmpconfpath #自定義第三方mib搜索目錄 # cat /usr/local/net-snmp/snmp.conf mibdirs +/usr/share/snmp/mibs/ZTE #測試自定義地示范mib搜索是否正常 # snmptranslate -Dinit_mib .1.3 2>&1 |grep MIBDIR # snmptranslate -On ZTE-ALARM-IRP-MIB::alarmCleared

      2.2 轉換MIB文件

      MIB(SNMPTRAP)文件中定義了各種SNMPTRAP的通知信息,SNMPTT中可以使用工具snmpttconvertmib將所有包含snmp trap/notification信息的mib文件轉換成相應的snmptt.conf.文件,來實現SNMPTRAP信息的解析。

      轉換mib命令格式:

      # snmpttconvertmib --in=path-to-mib --out=output-file-name –net_snmp_perl

      提示: 轉換結果會追加到output-file-name定義的文件中

      由于snmpttconvertmib不支持批量轉換,可能需要通過腳本來進行批量轉換。

      # for f in $(grep -l -i "notification" ./*);do snmpttconvertmib -in="$f" -out=/tmp/snmptt.conf.zte --net_snmp_perl;done;

      初始化轉換后的配置文件

      # sed -r -i "s/^(FORMAT)/ ZBXTRAP $aA/g" snmptt.conf.zte # grep "FORMAT" snmptt.conf.zte

      每個 FORMAT 行都需要添加ZBXTRAP,否則ZABBIX無法解析,

      關于SNMPTT更多用法,請參考官方文檔

      2.3 追加新增conf配置

      將自定義轉換的conf文件追加到SNMPTT配置文件中

      # vim /etc/snmp/snmptt.ini [TrapFiles] # A list of snmptt.conf files (this is NOT the snmptrapd.conf file). The COMPLETE path # and filename. Ex: '/etc/snmp/snmptt.conf' snmptt_conf_files = <

      2.4 重啟SNMPTT

      # systemctl restart snmptt

      2.5 創建ZTE云桌面SNMPTRAP監控模板

      提示:為了能夠很快看到效果,創建了“snmptrap[]”不過濾任何關鍵字的監控項

      2.6 創建監控實例

      提示:主機名稱要和snmptt.conf.zte中定義的內置變量$aA保持一致

      2.7 查看最新數據

      至此,就完成了如何通過SNMPTT將第三方平臺的SNMPTRAP信息集成到Zabbix的操作步驟。

      在實際環境中,由于某些需求或者通過轉換后的規則,SNMPTRAP信息可讀性依然不高。例如:TRAP信息是全英文或者應用平臺對TRAP信息進行了編碼。

      通過SNMPTT規則配置文件的EXEC和PREXEC屬性,可以實現SNMPTRAP信息的漢化翻譯或者解碼(在應用案例中實現)等。根據MIB或轉換后配置文件的描述,可以看出最新數據中的trap信息屬于平臺組件之間的心跳探測信息。

      2.8 漢化翻譯SNMPTRAP

      1. 編輯配置文件,漢化相關oid信息

      # vim /etc/snmp/snmptt.conf.zte EVENT heartbeatNotification .1.3.6.1.4.1.3902.4101.4.2.1.1 "Status Events" Normal FORMAT ZBXTRAP $aA "中興云桌面平臺-NMS系統與北向網管心跳檢查,heartbeatNotification:" SDESC

      2. 重啟SNMPTT

      # systemctl restart snmptt

      3. 查看漢化后的信息

      4. 創建觸發器

      第三方平臺告警接入、翻譯、關聯恢復

      根據trap描述,心跳trap設置值0代表不發送心跳trap。設置值超過300不生效。如果沒有最新數據則代表心跳異常,觸發告警。

      5. 觸發SNMPTRAP告警

      2.9 修改SNMPTRAP日志級別

      1. 通過snmpttconvertmib工具轉換后的trap日志事件,格式如下:

      EVENT event_name event_OID "category" severity FORMAT format_string [EXEC command_string] [NODES sources_list] [MATCH [MODE=[or | and]] | [$n:[!][( ) | n | n-n | > n] [SDESC] [EDESC]

      通過修改severity,可以將需要關注的日志級別調高,例如:Critical,然后通過觸發器函數regexp ()匹配對應嚴重性級別的日志。例如:

      EVENT heartbeatNotification .1.3.6.1.4.1.3902.4101.4.2.1.1 "Status Events" Critical FORMAT ZBXTRAP $aA "中興云桌面平臺-NMS系統與北向網管心跳檢查,$N:$1"

      2. 創建指定事件級別觸發器

      3. 按照事件嚴重性觸發告警

      至此,完成了通過修改SNMPPT配置規則,來實現SNMPTRAP事件的漢化翻譯和事件級別的調整。

      2.10 SNMPTRAP恢復事件關聯

      對于周期性的SNMPTRAP信息,例如:平臺組件之間的心跳TRAP。不存在恢復事件,只能通過有無數據來判斷是否正常,實現告警恢復。

      對于平臺故障alarmNew信息,例如:磁盤讀寫異常,主機離線等。如果連續出現多條告警,新的TRAP事件就會將上一條TRAP事件信息沖掉,導致上一條告警被恢復。

      如何防止事件被恢復或者通過相關恢復事件自動恢復?

      1. 防止事件被恢復

      如果事件嚴重性較高,或者由于特定需求不允許被恢復。可以通過創建模板或者主機宏變量**{$TRAPCONTORL}=1來實現。

      2. 通過恢復事件自動恢復已觸發的告警

      平臺故障類事件和恢復事件,通常會在TRAP事件位置變量(例如:$14)中對應有一個相同alarmId。通過在Zabbix標簽功能,提取事件的alarmId來實現事件的關聯恢復。

      # vim /etc/snmp/snmptt.conf.zte 14: alarmId Syntax="OCTETSTR" Descr="This object represents an alarm in EMS using the private format of vendor" 15: alarmCodeName Syntax="OCTETSTR" Descr="This object represents an alarm code name"

      第3章 應用案例

      3.1 應用案例1:通過外部腳本轉碼翻譯SNMPTRAP信息

      3.1.1 案例描述

      中興云桌面snmptrap告警內容是hexstring格式并通過 “gb2312”進行編碼,直接對接到zabbix中可讀性很差。

      通過SNMPTT中”EXEC”屬性,自定義外部python腳本,將SNMPTRAP信息進行轉碼翻譯后,再將翻譯后的消息寫回到SNMPTrapperFile定義的文件中,實現告警事件接入ZABBIX并提升SNMPTRAP信息可讀性。

      通過zabbix標簽功能,提取告警信息中的alarmid,實現SNMPTRAP恢復事件關聯恢復操作。

      3.1.2 實現步驟

      1. 創建解碼腳本

      # cat /etc/snmp/zte/translatetraptozbx.py #!/usr/bin/python # -*- coding:utf-8 -*- #version:1.0 #user:jun #description: convert hex-string to string # import sys import time # 定義日志信息 logtime=time.strftime('%H:%M:%S %Y/%m/%d',time.localtime()) snmptrapfile="/var/log/snmptt/snmptt.log" # 將hex轉換成中文,hex to gb2312 def hex_to_ascii(hex_str): try: hex_str = hex_str.replace('Hex-STRING', '').replace(':','').replace(' ', '').replace('0x', '').replace('\t', '').replace('\n', '') ascii_str = hex_str.decode('hex').decode('gb2312',errors='ignore') #except (TypeError): except : ascii_str = 'ZBXTRAP can not translate this message' return ascii_str # 獲取參數:IP [SNMPTRAP OIDS],example:$aA $N $+* if len(sys.argv) >= 4: ZBXTRAPHOST=sys.argv[1] EVENTTYPE=sys.argv[2] SNMPTRAPMESSAGE=''.join(sys.argv[3:]) KEYWORD='enterprises.3902.4101.1.3.1.3' if KEYWORD in SNMPTRAPMESSAGE: alertmessage=SNMPTRAPMESSAGE.replace('enterprises','\nenterprises').split('\n') eventextnumber=alertmessage[1].replace('enterprises.3902.4101.1.3.1.3','').split(':')[0] eventtime=alertmessage[1].replace('enterprises.3902.4101.1.3.1.3'+eventextnumber+':','') eventseverity=alertmessage[9].replace('enterprises.3902.4101.1.3.1.6'+eventextnumber+':','').strip() alarmid=alertmessage[14].strip() # 告警等級轉換 if eventseverity=='1': severity="critical" elif eventseverity=='2': severity="critical" elif eventseverity=='3': severity="major" elif eventseverity=='4': severity="major" elif eventseverity=='5': severity="warning" elif eventseverity=='6': severity="cleared" else: severity="unknown" eventtheme=hex_to_ascii(alertmessage[15].replace('enterprises.3902.4101.1.3.1.14'+eventextnumber+':','').replace(' ','')) eventsource=hex_to_ascii(alertmessage[16].replace('enterprises.3902.4101.1.3.1.15'+eventextnumber+':','').replace(' ','')) zbxtrapmessage=logtime+" ZBXTRAP "+ZBXTRAPHOST+" "+eventtime+"-"+ZBXTRAPHOST+" "+EVENTTYPE+",alarmuuid:"+alarmid+",severity:"+severity+" "+eventtheme+" "+eventsource zbxtrapmessage2=zbxtrapmessage.encode("raw_unicode_escape").decode("raw_unicode_escape").encode("utf8") with open(snmptrapfile,'a+') as f: f.write(zbxtrapmessage2) f.write("\n") f.close() print zbxtrapmessage2 else: sys.exit()

      2. 定義SNMPTRAP事件類型的格式化參數

      在snmptt.conf.zte配置文件中修改ztedesktopalarmNew和ztedesktopalarmClear類型事件格式化參數

      # vim /etc/snmp/snmptt.conf.zte EVENT ztedesktopalarmNew .1.3.6.1.4.1.3902.4101.1.4.1.1 "Status Events" Normal FORMAT $aA $N "【中興云桌面告警】$+*" REGEX(\n)()g REGEX(\(unknown\))()g REGEX(\s+)(-)g # EXEC /etc/snmp/zte/translatetraptozbx.py $aA $N $+* EVENT ztedesktopalarmCleared .1.3.6.1.4.1.3902.4101.1.4.1.2 "Status Events" Normal FORMAT $aA $N "【中興云桌面告警】$+*" REGEX(\n)()g REGEX(\(unknown\))()g REGEX(\s+)(-)g # EXEC /etc/snmp/zte/translatetraptozbx.py $aA $N $+*

      3. 重啟SNMPTT

      # systemctl restart snmptt

      4. 提取TRAP事件的alarmId

      云桌面的SNMPTRAP信息經過了轉碼腳本處理,對于同一個事件ztedesktopalarmNew(告警事件)和ztedesktopalarmClear(恢復事件)類型內容,都有一個相同的alarmuuid,提取事件信息中的alarmuuid作為標簽ztedesktopalarmuuid的值。

      5. 根據觸發器標簽進行事件關聯恢復

      對已產生的SNMPTRAP事件,如果出現恢復事件(事件類型為:ztedesktopalarmClear),則通過觸發器標簽來進行匹配ztedesktopalarmuuid,實現告警自動關閉。

      6.實現效果

      3.2 應用案例2:通過預處理翻譯SNMPTRAP信息

      3.2.1 案例描述

      中興云分布式存儲沒有完整的mib文件,只提供了snmptrap事件類型的說明,根據oid描述,創建事件匹配規則。

      通過SNMPTT配置規則文件中的PREEXEC屬性,將事件等級(數字)轉換成英文字符,將事件告警碼轉換成對應的中文描述。

      3.2.2 實現步驟

      1. 創建事件等級映射文件

      # cat /etc/snmp/zte/variablemvaluemap_zte.txt #alarmPerceivedSeverity ztestoragealarmSeverity-1:critical ztestoragealarmSeverity-2:serious ztestoragealarmSeverity-3:warning ztestoragealarmSeverity-4:prompt ztestoragealarmSeverity-5:notice

      2. 創建事件等級轉換腳本

      # cat /etc/snmp/zte/getvariablestring.sh #!/bin/bash LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") zte_variables_file='/etc/snmp/zte/variablemvaluemap_zte.txt' zte_snmptt_log='/etc/snmp/zte/snmptt_preexec_zte.log' if [ $# -ne 2 ];then exit 2 fi if [ -s $zte_variables ];then value=$(grep -w "$1-$2" "$zte_variables_file"|grep -v "#"|awk -F':' '{print $2}') if [ 'Z'"$value" != 'Z' ];then echo $value else echo "unknown" fi else echo "$LOGTIME zte variable map file is not found.File Format:::" >> $zte_snmptt_log fi #腳本需要傳入兩個參數:

      3. 創建告警碼說明映射文件

      # cat /etc/snmp/zte/ztestorage_alarmcode.txt 100100#服務器網絡網絡異常#Critical 100101#服務器網絡網絡斷鏈#Critical 100102#服務器狀態下電#Critical 100103#服務器狀態所有存儲服務離線#Critical 100104#服務器狀態處于維護模式#Info 100105#服務器版本版本與集群版本不一致#Warning 100106#服務器CPU 利用率超過 80%#Warning 100107#服務器CPU 利用率超過 90%#Critical 100108#服務器內存利用率超過 80%#Warning 100109#服務器內存利用率超過 90%#Critical 100110#服務器網絡帶寬利用率超過 80%#Warning 100111#服務器網絡帶寬利用率超過 90%#Critical 100114#硬盤狀態離線#Critical 100115#硬盤狀態處于維護模式#Info 100116#硬盤狀態IO 讀寫慢#Warning 100118#硬盤狀態SMART 檢測Critical異常#Critical 100119#硬盤已用容量超過 50%#Warning 100120#硬盤已用容量超過 80%#Critical 100121#服務MON節點時鐘未同步#Critical 100122#服務MON磁盤可用空間不足#Critical 100123#服務MON服務離線#Critical 100129#服務MGR服務離線#Critical 100130#服務AGENT服務離線#Critical 100131#集群狀態IO 請求異常#Critical 100132#集群狀態集群與管理系統連接中斷#Critical 100133#集群狀態處于維護模式#Info 100136#集群已用容量超過 50%#Warning 100137#集群已用容量超過 80%#Critical 100138#存儲池狀態存儲池不可用#Critical 100139#存儲池狀態存儲池數據冗余度降級#Critical 100140#存儲池狀態存儲池數據重構中#Warning 100141#存儲池已用容量超過 50%#Warning 100142#存儲池已用容量超過 80%#Critical 100143#共享設備已用容量超過 50%#Warning 100144#共享設備已用容量超過 80%#Critical 100145#共享設備狀態共享設備狀態異常#Critical 100146#License有效期不足 30 天#Warning 100147#License有效期不足 7 天#Critical 100148#證書有效期不足 30 天#Warning 100149#證書有效期不足 7 天#Critical 100150#服務器狀態主機名不一致#Critical 100151#服務器狀態主機名含有非法字符#Critical 100152#服務器狀態集群中主機名重復#Critical

      4. 創建告警碼轉換腳本

      # cat /etc/snmp/zte/ztestorage_transalarmcode.sh #!/bin/bash LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") ztestorage_alarmcode='/etc/snmp/zte/ztestorage_alarmcode.txt' ztestorage_alarmcode_log='/etc/snmp/zte/ztestorage_alarmcode.log' if [ $# -ne 1 ];then exit 2 fi if [ -s $ztestorage_alarmcode ];then value=$(grep -w "$1" "$ztestorage_alarmcode"|grep -v "^#"|awk -F'#' '{print $2}') if [ 'Z'"$value" != 'Z' ];then echo $value else echo "$LOGTIME zte storage alarm code is not found." >> $ztestorage_alarmcode_log fi else echo "$LOGTIME zte storage alarm code file is not found." >> $ztestorage_alarmcode_log fi #腳本需要傳入一個參數:,輸出結果為告警碼中文描述。

      5. 定義云存儲SNMPTRAP事件類型的解析參數

      # cat /etc/snmp/snmptt.conf.zte # 新增中興云桌面分布式存儲trap信息 EVENT ztestoragealarmNew .1.3.6.1.4.1.3902.2904.1.2.1.4.1.1 "Status Events" Normal FORMAT ZBXTRAP $ar $N "alarmuuid:$+4,severity:$p1($9),$12 $p2" PREEXEC /etc/snmp/zte/getvariablestring.sh ztestoragealarmSeverity $9 PREEXEC /etc/snmp/zte/ztestorage_transalarmcode.sh $13 ## SDESC .1.3.6.1.4.1.3902.2904.1.2.1.4.1.1 表示 新的告警產生 .1.3.6.1.4.1.3902.2904.1.2.1.4.1.2 表示 相應告警恢復 .1.3.6.1.4.1.3902.2904.1.2.1.3.1.6: 告警級別,分5個等級('critical': 1,'serious': 2,'warning': 3,'prompt': 4,'notice': 5) .1.3.6.1.4.1.3902.2904.1.2.1.3.1.8: 告警內容 .1.3.6.1.4.1.3902.2904.1.2.1.3.1.10: 告警位置 .1.3.6.1.4.1.3902.2904.1.2.1.3.1.11: 告警碼 .1.3.6.1.4.1.3902.2904.1.2.1.3.1.15: 告警主機hostname EDESC EVENT ztestoragealarmClear .1.3.6.1.4.1.3902.2904.1.2.1.4.1.2 "Status Events" Normal FORMAT ZBXTRAP $ar $N "alarmuuid:$+4,severity:$p1($9),$12 $p2" ## PREEXEC /etc/snmp/zte/getvariablestring.sh ztestoragealarmSeverity $9 PREEXEC /etc/snmp/zte/ztestorage_transalarmcode.sh $13 SDESC .1.3.6.1.4.1.3902.2904.1.2.1.4.1.1 表示 新的告警產生 .1.3.6.1.4.1.3902.2904.1.2.1.4.1.2 表示 相應告警恢復 .1.3.6.1.4.1.3902.2904.1.2.1.3.1.6: 告警級別,分5個等級('critical': 1,'serious': 2,'warning': 3,'prompt': 4,'notice': 5) .1.3.6.1.4.1.3902.2904.1.2.1.3.1.8: 告警內容 .1.3.6.1.4.1.3902.2904.1.2.1.3.1.10: 告警位置 .1.3.6.1.4.1.3902.2904.1.2.1.3.1.11: 告警碼 .1.3.6.1.4.1.3902.2904.1.2.1.3.1.15: 告警主機hostname EDESC

      6. 重啟SNMPTT

      # systemctl restart snmptt

      7. 提取TRAP事件信息的alarmId

      云存儲的SNMPTRAP信息經過了預處理后寫入snmptt日志,對于同一個事件ztestoragealarmNew(告警事件)和ztestoragealarmClear(恢復事件)類型內容都有一個相同的alarmuuid,提取事件信息中的alarmuuid作為標簽ztestoragealarmuuid的值。

      8. 根據觸發器標簽進行事件關聯恢復

      對已產生的SNMPTRAP事件,如果出現恢復事件(事件類型為:ztestoragealarmClear),則通過觸發器標簽來進行匹配ztestoragealarmuuid,實現告警自動關閉。

      9. 實現效果

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Java語言概述以及環境搭建丨【奔跑吧!JAVA】
      下一篇:鯤鵬云服務器源碼安裝BreakDancer
      相關文章
      在线精品亚洲一区二区| 亚洲视频在线观看地址| 亚洲乱码一区二区三区国产精品| 亚洲最新永久在线观看| 亚洲精品免费在线观看| 亚洲网址在线观看你懂的| 久久亚洲免费视频| 亚洲AV无码国产丝袜在线观看| 亚洲一区爱区精品无码| 亚洲AV无码乱码在线观看牲色| 亚洲 国产 图片| 国产成人高清亚洲一区久久| 日韩亚洲人成在线综合| 国产精品无码亚洲精品2021| 国产在亚洲线视频观看| 久久亚洲国产成人精品无码区| 国产亚洲精品成人a v小说| 亚洲婷婷五月综合狠狠爱| 亚洲人成色777777在线观看| 精品亚洲综合在线第一区| 亚洲国产精品一区二区第一页| 亚洲AV中文无码乱人伦下载| 亚洲成人动漫在线| 亚洲第一永久在线观看| 亚洲剧情在线观看| 亚洲日韩乱码中文字幕| 精品亚洲福利一区二区| 国产成人99久久亚洲综合精品| 亚洲午夜国产精品无码老牛影视| 亚洲成av人影院| 亚洲视频在线观看网站| 亚洲看片无码在线视频| 国产精品日本亚洲777| 亚洲av无码成人精品区| 伊人婷婷综合缴情亚洲五月| 亚洲AV综合色区无码一区爱AV| 亚洲视频在线免费看| 亚洲综合精品第一页| www国产亚洲精品久久久| 久久久久亚洲av成人无码电影| 久久亚洲国产精品|