分享程式代碼相關筆記
目前文章總數:157 篇
最後更新:2024年 12月 07日
使用 GrayLog 如果在硬碟空間小的環境上,若沒有對 GrayLog 做空間配置設定
實務上 50G 的小硬碟空間,再過不久空間滿了,會造成 Server 異常:
df -h
可進入遠端機器,此目錄下,開啟 elasticsearch.yml :
/etc/elasticsearch/
開啟 elasticsearch.yml,可以確認 Port 號的地方,若是預設的會為 9200
※ # 表示未設定預設就是用 9200
可進入 GrayLog Server 輸入指令查詢
curl -X GET "localhost:9200/_cat/indices?v"
對於 50G 的小機器,佔了大量的硬碟空間,並且是 graylog_4 索引集佔了大量空間
以 graylog_4 為例,輸入以下指令,可以直接對其刪除:
※需確保 Log 不需要才移除,此為真實刪除
curl -X DELETE "localhost:9200/graylog_4"
對於 50G 的小機器,佔了大量的硬碟空間,並且是 graylog_4 索引集佔了大量空間
刪除後,再次輸入指令查看硬碟空間,可以發現空間釋放 40%
df -h
進入 GrayLog WebUI 介面 -> System -> Indices
如圖
1. 目前有三種 Log 的索引建立,可以發現 99% 都在某個 預設索引(Log資料集合)
2. 選擇 Edit 調整
sudo systemctl status elasticsearch
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)
設定 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 | 最大保存數 |
設定 Max documents = 2GB 時,且 Max number of indices = 5
表示:每觸發一次空間占用 2GB 會保存 1 個索引,當建立到第 6 個時會移除第 1 個索引
※簡言之最多用 10G 空間
策略名稱 | 意思 |
---|---|
Max documents | 設定資料筆數,當達到指定數時觸發 Delete Index |
Max number of indices | 最大保存數 |
設定 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 | 最大保存數 |
設定 Lifetime in days = 30 , 40 時,此策略分片為 20G ~ 50G 如果空間占用超過會自動將最早天的資料移除
表示:保存至少 30 天資料,最多 40 天,如果沒超過 50G 那第 41 天 會刪除第 30 天的資料
如果超過 50G 即使沒有超過 40 天,也會刪除最早的資料
策略名稱 | 意思 |
---|---|
Lifetime in days | 最小天、最大天值 |
這邊選擇配置 : Index Size 索引大小策略,未來可以確保空間占用率不會超過 10 G
GrayLog Search 頁面預設欄位只有 2 個 Message、Source ,其實可以在傳送 Log 時增加自定義的 Tag
以範例檔案舉例,在 appsettings.json 增加以下:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"Graylog": {
"Host": "192.168.1.100",
"Port": 12201,
"Application": "GrayLogSendLogExample" //增加這個
},
"AllowedHosts": "*"
}
我們定義了 Tag => “Application”: “GrayLogSendLogExample”
並且在 Asp.net Core 的初始化配置中,增加以下:
.Enrich.WithProperty("application", builder.Configuration.GetValue<string>("Graylog:Application", string.Empty))
使用此配置
進入 Search 版面後,點擊右側黑框地方
會展開可設定的 Tag 所有項目
1. 選擇 application
2. 更新
可以看到 application 出現在下方,我們自定義完成
因為每次進入都會要重新設定很麻煩,這時可以在右邊的 Save 點擊,並且輸入名稱保存此配置
未來進入 Search 頁面時,從右邊的 Load 點擊後,就會出現剛剛保存的配置