Windows搭建Log4Net+FileBeat+ELK日志分析系統過程


 

參考博客:http://udn.yyuap.com/thread-54591-1-1.html ; https://www.cnblogs.com/yanbinliu/p/6208626.html ; http://blog.csdn.net/wyqlxy/article/details/52622867
 
在互聯網項目中,良好的日志監控和分析能保障業務穩定運行,不過一般情況下日志都分散在各個生產服務器,且開發人員無法登陸生產服務器,這時候就需要一個集中式的日志收集裝置,對日志中的關鍵字進行監控,觸發異常時進行報警,協助開發人員查看相關日志。

 

ELK 就是實現這種功能的一套系統,它是elasticsearch,logstash以及kibana的簡稱。最近打算將其用來管理數據平台產生的各種日志,這里記錄一下在測試環境中搭建的步驟以及遇到的問題。
大體框架:
日志數據流如下,應用將日志落地在本地文件,部署在每台服務器上的FileBeat負責收集日志,然后將日志發送給LogStash;LogStash將日志進行處理之后;然后將處理后的Json對象傳遞給ElasticSearch,進行落地並進行索引處理;最后通過Kibana來提供web界面,來查看日志等。因為ES是基於Lucene的,所以Kibana支持Lucene查詢語法。
image_1b4g890586hv1ag91ks3abv1i62m.png-24.8kB
對於日志數據流特別大的情況,LogStash會造成擁堵,這個時候可以使用消息隊列來進行緩沖。同時,日志一旦進過LogStash之后,會不方面一些流處理程序來讀取。這個時候使用kafka就比較好了,因為kafka是將消息持久化在本地,流處理應用可以從消息的offset初始的地方來讀取。加入kafka的后的流程如下:
image_1b4g8qjmjegcnf614pqe61kbf13.png-33.1kB

 

安裝流程:
1.軟件版本

logstash版本:1.5.4(因不支持beats輸入插件,故棄用),2.2.1(目前使用版本)

elasticsearch版本:1.7.1

kinaba版本:4.1.1

filebeat版本:5.5.1

java版本:jdk-8u152

2.安裝步驟

步驟一、下載Java組件並安裝

下載最新版本的jdk,解壓縮雙擊安裝。注:請務必使用java8以上的版本,否則ELK不能正常使用。

步驟二、添加JAVA_HOME 環境變量

右鍵“這台電腦“-〉屬性-〉高級系統設置-〉環境變量,在系統變量里新建JAVA_HOME,值為C:\Java\jdk1.8.0_152,如下圖所示

步驟三、安裝配置nginx,為kibana配置反向代理

首先從網址 http://nginx.org/download/nginx-1.9.4.zip 下載nginx.
解壓nginx-1.9.4.zip到f:\elk,目錄更名為nginx.
修改f:\elk\nginx\conf\nginx.conf文件,增加如下內容
server{
        listen       80;
        server_name  localhost;
        location / {
       proxy_set_header Host $host;
        proxy_pass http://localhost:5601;
        }
這樣做解決了5601端口被防火牆屏蔽,導致外部用戶訪問不了的問題。

步驟四、安裝elasticsearch

解壓elasticsearch-1.7.1.zip壓縮包到F:\elk\elasticsearch地址下

打開命令行,輸入如下命令
Pushd f:\elk\elasticsearch\bin\
Service install 
產生如下輸出
然后輸入
service manager
出現如下界面
修改“Startup type “ ,從Manual到Automatic。
然后點擊”Start“, elasticsearch將立即開始運行。
在瀏覽器中輸入 http://localhost:9200,出現如下界面,表明elasticsearch安裝成功。

步驟五、安裝head插件

解壓elasticsearch-head-master.zip壓縮包內容到elasticsearch\plugins文件夾下,修改elasticsearch-head-master名稱為head,在瀏覽器中輸入http://localhost:9200/_plugin/head/即可查看Elasticsearch中數據

 

 

步驟六、安裝logstash

解壓logstash-2.2.1.zip壓縮包到F:\elk\logstash地址下

在f:\elk\logstash\bin里新建Logstash.conf
內容如下

input {
beats {
port => "5544"
codec => json {
charset => "UTF-8"
}
}
}
filter {
if [type] == "info" {
grok {
match => {
"message" => "(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\s+\[(?<thread>.*)\]\s+(?<level>\w*)\s+(?<class>\S*)\s+\[(?<method>\S*)\]\s+\: (?<message>.*)\s*"
}
overwrite => ["message"]
}
}
if [type] == "error"{
grok {
match => {
"message" => "(?<datetime>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2},\d{3})\s+\[(?<thread>.*)\]\s+(?<level>\w*)\s+(?<class>\S*)\s+\[(?<method>\S*)\]\s+\- (?<message>.*)\s*"
}
overwrite => ["message"]
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "test-%{+YYYY-MM}"
}
stdout { codec => rubydebug }
}

 

步驟七、新建Logstash 啟動批處理文件
在文件夾f:\elk\logstash\bin下新建run.bat 文件
文件內容如下
logstash.bat agent -f logstash.conf
增加這個批處理的目的是為了解決在windows環境下logstash運行一段時間就會掛起的問題。
 
步驟八、 Logstash 安裝成windows 服務
首先從網址 https://nssm.cc/release/nssm-2.24.zip 下載nssm
解壓nssm-2.24.zip, 然后從解壓目錄中拷貝nssm-2.24\win64\nssm.exe f:\elk\logstash\bin 里,然后在命令行里輸入
Pushd f:\elk\logstash\bin
接着執行
Nssm install logstash
出現安裝界面
 
請填寫如下信息:
Path: f:\elk\logstash\bin\run.bat
Startup directory: f:\elk\logstash\bin
界面如下:

點擊"Details" 頁簽,填寫如下內容
Display name logstash
Startup type Automatic
界面如下:

接下來點擊"Dependencies" 頁簽,填寫如下信息
This service depends on the followingsystem components: elasticsearch-service-x86
界面如下:


添加依賴的原因是,logstash 的輸出配置的是Elasticsearch ,如果Elasticsearch 沒有啟動,logstash 無法正常工作。
最后單擊install service 按鈕,執行安裝過程,出現如下界面,表示服務已經安裝成功。

 

步驟九、將Kibana 安裝成windows 服務
將步驟八下載的nssm 拷貝到文件夾f:\elk\kibana\bin 下。
然后在命令行里輸入
Pushd f:\elk\kibana\bin
接着執行
Nssm install kibana
出現安裝界面
請填寫如下信息:
Path: f:\elk\kibana\bin\kibana.bat
Startup directory: f:\elk\kibana\bin

界面如下:

類似步驟八
點擊"Details" 頁簽,填寫如下內容
Display name kibana
Startup type Automatic
界面如下:

接下來點擊"Dependencies" 頁簽,填寫如下信息
This service depends on the followingsystem components:
elasticsearch-service-x86
logstash
界面如下:


最后單擊install service 按鈕,執行安裝過程,出現如下界面,表示服務已經安裝成功。

你可以在"f:\elk\kibana\config\kibana.yml" 中修改kibana 的運行端口。

 

 步驟十、安裝FileBeat

(一)、安裝

1.將文件夾中filebeat-5.5.1-winsows-x86_64.zip壓縮包(也可自行下載)解壓到C:\filebeat文件夾

2.以管理員身份運行PowerShell(此處不要用cmd.exe),在控制台中輸入以下命令安裝

CD C:\filebeat

.\install-service-filebeat.ps1

3.安裝過程中會出現以上錯誤,此時需更改執行策略,語句如下

Set-executionpolicy RemoteSigned

選擇:y  執行完后重新執行安裝命令

.\install-service-filebeat.ps1

至此安裝成功,此時可看到filebeat服務為關閉狀態

4.在開始菜單-運行輸入Services.msc打開本地服務操作欄,找到filebeat.exe,啟動服務

 

(二)、配置

1.打開C:\filebeat文件夾,找到filebeat.yml配置文件,打開

2.將以下內容替換到配置文件中,根據需要更改配置內容(注意,由於文件為yml格式,所以同一模塊中的行列需對齊,否則無法讀取該配置文件)

 

(三)、數據查看

重新啟動服務,往配置文件所在的日志目錄中插入數據,打開http://localhost:9200/_plugin/head/http://localhost:5601即可查看新增的日志數據

 

附:

測試數據(2017120713.TXT)

2017-12-07 13:00:24,330 [service_FlightInfoDeptDateCalculater0] INFO DispatchAssist.ACARSMonitorNew.FlightInfoDeptDateCalculater [Save] : 共有22條數據需要更新
2017-12-07 13:00:25,220 [service_ACARSMonitorNew0] INFO DispatchAssist.ACARSMonitorNew.ACARSParser [ACARSReportMatches] : M11開始解析............. QU SHAITMU
.BJSXCXA 070500
M11
FI MU2412/AN B-1018
DT BJS LHW 070500 M42A
- POS
CAS 288,LAT N 38.388,LON E105.944,ALT 25580,FOB 15960,UTC 050023
2017-12-07 13:30:41,718 [service_ACARSMonitorNew0] INFO Ceair.Operations.WindowsServiceClient.Program [SingleThreadTask] : 下次執行時間:2017-12-07 13:30:41
2017-12-07 13:30:41,718 [service_ACARSMonitorNew0] INFO Ceair.Operations.WindowsServiceClient.Program [SingleThreadTask] : Sleep:30000

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM