2016-10-14 30 views
0

我有我的logstash進口下列配置幾個CSV文件:即使在Windows上配置正常時,如何調試logstash?

input { 
    file { 
    path => [ 
     "C:\Data\Archive_ATS_L1\2016-10-08-00-00_to_2016-10-09-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv", 
     "C:\Data\Archive_ATS_L1\2016-10-09-00-00_to_2016-10-10-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv", 
     "C:\Data\Archive_ATS_L1\2016-10-10-00-00_to_2016-10-11-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv", 
     "C:\Data\Archive_ATS_L1\2016-10-11-00-00_to_2016-10-12-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv", 
     "C:\Data\Archive_ATS_L1\2016-10-12-00-00_to_2016-10-13-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv", 
     "C:\Data\Archive_ATS_L1\2016-10-13-00-00_to_2016-10-14-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv", 
     "C:\Data\Archive_ATS_L1\2016-10-14-00-00_to_2016-10-15-00-00\S2KHistorian\Historian\S2KEventMsg_Table.csv" 
    ] 
    start_position => "beginning"  
    } 
} 
filter { 
    csv { 
     separator => "," 
     columns => ["MessageCode","SourceGuid","DateTimeGenerated","Code1","Code2","Code3","Code4","LanguageCode", "AlarmSeverity", "Message", "Guid1", "Guid2", "Guid3", "Guid4", "MessageOrigin", "RequestId", "Bool1", "Bool2", "Bool3", "Bool4", "Bool5", "Bool6", "Bool7", "Bool8", "Code5", "Code6", "Bool9", "Bool10", "Bool11", "Code7"] 
    } 
} 
output { 
    elasticsearch { 
     action => "index" 
     hosts => "localhost" 
     index => "S2K" 
     workers => 1 
    } 
    stdout {} 
} 

我啓動logstash使用此命令行:

logstash.bat –f ..\conf\logstash.conf --verbose 

通常我查看通過進口到Elasticsearch的數據安慰。但是我這次得到的只是一句話,說「管道主要開始」,並保持這種狀態。

如何從logstash檢查數據是否已導入?我嘗試使用Elasticsearch運行:curl http://localhost:9200/_aliases

這通常會給出索引列表。但是我在這個配置中的索引(稱爲S2K)沒有列出。

我是新來的ELK,我該如何檢查logstash是否在做這件事?請注意,我正在使用Windows 7.

+0

可以看看這個https://discuss.elastic.co/t/logstash-not-reading-file-in-windows/41723 – baudsp

+0

我認爲這個問題可能是你已經用logstash讀取了這些文件,必須更改sincedb文件的路徑,該文件保存logstash已經讀取文件的位置cf https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html#plugins-inputs-file -sincedb_path – baudsp

回答

0

標準輸出Ruby調試是你的朋友在這裏。

這將輸出的一切畫面,所以你需要將屏幕輸出推到一個文件中(在底部示例代碼)

https://www.elastic.co/guide/en/logstash/current/plugins-outputs-stdout.html

輸出部分內善有善報.conf文件

output { stdout { codec => rubydebug } } 

這是如何運行conf並將屏幕輸出推送到另一個文件進行調試的示例。

logstash -r -f yourconfig.conf > debugfile.out 

只要改變yourconfig.conf和debugfile.out爲任何你想要的名稱和請記住完成調試時,從您的conf文件中刪除rubydebug編解碼器!

希望這有助於

+0

debugfile.out給我這個: {:timestamp =>「2016-10-17T09:54:33.091000-0400」,:message =>「管道主要啓動」} 但我如何知道數據是否已導入。我不應該在日誌本身中看到導入的數據嗎?我把rubydebug放在輸出 – Ray

+0

Ray中,根據baudsp對你的問題的評論,這裏發生的事情是這些文件已經被處理,因此沒有任何東西出現在屏幕上。爲了調試和重放數據,您可以定義sincedb位置。將它傳遞給/ dev/null將意味着每次再次啓動該進程時,所有數據都將被導入。如果可能的話,請將答案積分應用於baudsp,因爲他已經看到了您的問題的正確答案 –

+0

如果您對重新加載的數據感到高興(除非您計劃刪除索引,否則將創建模糊),那麼參數sincedb_path =>輸入過濾器中的「/ dev/null」將有所幫助。如果你想查看每個文件中的一個項目是否在索引中加載了一個名爲「path」的元素,該元素應該包含文件名,並且一個用於路徑和計數的快速kibana報告應該給你一個有多少條目被拉入的計數(提供的路徑不被分析!) –

0

您可以使用該行的編解碼器來改變的線是怎麼讀的字符集(默認爲UTF-8),而不必更改文件本身

+0

你是怎麼做到的?我不確定你的意思。 – Ray

+0

你可以在輸入過濾器中輸入codec => line {charset =>「xxxxx」} apol ogies,所有這些都是關閉的,所以我無法正確格式化。可用編解碼器的網址是https://www.elastic.co/guide/en/logstash/current/plugins-codecs-line.html –

+0

哇,該網頁上有很多可能的值。當我在Windows機器上的記事本中打開我的文件時,它告訴我的是它是一種Unicode編碼。我不確定從鏈接中選擇哪一個。很混亂。有沒有更簡單的方法來解決這個問題? – Ray