首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0069. GrayLog 空間配置、自定義查詢欄位

日期:2024年 07月 06日

標籤: C# GrayLog SignalR Linux Ubuntu Asp.net Core Web MVC

摘要:C# 學習筆記


應用所需:1. 一台已架設好的 GrayLog Server 可參考此篇
解決問題:限制 GrayLog 使用磁碟空間 & 自定義想顯示的欄位
範例檔案:範例檔案
基本介紹:本篇分為三大部分。
第一部分:GrayLog 確認空間 & 刪除占用索引
第二部分:GrayLog 索引策略配置
第三部分:GrayLog 自定義欄位






第一部分:GrayLog 確認空間 & 刪除占用索引

Step 1:前言 - 硬碟空間不足

使用 GrayLog 如果在硬碟空間小的環境上,若沒有對 GrayLog 做空間配置設定
實務上 50G 的小硬碟空間,再過不久空間滿了,會造成 Server 異常:

df -h



Step 2:如何定位是 GrayLog - 查詢Port - 1

可進入遠端機器,此目錄下,開啟 elasticsearch.yml :

/etc/elasticsearch/



Step 3:如何定位是 GrayLog - 查詢Port - 2

開啟 elasticsearch.yml,可以確認 Port 號的地方,若是預設的會為 9200
※ # 表示未設定預設就是用 9200

Step 4:如何定位是 GrayLog - 查詢占用空間

可進入 GrayLog Server 輸入指令查詢

curl -X GET "localhost:9200/_cat/indices?v"


對於 50G 的小機器,佔了大量的硬碟空間,並且是 graylog_4 索引集佔了大量空間

Step 5:如何定位是 GrayLog - 刪除索引

以 graylog_4 為例,輸入以下指令,可以直接對其刪除:
※需確保 Log 不需要才移除,此為真實刪除

curl -X DELETE "localhost:9200/graylog_4"


對於 50G 的小機器,佔了大量的硬碟空間,並且是 graylog_4 索引集佔了大量空間

Step 6:完成

刪除後,再次輸入指令查看硬碟空間,可以發現空間釋放 40%

df -h



第二部分:GrayLog 索引策略配置

Step 1:索引策略配置 - 進入索引頁

進入 GrayLog WebUI 介面 -> System -> Indices

Step 2:索引策略配置 - 占用比例

如圖
1. 目前有三種 Log 的索引建立,可以發現 99% 都在某個 預設索引(Log資料集合)
2. 選擇 Edit 調整

sudo systemctl status elasticsearch

Step 3:索引策略配置 - 策略介面

Select rotation strategy 的下拉式選單有提供 4 種

策略名稱 策略名稱 用法簡述
Index Message Count 索引訊息計數策略 以消息數量(Log數量)控制索引大小
Index Size 索引大小策略 以硬碟空間配置控制索引大小
Index Time 索引時間策略 以時間頻率控制索引替換(EX: 一周一次)
Index Time Size Optimizing 索引時間大小優化策略 結合 Index Size 與 Index Time 其中一個達到即替換


其中 Select retention strategy 只有 3 種設定 => 刪除、關閉、不做事
這篇是以硬碟空間考量因此只做刪除 (Delete Index)



Step 4:索引策略配置 - 索引訊息計數策略

設定 Max documents = 200,000,000 時,且 Max number of indices = 5
表示:每觸發一次會保存 1 個索引,當建立到第 6 個時會移除第 1 個索引

策略名稱 意思
Max size per index (in bytes) 每個索引使用空間數,以 2147,483,648 為 2GB
Max number of indices 最大保存數



Step 5:索引策略配置 - 索引大小策略

設定 Max documents = 2GB 時,且 Max number of indices = 5
表示:每觸發一次空間占用 2GB 會保存 1 個索引,當建立到第 6 個時會移除第 1 個索引
※簡言之最多用 10G 空間

策略名稱 意思
Max documents 設定資料筆數,當達到指定數時觸發 Delete Index
Max number of indices 最大保存數



Step 6:索引策略配置 - 索引時間策略

設定 Rotation period (ISO8601 Duration) = P1D 時,且 Max number of indices = 5
表示:每天都會建立 1 個索引,當建立到第 6 個時會移除第 1 個索引
※簡言之最多保存 5 天資料 ( P1D x 5 )

策略名稱 意思
Rotation period (ISO8601 Duration) 天數, P1D 表示每天都會建立一個索引
Empty index set 是否即使沒有該週期沒有資料也建立索引
Max number of indices 最大保存數



Step 7:索引策略配置 - 索引時間大小優化策略

設定 Lifetime in days = 30 , 40 時,此策略分片為 20G ~ 50G 如果空間占用超過會自動將最早天的資料移除
表示:保存至少 30 天資料,最多 40 天,如果沒超過 50G 那第 41 天 會刪除第 30 天的資料
如果超過 50G 即使沒有超過 40 天,也會刪除最早的資料

策略名稱 意思
Lifetime in days 最小天、最大天值



Step 8:索引策略配置 - 空間優化範例

這邊選擇配置 : Index Size 索引大小策略,未來可以確保空間占用率不會超過 10 G

第三部分:GrayLog 自定義欄位

Step 1:GrayLog - 預設介面

GrayLog Search 頁面預設欄位只有 2 個 Message、Source ,其實可以在傳送 Log 時增加自定義的 Tag

Step 2:GrayLog - 預設介面

以範例檔案舉例,在 appsettings.json 增加以下:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "Graylog": {
    "Host": "192.168.1.100",
    "Port": 12201,
    "Application": "GrayLogSendLogExample" //增加這個
  },
  "AllowedHosts": "*"
}


我們定義了 Tag => “Application”: “GrayLogSendLogExample”

Step 3:GrayLog - 初始化配置

並且在 Asp.net Core 的初始化配置中,增加以下:

.Enrich.WithProperty("application", builder.Configuration.GetValue<string>("Graylog:Application", string.Empty))


使用此配置

Step 4:GrayLog - WebUi 配置 - 1

進入 Search 版面後,點擊右側黑框地方

Step 5:GrayLog - WebUi 配置 -2

會展開可設定的 Tag 所有項目
1. 選擇 application
2. 更新

Step 6:GrayLog - WebUi 配置 - 顯示成功

可以看到 application 出現在下方,我們自定義完成

Step 7:GrayLog - 保存配置

因為每次進入都會要重新設定很麻煩,這時可以在右邊的 Save 點擊,並且輸入名稱保存此配置

Step 8:GrayLog - 便捷載入

未來進入 Search 頁面時,從右邊的 Load 點擊後,就會出現剛剛保存的配置