一、日誌基礎知識
1、什麼是日誌
日誌是記錄應用程序運行狀態和問題的文件,是查找和解決問題時重要的依據。Linux系統日誌文件一般位於/var/log目錄下,包括系統級別的日誌、應用級別的日誌等。
2、日誌種類
常見系統級別的日誌文件包括:
/var/log/messages:系統級別的日誌文件,包括內核、系統守護進程等的輸出信息。
/var/log/auth.log:系統認證相關的日誌文件。
/var/log/secure:用來記錄SSH連接的詳細情況。
/var/log/maillog:郵件系統相關的日誌文件,例如Postfix、Sendmail等。
/var/log/cron:維護系統Cron任務的日誌文件。
/var/log/kernel.log:記錄內核信息的日誌文件。
/var/log/syslog:包含進程日誌、內核日誌等所有系統級別的日誌。
3、日誌工具
一般使用以下命令查看和分析日誌文件:
tail -f /var/log/messages:實時查看系統日誌信息。
grep ERROR /var/log/messages:查找關鍵字ERROR所在的日誌信息。
less /var/log/messages:使用less命令分頁查看系統日誌信息。
sed -n /^Jun 29/ p /var/log/secure:查看6月29日SSH連接相關的日誌信息。
二、日誌分析工具
1、Syslog-NG
Syslog-NG是一個功能強大的系統日誌收集、處理和傳輸工具,並支持一些擴展功能,例如TLS加密、多線程處理等。常見的配置文件位於/etc/syslog-ng/目錄下。
安裝:yum install syslog-ng
啟動:systemctl start syslog-ng
配置:/etc/syslog-ng/syslog-ng.conf
2、Logwatch
Logwatch是一個日誌文件分析工具,使用Perl編寫,可以幫助用戶自動匯總系統日誌信息,並生成可讀的日誌報告。常見的配置文件位於/etc/logwatch/目錄下。
安裝:yum install logwatch
配置:/etc/logwatch/conf/logwatch.conf
執行:logwatch --mailto xxx@xxx.com
3、ELK
ELK是一組開源工具的縮寫,包括Elasticsearch、Logstash、Kibana。Elasticsearch是一個開源的全文搜索和分析引擎,Logstash是一個用於日誌數據收集和處理的工具,Kibana是一個Web界面,用於數據查詢、可視化展示等。ELK組合可以處理運行中的日誌數據,搜索、分析、可視化運行中的數據。
三、使用Python分析日誌數據
Python提供了許多處理日誌數據的庫和工具,例如regular expression(正則表達式)、pandas(數據處理)、matplotlib(數據可視化)等,可以方便地分析日誌數據。
下面是一個簡單的使用Python分析日誌的示例:
import re
import pandas as pd
import datetime
import matplotlib.pyplot as plt
logfile = open("/var/log/auth.log", "r")
records = []
for line in logfile:
if 'Failed password' in line:
time = datetime.datetime.strptime(' '.join(line.split()[:3]), '%b %d %H:%M:%S')
ip = re.findall( r'[0-9]+(?:\.[0-9]+){3}', line )[0]
records.append([time, ip])
data = pd.DataFrame.from_records(records, columns=["time", "ip"])
data['time'] = data['time'].dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai')
count = data.groupby([data.time.dt.hour])['ip'].count()
plt.plot(count)
plt.xlabel('Hour of Day')
plt.ylabel('# of Failed SSH attempts')
plt.title('Failed SSH Login Attempts by Hour')
以上代碼可以將SSH登錄失敗次數按小時進行分組,並使用matplotlib庫生成一張折線圖,更直觀地展示統計數據。詳細分析可以使用pandas庫對data數據進行統計和篩選操作。
四、結語
以上介紹了Linux日誌的基本知識、日誌分析工具和使用Python分析日誌數據的方法。對於Linux系統管理員,掌握日誌分析技術是必不可少的,可以更好地維護系統。
原創文章,作者:GSODX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/371339.html