iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
Elastic Stack on Cloud

ES 新手,破門而入!!!系列 第 12

【ES新手,破門而入!】Day12 - 深入 Logs 之趴特B

  • 分享至 

  • xImage
  •  

你可以學到?

今天將學到透過 Filebeat 傳送 Log 的資料到 Elastic cloud,並且深入了解各個細節部分。

本篇的主題包含有:

  1. 運送日誌資料

那我們就開始吧!

動手實作 EP8:運送日誌資料

Filebeat 結構

這一部分的實作,我們將可以學到:

  • 使用 Filebeat 將日誌資料送入 Elasticsearch
  1. 先來修改 filebeat.yml 檔案來設置 Filebeat 啟動 log 輸入,位置則是先準備好的 /home/elastic/datasets/nginx.log
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /home/elastic/datasets/nginx.log

  1. 修改完後,測試一下設置沒有問題,可以看到各種 OK 的訊息:
./filebeat test config
./filebeat test output

  1. 接著啟動 Filebeat(細心的你一定會發現這邊怎麼沒有 modules enable 呢?別著急,下一階段就知道為什麼了!):
./filebeat -e
  1. 再來我們回到 Kibana 的 Discover 下,過濾只有 filebeat-* 的部分,可以看到如下面的日誌紀錄:

如果你去看左邊 message 欄位的部分,會發現內容並沒有解析出來,這是因為 Filebeat 並不知道哪一部分是屬於 NGINX 的日誌事件,原因很簡單,就是我們沒有啟用 NGINX 的 module 呀~

Modules

這一部分的實作,我們將可以學到:

  • 如何啟動和關閉 module
  • 如何改變 module 的設定和在 Kibana 查看 module 的輸出
  1. Ctrl+C 關掉上一部分開啟的 Filebeat,然後來看看 modules.d 資料夾下面都有些什麼東西吧,可以看到 modules 有支援許多常見的應用程式如 nginx、redis、mongodb...等等。
ls -l modules.d

  1. 來更仔細地看一下 nginx 的 module,可以看到有兩個種類的日誌: accesserror
cat modules.d/nginx.yml.disabled

  1. 接著來編輯剛才查看的 nginx.yml.disabled 檔案,這次實作要使用的日誌位置是在 /var/log/nginx/ 下面:
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]

  1. 再來啟動 nginx 的 module,並且看看啟用後的變化:
# 啟動 nginx module
./filebeat modules enable nginx
# 列出目前所有 modules
./filebeat modules list

  1. ls 比較一下,可以看到啟用後,檔名也改變了!
ls -l modules.d

  1. 再重新開啟 Filebeat 前,我們先再來看看 module/nginx 下面有什麼東西,可以看到有兩個種類日誌的資料夾以及 module.yml 的檔案:

  1. module.yml 檔案內容,描述 Filebeat 讀取的 Kibana 儀表板(dashboard)是使用什麼樣的。

  1. 再來看看 access 這個資料夾下面有什麼,更進一層看 config 下的 nginx-access.yml 檔案,可以看到有四個部分:
  • type: 定義 log 的種類
  • paths: 從預定義的位置拉出 scripts 的路徑
  • exclude_files: 排除的檔案
  • processors: 在傳送前過濾和增強資料的處理器

  1. error 下的資料夾也和 access 有相同的結構:

  1. 都深入研究完後,就來啟動 Filebeat 然後再到 Kibana Discover 下面看看吧!
# 啟動 Filebeat
./filebeat -e

Resilience

這一部分的實作,我們將可以學到:

  • Filebeat 的彈性和一些除錯的選項
  1. Ctrl+C 關掉上一部分開啟的 Filebeat,然後到 Kibana Dev Tools 刪掉 Filebeat 的索引:
DELETE filebeat-7.6.2-*

  1. 接著啟動 Filebeat 後,再用下面搜索的查詢看看,你會發現跳出錯誤,找不到任何東西,為什麼呢?這是因為 Filebeat 會追蹤註冊檔案中已經讀取的內容。由於 /home/elastic/datasets/nginx.log 記錄在此註冊檔案中,因此即使您刪除了索引資料,也不會再次將其重新讀取。
GET filebeat-7.6.2/_search
{
  "query": {
    "match": {
      "log.file.path": "/home/elastic/datasets/nginx.log"
    }
  }
}

  1. 那該怎麼辦呢?很簡單,刪掉 registry 下對應的描述檔案就好:
rm data/registry/filebeat/data.json

  1. 這時候再重新回去 Dev Tools 執行一次搜索查詢,就可以找到東西啦!

  1. 在結束之前,這邊額外提一個,如果想要讓 Filebeat 產生出來的訊息有更多資訊方便除錯的話,可以在 filebeat.yml 的檔案中, logging 的那一部分,做對應的修改,例如說可以加入下面的描述:
logging.level: debug
logging.to_files: true
logging.selectors: ["*"]

今日心得與短結

呼~結束 深入 Logs 的篇章了,其實裡面還有更多細節,但是覺得過於細節跟進階,相信目前的這些內容,要破門而入的話,應該是很夠了!(再破下去我怕連牆都要穿了ㄎㄎ)

今天我們更深入操作了 Filebeat,了解了其架構、Module 和 Resilience,明天我們要換到另一個重要的資料:Metrics,指摽了!


上一篇
【ES新手,破門而入!】Day11 - 深入 Logs 之趴特A
下一篇
【ES新手,破門而入!】Day13 - 關於 Metrics 的 23456 事
系列文
ES 新手,破門而入!!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言