iT邦幫忙

0

如何將 Windows Event Logs 推送到 Grafana Loki

  • 分享至 

  • xImage
  •  

上一篇已經教大家如何在 Ubuntu 22.04 安裝 Loki,今天就來談談如何透過 Promtail 日誌收集器將Windows Event Logs 推送到 Loki 並於 Grafana 進行可視化的展現吧。

我們可以把 Promtail 視為一種代理程式,負責傳送本地端的日誌到私有的 Loki 或者是 Grafana Cloud,並安裝在想要監控的應用程式的機器中。

主要負責的工作:

  • 發現目標,即日誌來源或者檔案
  • 將標籤附加到日誌串流
  • 將它們推送到 Loki 實例

安裝 Promtail

從 Loki 存儲庫下載最新的發行版本
https://github.com/grafana/loki/releases

https://github.com/grafana/loki/releases/download/v2.7.1/promtail-windows-amd64.exe.zip

將其解壓縮後放到想要的位置,我們以 C:\promtail 作為範例

在 C:\promtail 目錄底下新增 promtail-local-config.yaml 文件

我們透過 windows_events 區塊告訴 Promtail 如何抓取 Windows Event Logs 並將傳送它們到 Loki。

https://github.com/grafana/loki/blob/main/docs/sources/clients/promtail/scraping.md

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: "./positions.yaml"

clients:
  - url: http://your_loki_ip:3100/loki/api/v1/push
    
scrape_configs:
- job_name: windows
  windows_events:
    use_incoming_timestamp: false
    bookmark_path: "./bookmark.xml"
    eventlog_name: "Application"
    xpath_query: '*'
    labels:
      job: windows
  relabel_configs:
    - source_labels: ['computer']
      target_label: 'host'

書籤路徑 bookmark_path 負責記錄最後處理的事件,當 Promtail 重新啟動時需要它,以允許它從中斷的地方繼續讀取日誌。

<BookmarkList>
  <Bookmark Channel='Application' RecordId='23520' IsCurrent='true'/>
</BookmarkList> 

啟動服務

以系統管理員權限開啟命令提示字元,輸入下列指令啟動 Promtail。

cd C:\promtail
.\promtail-windows-amd64.exe --config.file=promtail-local-config.yaml

這樣便成功啟動 Promtail 並開始傳送 Application 事件紀錄到 Loki

此時回到 Grfana 使用 Loki 做為資料來源,透過 Explore 便可以看到推送過來的紀錄了。

點選 channel 與 job 標籤的屬性當作查詢條件,點選 Show Logs。

如果需要,您可以通過 Relabeling 重新標記預設的標籤。

如上面的範例我們將預設的 computer 標籤重新標記成 host

當 Promtail 接收到一個事件時,它將附加 channel 和 computer 標籤,並將事件序列化成 JSON 格式。

註冊服務

接下來要將剛剛的指令註冊成服務,讓它每次開機自動執行。

我們透過 nssm 安裝並啟動 Windows 服務

https://blog.miniasp.com/post/2021/09/15/Useful-tools-the-Non-Sucking-Service-Manager

Windows 內建的註冊 Windows 服務的工具 sc.exe 跟 New-Service 註冊服務後都無法正常運行。

下載並將 nssm.exe 解壓縮到 C:\promtail 底下

https://nssm.cc/release/nssm-2.24.zip

開啟命令提示字元,輸入下列指令

cd C:\promtail
nssm install "Promtail Agent"

Application Path 選擇 C:\promtail\promtail-windows-amd64.exe
Application Arguments 輸入 --config.file=promtail-local-config.yaml

最後按下 Install Servcie 即可註冊成 Windows 服務

需要注意的是可執行檔所在路徑為 C:\promtail\nssm.exe,如果 nssm.exe 被移動到其他位置服務將無法啟動。

或者請將 nssm.exe 擺在一個確定不會異動或刪除的路徑

Promtail Pipeline 日誌處理

各位看官應該有注意到使用官方提供的 Scrape Configs 實在太過陽春,所以接下來我們要介紹 Promtail Pipeline 日誌處理,Pipeline 用於轉換單行日誌、標籤與時間戳。

Pipeline 至少由一個 Stages 階段組成,而階段有 4 種類型:

  • 解析階段:解析當前日誌行並從中提取數據,然後提取的數據可供其他階段使用。
  • 轉換階段:換從先前階段提取的數據
  • 動作階段:從前面的階段提取數據並用它們做一些事情,例如添加現有標籤或修改到日誌行。
  • 過濾階段:可以根據某些條件選擇性地刪除資料

修改 promtail-local-config.yaml 文件,內容如下。

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: "./positions.yaml"

clients:
  - url: http://your_loki_ip:3100/loki/api/v1/push
    
scrape_configs:
- job_name: windows
  windows_events:
    eventlog_name: "Application"
    use_incoming_timestamp: true
    xpath_query: '*'
    bookmark_path: "./bookmark-application.xml"
    exclude_event_data: true
    exclude_user_data: true
    labels:
      logsource: windows-eventlog
  pipeline_stages:
  - json:
      expressions:
        source: source
        eventID: event_id
        level: levelText
  - labels:
      source:
      eventID:
      level:
- job_name: windows
  windows_events:
    eventlog_name: "System"
    use_incoming_timestamp: true
    xpath_query: '*'
    bookmark_path: "./bookmark-system.xml"
    exclude_event_data: true
    exclude_user_data: true
    labels:
      logsource: windows-eventlog
  pipeline_stages:
  - json:
      expressions:
        source: source
        eventID: event_id
        level: levelText
  - labels:
      source:
      eventID:
      level:

這邊我們多新增一個 Job 來推送系統日誌並使用了兩個階段來處理日誌

  • 轉換階段:使用 JOSN 剖析 Source、Event ID 與 Level 欄位
  • 動作階段:將剖析到的欄位分別貼上對應的標籤

再回到 Grfana 的 Explore 可以看到推送過來的日誌多了許多標籤可以讓我們進行過濾條件。

雖然 Explore 非常適合系統管理人員快速進行操作,但對於初次使用的用戶或在半夜收到告警的人來說,它也可能有點令人生畏。

下一篇我們將教大家如何擁有自己的儀表板,除了實作 Explore 的現有的功能,還可以簡單地透過預先設置的標籤進行搜索,以幫助一些團隊在故障排除時快速找到他們正在尋找的東西。

參考文件

  1. https://grafana.com/docs/loki/latest/clients/promtail/
  2. https://grafana.com/docs/loki/latest/clients/promtail/configuration/
  3. https://jishuin.proginn.com/p/763bfbd5863b
  4. https://mp.weixin.qq.com/s?biz=MzU4MjQ0MTU4Ng==&mid=2247492163&idx=1&sn=56b26aa387ccacdf0203d8897ba58eb6
  5. https://mp.weixin.qq.com/s?biz=MzU4MjQ0MTU4Ng==&mid=2247492144&idx=1&sn=a1cc13a6423fe50173856bfc898e8d77
  6. https://grafana.com/docs/loki/latest/clients/promtail/pipelines/
  7. https://grafana.com/docs/loki/latest/clients/promtail/stages/

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言