日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

使用Python對Syslog信息進行分析并繪圖的實現

瀏覽:42日期:2022-06-22 09:26:16
實驗目的: 對設備Syslong信息進行分析記錄,并寫入sqlite數據庫中;后續讀取數據庫的信息,對Syslog的嚴重級別分布、來源進行分析進行分析。 同時監控OSPF的狀態信息,狀態一旦改變,進行告警。實驗結果:

監控Syslog的嚴重級別分布,和日志源分布,并繪圖:

使用Python對Syslog信息進行分析并繪圖的實現

使用Python對Syslog信息進行分析并繪圖的實現

監控OSPF狀態信息:

使用Python對Syslog信息進行分析并繪圖的實現

實驗環境:

兩臺CSR1000v,完成Syslog(其中一臺)和OSPF的配置:

logging hosy x.x.x.x /將Syslong日志信息發送給目的主機(運行python)進行處理。

logging trap debugging /監控所有級別的Syslog信息。

ospf配置略。

python腳本:

腳本一:監控CSR1000v發送的Syslog Trap信息,并對信息進行分詞處理,寫入數據庫。同時監控OSPF鄰居狀態是否改變。

import socketserverimport refrom dateutil import parserimport osimport sqlite3# facility與ID的對應關系的字典,方便后續分詞時提取對應的信息facility_dict = {0: ’KERN’, 1: ’USER’, 2: ’MAIL’, 3: ’DAEMON’, 4: ’AUTH’, 5: ’SYSLOG’, 6: ’LPR’, 7: ’NEWS’, 8: ’UUCP’, 9: ’CRON’, 10: ’AUTHPRIV’, 11: ’FTP’, 16: ’LOCAL0’, 17: ’LOCAL1’, 18: ’LOCAL2’, 19: ’LOCAL3’, 20: ’LOCAL4’, 21: ’LOCAL5’, 22: ’LOCAL6’, 23: ’LOCAL7’}# severity_level與ID的對應關系的字典,方便后續分詞時提取對應的信息severity_level_dict = {0: ’EMERG’, 1: ’ALERT’, 2: ’CRIT’, 3: ’ERR’, 4: ’WARNING’, 5: ’NOTICE’, 6: ’INFO’, 7: ’DEBUG’}# 分詞處理的類class SyslogUDPHandler(socketserver.BaseRequestHandler): def handle(self):data = bytes.decode(self.request[0].strip()) # 讀取數據# print(data)syslog_info_dict = {’device_ip’: self.client_address[0]}try: # syslog信息如下:<187>83: *Apr 4 00:03:12.969: %LINK-3-UPDOWN: Interface GigabitEthernet2, # changed state to up,我們需要對此進行提煉分詞,并將分詞結果記入到一個字典里面;具體的分詞過程簡單了解即可 syslog_info = re.match(r’^<(d*)>(d*): *(.*): %(w+)-(d)-(w+): (.*)’, str(data)).groups() # print(syslog_info[0]) 提取為整數 例如 185 # 185 二進制為 1011 1001 # 前5位為facility >> 3 獲取前5位 # 后3位為severity_level & 0b111 獲取后3位 syslog_info_dict[’facility’] = (int(syslog_info[0]) >> 3) syslog_info_dict[’facility_name’] = facility_dict[int(syslog_info[0]) >> 3] syslog_info_dict[’logid’] = int(syslog_info[1]) syslog_info_dict[’time’] = parser.parse(syslog_info[2]) syslog_info_dict[’log_source’] = syslog_info[3] syslog_info_dict[’severity_level’] = int(syslog_info[4]) syslog_info_dict[’severity_level_name’] = severity_level_dict[int(syslog_info[4])] syslog_info_dict[’description’] = syslog_info[5] syslog_info_dict[’text’] = syslog_info[6]except AttributeError: # 有些日志會缺失%SYS-5-CONFIG_I, 造成第一個正則表達式無法匹配 , 也無法提取severity_level # 下面的icmp的debug就是示例 # <191>91: *Apr 4 00:12:29.616: ICMP: echo reply rcvd, src 10.1.1.80, dst 10.1.1.253, topology BASE, dscp 0 topoid 0 syslog_info = re.match(r’^<(d*)>(d*): *(.*): (w+): (.*)’, str(data)).groups() print(syslog_info[0]) syslog_info_dict[’facility’] = (int(syslog_info[0]) >> 3) syslog_info_dict[’facility_name’] = facility_dict[int(syslog_info[0]) >> 3] syslog_info_dict[’logid’] = int(syslog_info[1]) syslog_info_dict[’time’] = parser.parse(syslog_info[2]) syslog_info_dict[’log_source’] = syslog_info[3] # 如果在文本部分解析不了severity_level, 切換到syslog_info[0]去獲取 # 185 二進制為 1011 1001 # 前5位為facility >> 3 獲取前5位 # 后3位為severity_level & 0b111 獲取后3位 syslog_info_dict[’severity_level’] = (int(syslog_info[0]) & 0b111) syslog_info_dict[’severity_level_name’] = severity_level_dict[(int(syslog_info[0]) & 0b111)] syslog_info_dict[’description’] = ’N/A’ syslog_info_dict[’text’] = syslog_info[4]# print(syslog_info_dict)# 根據分詞后的字典進行分析,如果用正則表達式匹配到了OSPF狀態有了改變,則打印告警信息if syslog_info_dict[’log_source’] == ’OSPF’: result_ospf = re.findall(’(Process d+), Nbr ([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}).+to (w+)’, syslog_info_dict[’text’])[0] if result_ospf:print(’OSPF ’+result_ospf[0]+’ Neighbor ’+result_ospf[1]+’ status ’+result_ospf[2])# 將字典信息寫入sqlite數據庫中conn = sqlite3.connect(gl_dbname)cursor = conn.cursor()cursor.execute('insert into syslogdb (time, device_ip, facility, facility_name, severity_level, severity_level_name, logid, log_source, description, text) values (’%s’, ’%s’, %d, ’%s’, %d, ’%s’, %d, ’%s’, ’%s’, ’%s’)' % (syslog_info_dict[’time’].strftime('%Y-%m-%d %H:%M:%S'),syslog_info_dict[’device_ip’],syslog_info_dict[’facility’],syslog_info_dict[’facility_name’],syslog_info_dict[’severity_level’],syslog_info_dict[’severity_level_name’],syslog_info_dict[’logid’],syslog_info_dict[’log_source’],syslog_info_dict[’description’],syslog_info_dict[’text’],))conn.commit()if __name__ == '__main__': # 使用Linux解釋器 & WIN解釋器 global gl_dbname gl_dbname = ’syslog.sqlite’ if os.path.exists(gl_dbname):os.remove(gl_dbname) # 連接數據庫 conn = sqlite3.connect(gl_dbname) cursor = conn.cursor() # 創建數據庫 cursor.execute('create table syslogdb(id INTEGER PRIMARY KEY AUTOINCREMENT, time varchar(64), device_ip varchar(32), facility int, facility_name varchar(32), severity_level int, severity_level_name varchar(32), logid int, log_source varchar(32), description varchar(128), text varchar(1024) )') conn.commit() try:HOST, PORT = '0.0.0.0', 514 # 本地地址與端口server = socketserver.UDPServer((HOST, PORT), SyslogUDPHandler) # 綁定本地地址,端口和syslog處理方法print('Syslog 服務已啟用, 寫入日志到數據庫!!!')server.serve_forever(poll_interval=0.5) # 運行服務器,和輪詢間隔 except (IOError, SystemExit):raise except KeyboardInterrupt: # 捕獲Ctrl+C,打印信息并退出print('Crtl+C Pressed. Shutting down.') finally:conn.commit()

腳本二:讀取數據庫中的信息,并根據信息進行餅圖繪制。

import sqlite3from matplotlib import pyplot as pltfrom syslog_server_to_db import severity_level_dict# 繪制嚴重等級的餅圖def syslog_show_error_level_pie(dbname): # 連接數據庫 conn = sqlite3.connect(dbname) cursor = conn.cursor() # 提取安全級別和數量信息 cursor.execute('select severity_level as level,COUNT(*) as count from syslogdb group by severity_level') yourresults = cursor.fetchall() level_list = [] count_list = [] # 把結果寫入leve_list和count_list的列表 for level_info in yourresults:level_list.append(severity_level_dict[level_info[0]])count_list.append(level_info[1]) print(level_list) print([float(count) for count in count_list]) plt.rcParams[’font.sans-serif’] = [’SimHei’] # 設置中文 # 調節圖形大小,寬,高 plt.figure(figsize=(6, 6)) # 使用count_list的比例來繪制餅圖 # 使用level_list作為注釋 patches, l_text, p_text = plt.pie(count_list, labels=level_list, labeldistance=1.1, autopct=’%3.1f%%’, shadow=False, startangle=90, pctdistance=0.6) # 改變文本的大小 # 方法是把每一個text遍歷。調用set_size方法設置它的屬性 for t in l_text:t.set_size = 30 for t in p_text:t.set_size = 20 # 設置x,y軸刻度一致,這樣餅圖才能是圓的 plt.axis(’equal’) plt.title(’SYSLOG嚴重級別分布圖’) # 主題 plt.legend() plt.show()# 繪制Syslog來源的餅圖def syslog_show_source_pie(dbname): # 連接數據庫 conn = sqlite3.connect(dbname) cursor = conn.cursor() # 提取log源與其對應的數量 cursor.execute('select log_source,COUNT(*) as count from syslogdb group by log_source') yourresults = cursor.fetchall() source_list = [] count_list = [] # 將數據庫的信息,依次寫入兩個列表 for source_info in yourresults:source_list.append(source_info[0])count_list.append(source_info[1]) print(source_list) print([float(count) for count in count_list]) plt.rcParams[’font.sans-serif’] = [’SimHei’] # 設置中文 # 調節圖形大小,寬,高 plt.figure(figsize=(6, 6)) # 使用count_list的比例來繪制餅圖 # 使用level_list作為注釋 patches, l_text, p_text = plt.pie(count_list, labels=source_list, labeldistance=1.1, autopct=’%3.1f%%’, shadow=False, startangle=90, pctdistance=0.6) # 改變文本的大小 # 方法是把每一個text遍歷。調用set_size方法設置它的屬性 for t in l_text:t.set_size = 30 for t in p_text:t.set_size = 20 # 設置x,y軸刻度一致,這樣餅圖才能是圓的 plt.axis(’equal’) plt.title(’日志源分布圖’) # 主題 plt.legend() plt.show()if __name__ == ’__main__’: syslog_show_error_level_pie('syslog.sqlite') syslog_show_source_pie('syslog.sqlite')

參考資料來源:現任明教教主

到此這篇關于使用Python對Syslog信息進行分析并繪圖的實現的文章就介紹到這了,更多相關Python Syslog分析 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
色综合视频一区二区三区日韩| 一区二区三区网站| 免费日韩一区二区三区| 麻豆精品一区二区综合av| 国产精品黄网站| 日韩精品一区二区三区av| 日本电影久久久| 国产精品乱战久久久| 国产精品日韩精品中文字幕| 麻豆久久一区| 欧美aa一级| 影音先锋久久| 日本成人中文字幕| 久久99精品久久久野外观看| 日韩av有码| 欧美日韩一二三四| 手机精品视频在线观看| 日韩精彩视频在线观看| 欧美国产另类| 成人日韩在线观看| 免费视频一区三区| 亚洲精品亚洲人成在线观看| 日本va欧美va欧美va精品| 国产精品久久久久久模特 | 国产精品亚洲四区在线观看| 国产极品久久久久久久久波多结野| 国产在线不卡一区二区三区| 欧美日韩精品免费观看视欧美高清免费大片| 香蕉久久精品| 亚洲久久视频| 狠狠久久伊人中文字幕| 久久精品电影| 免费成人在线观看| 国产精品久久久久久久免费软件| 日韩和的一区二在线| 蜜桃91丨九色丨蝌蚪91桃色| 欧美国产另类| 在线观看免费一区二区| 欧美一级二级视频| 黄色在线观看www| 西西人体一区二区| 欧美激情久久久久久久久久久| 久久三级视频| 日本欧美一区| 欧美日中文字幕| 国产一卡不卡| 99久久视频| 伊人久久大香伊蕉在人线观看热v| 国产精久久一区二区| 欧美美女一区| 麻豆精品一区二区综合av| 夜夜嗨av一区二区三区网站四季av| 欧美天堂在线| 亚洲成人日韩| 国产精区一区二区| 亚洲一级黄色| 国产精品麻豆成人av电影艾秋 | 日本在线视频一区二区| 福利片在线一区二区| 人人精品人人爱| 精品国产一区二区三区2021| 国产婷婷精品| 在线手机中文字幕| 88久久精品| 樱桃成人精品视频在线播放| 精品精品国产三级a∨在线| 99在线精品视频在线观看| 精品资源在线| 日韩精品乱码av一区二区| 国精品一区二区三区| 久久精品一本| 日本国产一区| 激情久久久久久久| 欧美成人aaa| 最新国产精品视频| 欧美日韩中文字幕一区二区三区| 免费在线欧美黄色| 日本成人手机在线| 性欧美精品高清| 三级小说欧洲区亚洲区| 免费看久久久| 欧美亚洲免费| 亚洲欧美一级| 欧美成人久久| 日韩国产欧美| 精品一级视频| 国产免费av一区二区三区| 亚洲一区二区成人| 99视频精品全部免费在线视频| 久久精品理论片| 97精品久久| 中文字幕一区二区三区日韩精品| 成人日韩在线观看| 福利在线免费视频| 久久精品资源| 欧美黄页在线免费观看| 97精品资源在线观看| 国产一区二区精品| 亚洲午夜在线| 999国产精品999久久久久久| 四虎8848精品成人免费网站| 国产精品一区二区av交换| 免费高清在线一区| 亚洲作爱视频| 亚洲大全视频| 欧美亚洲国产一区| 成人看片网站| 免费高潮视频95在线观看网站| 精品久久久久久久| 精品三级av| 国产一区三区在线播放| 美女精品视频在线| 国产精品115| 国产精品白丝久久av网站| 欧美日韩国产一区二区在线观看| 亚洲人成亚洲精品| 亚洲精品国产精品粉嫩| 亚洲综合不卡| 丝袜美腿成人在线| 亚洲一区二区小说| 亚洲a成人v| 亚洲18在线| 日韩激情网站| 国产精品一级| 国产一区二区三区四区大秀 | 久久国际精品| 国产精品a久久久久| 国产精品99久久免费| 国产黄色精品| 91视频久久| 色老板在线视频一区二区| 日韩在线视频精品| 99精品在线| 亚洲欧美日本日韩| 亚洲精品无吗| 国产精品一区二区三区av| 国产精品欧美日韩一区| 另类欧美日韩国产在线| 国产成人免费av一区二区午夜| 激情国产在线| 午夜久久免费观看| 亚洲日本欧美| 国产精品多人| 欧美少妇精品| 欧美日韩日本国产亚洲在线| 亚洲一区二区成人| 亚洲人妖在线| 国产欧美自拍一区| 精品久久久久中文字幕小说| 四虎4545www国产精品 | 日韩专区视频网站| 麻豆极品一区二区三区| 久草免费在线视频| 一本色道精品久久一区二区三区| 亚洲一区av| 国产精品99久久免费| 亚洲电影有码| 婷婷视频一区二区三区| 国产精品久久久久久久久久齐齐| av资源中文在线| 91精品电影| 国产亚洲欧美日韩在线观看一区二区| 韩国女主播一区二区三区| 国产一区久久| 日韩成人午夜精品| 国产欧美一区二区三区精品酒店| 91久久视频| 国产高清视频一区二区| 久久国产成人午夜av影院宅| 久热re这里精品视频在线6| 久久国产婷婷国产香蕉| 日韩在线短视频| 亚洲精品系列| www.51av欧美视频| 亚洲精品亚洲人成在线观看| 国产91欧美| 综合一区在线| 涩涩av在线| 日韩激情av在线| 日韩欧美少妇| 国产剧情在线观看一区| 亚洲午夜黄色| 国产精品igao视频网网址不卡日韩| 国产综合亚洲精品一区二| 91成人在线| 午夜久久tv| 国产成人77亚洲精品www| 亚洲欧洲av| 久久一级电影| 国产欧美日韩精品一区二区三区| 国产综合精品一区| 老司机精品在线| 视频在线在亚洲| 午夜精品久久久久久久久久蜜桃| 久久不射网站| 成人黄色av| 日韩精品免费视频人成| 激情综合网五月| 国产一区丝袜| 男人的天堂亚洲一区|