• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于rsyslog系統(tǒng)日志的收集與分析

      2012-08-06 12:51:58朱曉亮陳云芳陸有為
      關(guān)鍵詞:應(yīng)用層配置文件隊列

      朱曉亮 陳云芳 陸有為

      南京郵電大學(xué)物聯(lián)網(wǎng)學(xué)院 江蘇 210003

      0 引言

      本文研究一種基于rsyslog系統(tǒng)日志處理系統(tǒng),通過收集*nix系統(tǒng)里產(chǎn)生的各種log,分析并確定系統(tǒng)中的問題所在,最終以Web方式展示出來,方便的進行檢索和分析,具有較高的理論和實用價值。

      1 *nix的日志處理

      1.1 *nix平臺下的日志

      對于*nix平臺來說,log主要包括應(yīng)用層的log、系統(tǒng)層的log以及虛擬機的log。

      應(yīng)用層的log:大部分應(yīng)用層的log默認會存儲在/var/log/下面,如果通過ls列出/var/log/下面的目錄文件,我們會看到很多熟悉的名字,比如/var/log/apache2,則代表是由apache2服務(wù)產(chǎn)生的log文件;再比如/var/log/samba則代表是由Samba服務(wù)產(chǎn)生的log文件。

      系統(tǒng)層的log:系統(tǒng)的log信息主要是跟Ubuntu的系統(tǒng)信息相關(guān),跟應(yīng)用層的log關(guān)系不是很緊密,常見的包括用戶的認證機制的日志信息,系統(tǒng)的daemon,系統(tǒng)的messages,以及系統(tǒng)所有的壓縮文件也就是其本身syslog。

      虛擬機的log:對于虛擬機來說,目前主流的包括xen以及KVM,其中前者使用范圍更為廣泛,同樣,在/var/log/下有xen/目錄,該目錄下會包含console/目錄,記錄通過console登錄的信息,domain-builder-ng.log文件記錄domU的信息,xen-debug文件以記錄xen虛擬機的debug信息等。而對于KVM來說,則包含/var/log/libvirt/目錄,該目錄下面的文件記錄的是KVM相關(guān)的log信息。

      1.2 Rsyslog日志處理協(xié)議

      Syslog是一個很著名的網(wǎng)絡(luò)協(xié)議,是一種在Unix和類Unix的計算機系統(tǒng)上使用的協(xié)議,它用于轉(zhuǎn)發(fā)以太網(wǎng)絡(luò)中的日志消息。它實施了基本的syslog協(xié)議,并且為syslog協(xié)議擴增了基于內(nèi)容的過渡、豐富的過濾功能和靈活的配置選項,還增添了一些重要功能,比如使用TCP進行傳輸。

      (1) rsyslog的功能

      Rsyslog通過隊列來耦合兩個動作,在隊列中,一方作為生產(chǎn)者,一方作為消費者,生產(chǎn)者會生產(chǎn)一些東西,一般,“一些東西”通常是syslog信息,當然,隊列也可以用于其他的目的。

      Rsyslog有一個主隊列和多個action(動作)隊列,消息輸入模塊把消息pass到主隊列,再由主隊列根據(jù)rules分給各個action隊列。

      在配置文件里,可以通過MainMsg和Action分別用來設(shè)定主隊列和aciton隊列的參數(shù)。在隊列創(chuàng)建前,相同的參數(shù)可以指定多次,最后指定的優(yōu)先。

      主隊列,在解析完配置文件后,開始創(chuàng)建。Action隊列,在每次動作選擇時被創(chuàng)建。

      Rsyslog支持多種模式,在配置文件里通過$queuetype來指定。目前有下面三種:

      ① 直接隊列,不排隊或緩存任何隊列元素,直接傳遞元素到下一個處理機制;

      ② 內(nèi)存隊列,將隊列緩存到內(nèi)存中,等到一定的觸發(fā)條件再傳遞;

      ③ 磁盤輔助內(nèi)存隊列,將隊列緩存到磁盤中,等到一定的觸發(fā)條件再傳遞。

      (2) rsyslog的使用

      在實際的使用過程中,我們可以通過配置文件和查看相應(yīng)的日志文件來使用rsyslog。然而,在許多應(yīng)用場景下,我們往往需要通過程序產(chǎn)生輸出信息并進行記錄,也就是說要把一些信息寫成日志文件。正常情況下運行程序的人不用關(guān)心日志里的內(nèi)容,只有在出現(xiàn)問題的時候才會查看日志文件里的內(nèi)容以確定問題所在。

      因此,下面設(shè)計通過rsyslog日志系統(tǒng)提供的API調(diào)用接口,來使用程序?qū)崿F(xiàn)對rsyslog的使用。

      常用的rsyslog系統(tǒng)調(diào)用包括如下四個:

      ① void openlog(const char *ident, int option, int facility):打開日志設(shè)備;

      ② void syslog(int priority, const char *format,...):寫入日志;

      ③ void closelog(void):關(guān)閉日志設(shè)備;

      ④ vsyslog:它和syslog功能類此,只是有不同的參數(shù)。

      增加一條log信息的過程(如圖1):

      圖1 rsyslog系統(tǒng)調(diào)用

      我們可以通過下面一小段程序來熟悉這幾個系統(tǒng)調(diào)用:

      2 大規(guī)模日志收集系統(tǒng)的設(shè)計

      一個好的日志系統(tǒng),不但需要一個魯棒性很高的后端,還需要一個體驗很高的前端。對于寫操作要求很高的日志系統(tǒng),我們選用 MySQL 作為我們log存儲的數(shù)據(jù)庫系統(tǒng),而使用 PHP 這門全球最流行的腳本語言來構(gòu)成前端。

      同時我們使用 MyISAM 作為數(shù)據(jù)庫的存儲引擎,也就是默認的引擎,因為這里的應(yīng)用是不需要事務(wù)的,處理的基本的CRUD操作,而且以 insert 為主。

      接下來我們需要建立業(yè)務(wù)相關(guān)的數(shù)據(jù)庫了。數(shù)據(jù)庫的名字命名為 Syslog。這里需要建立表1、表2。

      SystemEvents,該表存放log的實際信息,包括惟一標識號 ID,log到達logserver 的時間,F(xiàn)acility級別,Priority級別,log的內(nèi)容 Message 等。

      SystemEventsProperties,該表存放 SystemEvents 的相關(guān)屬性,包括一個惟一的表示,同時也作為該表的主鍵 ID 號,以及一些保留的字段等。

      表1 Syste5mEvents 表部分條目

      表2 SystemEventsProperties 表部分條目

      在完成建立表格之后,需要通知rsyslog以數(shù)據(jù)庫的方式來收集log信息:

      在完成了數(shù)據(jù)庫的設(shè)計之后,開始Web的設(shè)計,這里主要包括6大模塊。它們分別是如下的:

      用戶登錄登出(Login/Logout);

      數(shù)據(jù)檢索(Search);

      事件展示(Show Events);

      數(shù)據(jù)分析報告(Statistics);

      用戶管理(Admin Center);

      數(shù)據(jù)庫讀寫 (DB I/O)。

      用戶管理則是對登錄該系統(tǒng)用戶的日常的操作維護,包括用戶以及用戶組的權(quán)限等問題;數(shù)據(jù)檢索主要是通過關(guān)鍵詞來準確匹配需要的搜索的內(nèi)容;事件展示是該log收集分析系統(tǒng)的主要界面,也就是進入該系統(tǒng)的首頁面,會根據(jù)默認的情況展示log收集的數(shù)據(jù),以及相應(yīng)的log信息的分類、劃分的等級等;報告生成主要是對log信息的分類統(tǒng)計。

      3 測試結(jié)果與分析

      3.1 log的收集測試

      這里通過手動的測試,來測試寫入 /var/log/messages 的情況,我們需要一個簡單 logger 命令來測試(如圖2):

      $ logger -p local3.info "Msg"

      圖2 rsyslog測試示例

      第一行日志顯示: May 22 17:10:09 lvs-1 yunbg: 11其表示意思如下:第一列:日志產(chǎn)生時間;第二列:產(chǎn)生此日志的主機名稱;第三列:產(chǎn)生此日志的應(yīng)用程序或用戶名稱;第四列:日志的內(nèi)容。正如前面所說的,應(yīng)用程序的日志級別是由應(yīng)用程序所決定的。部分應(yīng)用程序可通過配置,定義其日志級別。例如,/etc/ssh/sshd_config。

      3.2 Web界面下log的檢索和展示

      這里根據(jù)“Other filters”包括“Syslog Facility”“Syslog Severity”等類別來進行搜索,通過關(guān)鍵詞加上符號的形式來實現(xiàn),比如“facility:local0 severity: warning”這個則是搜索Facility為local0而severity為warning級別的內(nèi)容。檢索界面如圖3所示。

      圖3 log檢索

      通過檢索生成的報告中,包括 Date、Facility、Severity、Host、Syslogtag、Messagetype、Message 幾個欄目,分別表示日志到達的時間、其 Facility的值、嚴重等級程度、來自于哪臺主機、其 syslog 的 tag、信息的類型以及最重要的一項其顯示的消息,即如圖4所示。

      圖4 數(shù)據(jù)報告展示

      對于 Message 這一欄,如果點擊,可以得到更加詳細的消息信息。整個界面根據(jù)時間進行排序,時間越早的排在前面,偏晚的則排在后面,這也符合我們的需求,設(shè)計日志系統(tǒng)的主要目的是用來發(fā)現(xiàn)問題解決問題的,因此我們可以通過查找過濾關(guān)鍵字來找到我們需要的日志信息。

      4 結(jié)束語

      本文介紹了 *nix 平臺下的log,歸納了應(yīng)用層、系統(tǒng)層以及虛擬機的log文件。熟悉rsyslog的功能以及其核心功能——隊列。在此基礎(chǔ)上,將log內(nèi)容收集到數(shù)據(jù)庫中并以Web的方式展現(xiàn)出來。保證了數(shù)據(jù)庫的讀寫效率和在出現(xiàn)系統(tǒng)問題的情況下,能很快通知并及時解決系統(tǒng)故障。同時,文章也存在可以改進和拓展的方面。在log的分析方面并不是很完善,可以通過一定的匹配算法實現(xiàn)自動化的過濾、展示以及根據(jù)預(yù)定的閾值進行報警,以便及時通過log發(fā)現(xiàn)系統(tǒng)中存在的問題,更好的體現(xiàn)log的作用。

      [1] 乃密斯.Linux系統(tǒng)管理技術(shù)手冊.人民郵電出版社.2008.

      [2] 馬修.Linux程序設(shè)計-(第3版).人民郵電出版社.2007.

      [3] Rainer Gerhards, Adiscon GmbH. rsyslog: going up from 40K messages per second to 250K.

      [4] 張文江,吳慶波.Linux日志文件系統(tǒng)研究.計算機工程與應(yīng)用.2006.

      [5] 劉丹,賴鋒.系統(tǒng)安全中Linux日志的實用研究.世界電信.2003.

      [6] 李燕南,劉新等.主機日志分析與研究[J].中國高新技術(shù)企業(yè).2010.

      [7] R. Gerhards. The Syslog Protocol. RFC 5424 (Proposed Standard),March 2009.

      猜你喜歡
      應(yīng)用層配置文件隊列
      提示用戶配置文件錯誤 這樣解決
      隊列里的小秘密
      基于多隊列切換的SDN擁塞控制*
      軟件(2020年3期)2020-04-20 00:58:44
      搭建簡單的Kubernetes集群
      互不干涉混用Chromium Edge
      在隊列里
      忘記ESXi主機root密碼怎么辦
      豐田加速駛?cè)胱詣玉{駛隊列
      基于分級保護的OA系統(tǒng)應(yīng)用層訪問控制研究
      新一代雙向互動電力線通信技術(shù)的應(yīng)用層協(xié)議研究
      古蔺县| 南丹县| 洛川县| 天全县| 赣榆县| 方正县| 绿春县| 湄潭县| 铜鼓县| 江油市| 浪卡子县| 如皋市| 聊城市| 安图县| 荥阳市| 长治县| 永仁县| 澄城县| 商南县| 扶余县| 黄冈市| 兴海县| 北宁市| 长寿区| 岳西县| 娄烦县| 资溪县| 阆中市| 邳州市| 西宁市| 佛坪县| 吉安县| 永昌县| 萍乡市| 阿图什市| 郑州市| 玉树县| 绥江县| 句容市| 陆河县| 宁德市|