ELK+Beats實現Windows服務器系統日志監控

ELK在運維監控領域使用非常廣泛,日志采集通常依靠Logstash,但是通常來講Logstash架構比較重載,一個安裝包由幾百MB,相比之下Elastic還提供另一種更輕量的采集工具Beats。Beats 平臺集合了多種單一用途數據采集器。這些采集器安裝后可用作輕量型代理,從成百上千或成千上萬臺機器向 Logstash 或 Elasticsearch 發送數據。本文簡要介紹一下使用Winlogbeat收集Windows日志,并用ES + Kibana檢索的配置方法。

步驟一:安裝Winlogbeat

  1. 下載Winlogbeat安裝包downloads page.
  2. 解壓到C:\Program Files.
  3. 重名名解壓文件winlogbeat-<version>目錄為Winlogbeat
  4. 打開PowerShell,以管理員身份運行(右鍵點擊Powershell并選擇以管理員身份運行)。如果你使用XP,可能需要自行下載安裝PowerShell
  5. 在PowerShell中運行如下命令安裝服務


    mark

在運行Winlogbeat前,還需要檢查一下配置文件中的選項,比如C:\Program Files\Winlogbeat\winlogbeat.yml,安裝包里提供一個完整的配置文件樣例winlogbeat.full.yml,更多資料請參考.

配置Winlogbeat

編輯winlogbeat.yml來修改配置,熟悉yaml語法的同學一定不會陌生,不熟悉的請自行熟悉。
舉例如下:

winlogbeat.event_logs:
  - name: Application
  - name: Security
  - name: System
 
output.elasticsearch:
  hosts:
    - localhost:9200
 
logging.to_files: true
logging.files:
  path: C:/ProgramData/winlogbeat/Logs
logging.level: info

步驟二:配置Winlogbeat

  1. 在event_logs章節,指定你要監控的event log類型,Winlogbeat默認監控application, security, and system這三種
winlogbeat.event_logs:
  - name: Application
  - name: Security
  - name: System

要查看全部類型,在PowerShell中運行Get-EventLog *,更多信息請參考event_logs.name.

  1. 如果需要把日志發送到Elasticsearch,這里把IP端口寫進去:
output.elasticsearch:
  hosts:
    - localhost:9200

如果要把日志寫到Logstash,請繼續往下看

  1. 修改完配置文件以后運行下面的命令測試一下:
PS C:\Program Files\Winlogbeat> .\winlogbeat.exe -c .\winlogbeat.yml -configtest -e

步驟三:配置Winlogbeat使用Logstash

如果你想把日志直接寫到Elasticsearch那么這一步可以跳過。

要將日志通過Logstash寫到ES,需要先配置Logstash的轉發規則,舉例如下:

input{
    beats{
        port=>5044type=>"wineventlog"
    }
}
output{
    stdout{
        
    }if[
        type
    ]=="wineventlog"{
        elasticsearch{
            hosts=>"100.100.16.231"index=>"winlogbeat-%{+yyyy.MM.dd}"
        }
    }else{
        elasticsearch{
            hosts=>"100.100.16.231"
        }
    }
}

配置好以后確保Logstash已經啟動且運行正常。接下來要配置Winlogbeat將日志發送到Logstash的5044端口

#----------------------------- Logstash output --------------------------------
output.logstash:
  hosts: ["127.0.0.1:5044"]

這里還需要額外做一個步驟,讓Elasticsearch加載索引模板,因為這里我們是用Logstash往ES上轉日志,所以必須手動加載索引模板,如果直接往ES發日志,這一步可以省略

步驟四:加載索引模板

在Elasticsearch里面,索引模板(Index templates)用來定義字段的設置和映射關系,推薦的Winlogbeat索引模板配置文件在Winlogbeat的安裝包里winlogbeat.yml,下面我們通過ES的API接口把模板推送過去,其實就是構造一個HTTP的PUT請求把數據發出去,工具和方法很多這里介紹兩種,

使用PowerShell

PS C:\Program Files\Winlogbeat> Invoke-WebRequest -Method Put -InFile winlogbeat.template.json -Uri  http://localhost:9200/_template/winlogbeat?pretty -ContentType application/json

使用Postman


mark

這里localhost:9200是Elasticsearch的監聽端口。另外刪除已有的索引模板執行如下命令:
curl -XDELETE 'http://localhost:9200/winlogbeat-*'

第五步:啟動Winlogbeat

用PowerShell啟動:

PS C:\Program Files\Winlogbeat> Start-Service winlogbeat

執行以后Winlogbeat就開始執行了,如果使用上面的配置文件,日志會輸出到C:\ProgramData\winlogbeat\Logs\winlogbeat。
我們可以通過Services management控制這個任務的狀態,啟動控制臺

PS C:\Program Files\Winlogbeat> services.msc

停止任務:

PS C:\Program Files\Winlogbeat> Stop-Service winlogbeat

步驟六:加載Kibana儀表盤樣例

為方便用戶監控收到的數據,官方還提供了一個Winlogbeat的Kibana儀表盤樣例,當然我們可以基于這個樣例自己定制儀表盤。


mark

導入儀表盤

Winlogbeat安裝包里有個scripts/import_dashboards程序,操作步驟非常簡單,打開PowerShell命名行,執行該程序:

PS > scripts\import_dashboards.exe

腳本默認假設你的Elasticsearch在127.0.0.1:9200,如果你的環境不在本地,可以執行下面的命令指定服務器位置:

PS > scripts\import_dashboards.exe -es http://192.168.33.60:9200

如果ES開啟了賬號密碼認證:

PS > scripts\import_dashboards.exe -es https://xyz.found.io -user user -pass password

查看儀表板

導入完成以后,用瀏覽器訪問Kibana頁面,如:http://127.0.0.1:5601.

在Discover 頁面,可以看到之前定義好的索引winlogbeat-*

同時,打開Dashboard頁面,可以選擇對應的儀表盤查看


mark

同時,打開Dashboard頁面,可以選擇對應的儀表盤查看


mark

原文地址:《ELK+Beats實現Windows服務器系統日志監控》

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容