發佈日期: 發佈留言

LogAnalyzer 筆記

Views: 276

筆記環境:WINDOWS + APPSERV + LogAnalyzer + QNAP Syslog Server

各個企業因早因應網通資安等法規事故,必須將公司運作的日誌檔案須妥善保存備份以供隨時備查,因為未來可能企業必須自行舉證並未違反法規。

LogAnalyzer為Adiscon公司(http://www.adiscon.com)所發行,其主要功能為分析各種日誌檔(例如Syslog messages、Windows Events Log等等)的軟體套件,可以運作於Windows及Unix-Like作業系統上,例如FreeBSD、Linux等等,並且採用第三版通用公共授權(GNU GPLv3)為其授權方式,因此可以自由使用來進行企業中Log分析之用。LogAnalyzer(http://loganalyzer.adiscon.com)一開始發布時並非使用此一名稱,而是採用「phpLogCon」的名稱進行發布,直到2010年時,該公司因為原本軟體名稱所帶來了一些困擾,最後決定採用開頭為其公司名稱,同時加上全新且顧名思義的名稱「Adiscon LogAnalyzer」,並且該公司承諾針對此軟體,將永遠採用GPLv3授權方式進行釋出,因此,Adiscon於2010年3月時,在發布穩定新版本v3.0的同時,便正式將軟體名稱改名為「LogAnalyzer」 LogAnalyzer為採用PHP程式語言所開發而成,可於網頁介面中查詢所收集到的相關日誌內容,例如Syslog、Windows Event Log、SNMP Trap等等。

簡而言之,只要系統支援網頁伺服器(例如Apache)及PHP語言便可快速建立,並且LogAnalyzer也支援使用者帳號控管機制(必須安裝資料庫)。若是在分析所收集到的日誌(Log)時,可以透過讀取「檔案」的方式進行即時查詢(Real-Time),並且可以將收集到的日誌內容存放至資料庫(例如MySQL)內進行分析。

服務 -> APACHE2 -> 登入頁 -> 把 登入身份 改選成 ⦿這個帳戶 然後輸入電腦使用者
$CFG[‘DiskAllowed’][] = “//192.168.6.253/nas”;
$CFG[‘Sources’][‘Source1’][‘DiskFile’] = ‘//192.168.6.253/nas/messages’;
$CFG[‘ViewUseTodayYesterday’] = 0;
$CFG[‘ViewMessageCharacterLimit’] = 0;
$CFG[‘ViewEntriesPerPage’] = 100;

自動取得目錄下所以 LOG 檔加到 Source
$Sid=1;
$files = glob(“//192.168.6.253/nas/messages*”);
rsort($files);
foreach($files as $msg){
$CFG[‘DefaultSourceID’] = ‘Source2’;
$CFG[‘Sources’][‘Source’.$Sid][‘ID’] = ‘Source’.$Sid;
$CFG[‘Sources’][‘Source’.$Sid][‘Name’] = str_replace(“//192.168.6.253/nas/messages_”,””,$msg); //’Source’.$Sid;
$CFG[‘Sources’][‘Source’.$Sid][‘Name’] = str_replace(“//192.168.6.253/nas/”,””,$CFG[‘Sources’][‘Source’.$Sid][‘Name’]); //’Source’.$Sid;
$CFG[‘Sources’][‘Source’.$Sid][‘ViewID’] = ‘SYSLOG’;
$CFG[‘Sources’][‘Source’.$Sid][‘SourceType’] = SOURCE_DISK;
$CFG[‘Sources’][‘Source’.$Sid][‘LogLineType’] = ‘syslog’;
$CFG[‘Sources’][‘Source’.$Sid][‘DiskFile’] = $msg;
$Sid++;
}

搜尋過濾關鍵詞(截錄 \classes\logstream.class.php v4.1.11)
* Handle filter based *
case “facility”:
case “severity”:
case “messagetype”:
* BEGIN Eventlog based fields *
case “eventid”:
case “eventcategory”:
case “eventlogtype”:
case “eventlogsource”:
case “eventuser”:
* ——————— *
case “syslogtag”:
case “source”:
case “datefrom”:
case “dateto”:
case “datelastx”:
case “timereported”:
case “processid”:
* BEGIN WebLog based fields *
case SYSLOG_WEBLOG_USER:
case SYSLOG_WEBLOG_METHOD:
case SYSLOG_WEBLOG_URL:
case SYSLOG_WEBLOG_QUERYSTRING:
case SYSLOG_WEBLOG_PVER:
case SYSLOG_WEBLOG_STATUS:
case SYSLOG_WEBLOG_BYTESSEND:
case SYSLOG_WEBLOG_REFERER:
case SYSLOG_WEBLOG_USERAGENT:

增加自動重載刷新時間 (\include\functions_common.php)
$content[‘reloadtimes’][$iCounter] = array( “ID” => $iCounter, “Selected” => “”, “DisplayName” => ” 2 ” . $content[‘LN_AUTORELOAD_MINUTES’], “Value” => 120 ); $iCounter++;

覺得這個贊助資訊有點礙眼,可以透過修改LogAnalyzer函數設定檔(functions_common.php)來關閉
$content[‘SHOW_DONATEBUTTON’] = false; // Default = true!
當然,若覺得LogAnalyzer日誌分析對自己有幫助,不妨考慮贊助LogAnalyzer計畫使開發者更有心力繼續下去,讓LogAnalyzer運作得更好。

介紹一套 free syslog Visual Syslog Server for Windows
https://github.com/MaxBelkov/visualsyslog

發佈日期: 發佈留言

Log收集分析

Views: 29

NAS設備:
QNAP + LogSys
Synology + LogSys
OMV(Debian) + LogSys

分析工具:
win + AMP (A=> Apache、 M=> mysql、 P=> PHP) + LogAnalyzer

修改:LogAnalyzer – config.php 檔案
$Sid = 1;

// # 指定目錄路徑
$directory = ‘//192.168.6.253/RemoteLog’;
// # 列出所有檔案目錄,去除「.」與「..」目錄
$items = array_diff(scandir($directory), array(‘..’, ‘.’));

//單位換算
function formatBytes($Fsize) {
$units = array(‘ B’, ‘ KB’, ‘ MB’, ‘ GB’, ‘ TB’);
for ($i = 0; $Fsize >= 1024 && $i < 4; $i++) $Fsize /= 1024; return round($Fsize, 2).$units[$i]; } // # 輸出檔案目錄 foreach ($items as $item) { //if (is_dir($item)) { if (is_dir($directory . '/' . $item)) { $files = glob("$directory/$item/*"); rsort($files); foreach($files as $msg){ $CFG['DefaultSourceID'] = 'Source'.$Sid; $CFG['Sources']['Source'.$Sid]['ID'] = 'Source'.$Sid; $CFG['Sources']['Source'.$Sid]['Name'] = str_replace("$directory/$item/","",$msg); //'Source'.$Sid; //重整Name去掉目錄,留下檔名 $CFG['Sources']['Source'.$Sid]['Name'] = '['.$item.']_'.str_replace("$directory/","",$CFG['Sources']['Source'.$Sid]['Name']).' ('.formatBytes($Fsize=filesize($msg)).')'; //'Source'.$Sid $CFG['Sources']['Source'.$Sid]['ViewID'] = 'SYSLOG'; $CFG['Sources']['Source'.$Sid]['SourceType'] = SOURCE_DISK; $CFG['Sources']['Source'.$Sid]['LogLineType'] = 'syslog'; $CFG['Sources']['Source'.$Sid]['DiskFile'] = $msg; $Sid++; } } //if } //foreach