為了統一管理日志,也考慮到設備一旦出現問題會導致日志丟失,筆者將日志全部遠程存儲在專門的日志服務器集群中。
日志服務器集群本身結構很簡單,如圖1所示。我們將所使用的各類設備進行了分組,規則如下:
1.參照網絡類型、設備型號。如用戶接入網大量使用的某廠家OLT、用戶接入網少量使用的其它廠家OLT、內部專網的RADIUS服務等。
2.不同類型設備的日志數量差別非常大。如接入網設備,其日志包含上下線信息、配置推送信息等。
經過數月的統計,僅某型號設備1臺平均1天產生12萬條日志,而這類設備全市納入日志監控的數量超過300臺,4個月的時間產生了43億條數據,占用服務器843GB數據庫硬盤空間。
3.不同的設備權重不同。可能一些設備1天僅僅產生幾條日志,數量很少,但每條都非常重要必須實時觀測到。日志數量和實時性的不同,對服務器的壓力也相差甚大。

圖1 日志服務器拓撲圖
綜上,網絡、設備、時效和日志數量等各方面,我們給設備設計了不同的類型分組,如圖1所示的A類型。
同一類型的設備使用一主一備兩臺日志服務器。同時定期刪除debug、info等不重要的日志記錄后,將日志遷移到歸檔服務器。用于日志分析的服務器,會同時讀取歸檔和實時日志。
最后,為了日志的安全,我們將主備服務器放置在了不同的機柜上,同時備份服務器放在了不同地理位置(各縣和區)的機房。各個專網之間也是物理隔離的。
得益于大部分設備采用的syslog日志服務,我們選擇了syslog-ng開源軟件進行日志的中繼,MySQL進行日志的保存。平臺部署于centos6.8環境下,系統的安裝不在贅述,系統配置為最小安裝,僅開啟SSHD服務。系統安裝完畢后,需要注意如下幾點事項:
第一,將系統中的全部軟件升級到最新版本,防止已有軟件漏洞。
第二,設置系統的PS1參數,即命令行中每行前面的提示內容。為用戶名、用戶路徑、主機名設置不同的顏色,并添加實時時間。這看起來不起眼,但對于生產環境防止在錯誤的服務器上執行錯誤的命令很有幫助。
第三,關閉SELinux并開啟NTP時間校對服務。作為日志服務器,沒有準確的時間,那么日志就沒有意義了。
第四,更改ulimit參數并配置系統防火墻,以便于提升系統IO性能并增強基本防護。
數據庫我們選擇了可免費使用的MySQL/MariaDB社區版本。數據庫的安裝不在贅述。安裝完畢后,首先設置用戶名密碼,然后設置訪問權限,以便于控制哪些終端可以訪問數據庫中的日志信息。筆者設置的策略如下:
grant select on *.*to readonly@'10.66.66.%'identified by '${MYSQL_ROOT_PASSWORD}'
grant select on *.*to readonly@'10.66.6.%'identified by '${MYSQL_ROOT_PASSWORD}'
通過IP網段和密碼進行授權。
當數據庫部署完畢后,需要在上面的centos系統中配置syslog-ng軟件,以便于讓系統能夠接受其他設備的日志,并轉發到數據庫中。
為了讓大量的日志能夠在寫入數據庫時就拆分開,有兩種策略,一是按照日期拆分,二是按照設備IP或HOSTNAME拆分。
經過測試,HOSTNAME的獲取會浪費大量的系統資源,IP雖然包含在日志中,但是數據庫的表不能含有小數點。因此,我們選擇日期進行拆分,每天生成一個數據表。為了做到數據表的自動生成,則需要在syslog中將create_dirs設置為yes。
服務器接收到的數據,筆者定義在source s_leniynet規則中,允許四種類型的數據進入服務器:UDP514、UDP1514、TCP514、TCP1514。 其 中514是syslog協議的默認數據包端口,另外還有一些設備未使用默認端口,在端口上加1000選擇了1514端口,防止端口掃描。
服務器轉發策略定義 在destination d_leniymysql規則中。數據表格式為table("logs_${R_YEAR}${R_MONTH}${R_DAY}"),通過前面提到的create_dirs自動創建。各個表中的數據項包含sourceip、host、r_isodate、s_isodate、facility、priority、level、program以及msg。
數據庫中同時記錄設備時間和服務器時間,以便針對不同情況進行針對性的分析。真實時間作為參照依據,設備時間用來定性分析。數據庫由于數據量太大,我們將r_isodate和sourceip加入了索引。
最后,開啟設備防火墻,只允許 3306、514、1514 端口的數據通過,SSH服務也關閉防止遠程攻擊。
經過4個月的數據統計,我們收集到了大量的設備日志,并做到了針對某設備的連續分析和針對某時間段的跨設備分析。
集中式日志服務的成功應用,對IT系統日志數據的留存、查看、審計、分析和管理,提供了一個良好的平臺。日志數量雖然龐大,但用的好了,就是保障網絡的一大利器。