python收入波动告警分析_使用Python/Pandas分析告警日志数据
作者:呂磊
文章來自微信公眾號:平臺人生
Python
Python是一種面向對象的解釋型程序設計語言。作為一種腳本語言,Python在運行性能上相對C/C++等編譯型語言有一定不足,但Python語言的學習曲線比較平緩,寫出的程序代碼簡潔,架構清晰,平臺兼容性較好;同時PYTHON生態圈擁有大量的擴展模塊;這些強大易用的第三方庫使得PYTHON在系統運維/網絡開發/科學計算/圖像處理等領域都有廣泛應用。
Pandas
這里的Pandas不是熊貓,而是一個開源的PYTHON數據分析模塊,他提供了大量庫和標準模塊,能夠對大型數據集進行快捷的處理和分析。在我們的日常工作中,經常會用到excel的數據透視表功能來對數據進行統計分析,但excel能夠實現的功能較為簡單,難以擴展,同時excel在數據量過大的場景中也難以發揮用武之地。
利用Pandas,我們可以實現很多excel中難以完成的任務。在本文中我們嘗試使用Pandas對10w數量級的告警信息進行統計分析。哪個時段產生的告警數量最多,哪些主機的告警數量最多,哪些次要告警觸發了主要告警,以及一些更為復雜的問題都可以通過Pandas來進行數據分析。
PANDAS中的數據結構介紹
在接觸實際代碼之前,我們先熟悉一下Pandas中常用的數據結構類型。在Pandas中有兩類最重要的數據結構
一. Series
Series代表一個一維數組,和常用的List數據結構類似,我們可以把excel文件中的一列值賦給一個Series對象。
二. Dataframe
Dataframe是一個二維表狀結構,和二維數組類似,我們可以把excel文件中n列m行的值賦給一個nm大小的Dataframe對象。
本文中主要將用到Dataframe對象,通過操作Dataframe對告警信息進行分析
批量讀取xls數據文件
上圖就是所有的次要告警數據文件,每個excel文件中有2000條數據。為方便處理,我們首先將所有次要告警的數據匯總,代碼如下:
ImportPandas aspd #導入Pandas包
Import os #導入操作系統包
file_list = os.listdir(secondary_data_path)
total_arr = []
for f in file_list:
if f.endswith('.xls'):
df = pd.read_excel(data_path+f) #如果是xls文件則將其內容讀取到df變量中
total_arr.append(df)
secondary_df = pd.concat(total_arr) #將所有xls文件內容整合到獨個Dataframe中
tdf.to_csv(secondary_data_path +'secondary_total.csv')
匯總后的內容保存到本地文件方便后續操作
這部分代碼功能很簡單:每次用Pandas模塊中的read_excel函數讀取一個excel文件,將文件的內容保存到Dataframe類型的變量df中,然后將所有df合并到一個總的secondary_df,為了以后讀取方便,我們同時將匯總后的數據保存到secondary_total.csv本地文件中。(同樣的數據量,保存為csv格式比xls格式節省空間)。
用同樣的方法,將主要告警的數據匯總到primary_df,保存到primary_total.csv文件中。
所有的告警信息都保存到了primary_df和secondary_df這兩個Dataframe中,我們后續的所有操作都是基于這兩個df。
首先看看告警信息都有哪些屬性
我們單獨挑出“配置項應用系統”這個屬性來計數并排序,看看次要告警數量最多的應用系統都有哪些
數字總是略顯枯燥,我們可以使用Python的matplotlib這個庫來將數據可視化。根據各系統的告警數量作出柱狀圖,只需要兩行代碼
同樣的方法,再看看主要告警的情況
接下來我們希望計算各系統主/次要告警的數量比,我們將主/次要告警的數量比看做一個告警傳導率,比值越高的,說明次要告警轉化為主要告警的傳導率越高。
知道哪些系統的告警轉化率較高之后,我們可以進一步分析,這些主要告警的告警指標類型都是什么?是CPU類,還是內存類,或是磁盤類?是否和次要告警的告警指標類型相同?下面的代碼分別匯總轉化率最高系統的主/次要告警類別。
可以看到,該系統中的主要告警主要是CPU使用率類,次要告警中較多的有CPU,磁盤和內存交換頁三類。可見由CPU類次要告警觸發的主要告警數量較多。如果想要降低主要告警的數量,可以從優化程序代碼或增加CPU運算能力的方向著手。
后續我們還可以進行很多更加細化的分析,例如根據系統內主機,告警時間等維度來進行各類統計,可以通過散點圖,餅狀圖,累積柱狀圖等多種形式對數據進行更加生動的展現。由于篇幅的限制,本文中不對此展開詳細描述。
結語
Python/Pandas是一個輕量級的數據分析框架,使用Python/Pandas可以完成很多excel難以實現的功能,同時具備優異的擴展性和靈活性。配合Python的Matplotlib等模塊,Pandas在數據可視化/繪圖等領域也有很好的表現。本文僅實現了一些非常簡單的功能,Pandas更多強大的功能等待待大家去發掘。
總結
以上是生活随笔為你收集整理的python收入波动告警分析_使用Python/Pandas分析告警日志数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 停止工作 scapy_常见
- 下一篇: tensorflow 显存 训练_【他山