iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
DevOps

從零開始的 graylog 探險系列 第 10

Day 10: 索引 (Index) 管理與存儲優化

  • 分享至 

  • xImage
  •  

在 Graylog 中,索引管理是日誌數據組織與搜索效率的核心,而妥善的存儲優化則能避免磁碟迅速耗盡,提升系統穩定性。

索引集(Index Sets)與 Rotation / Retention

Graylog 數據最終寫入 OpenSearch 的索引中,一個索引集對應一組邏輯索引。索引集能設定索引的前綴名稱、分片數、複製數、輪轉策略及保留策略。

一般而言,索引不宜無限制增大。索引輪轉(Rotation)會根據條件創建新索引,常見條件 (舊版 Graylog) 包括:

  • 消息數量:當索引內消息數達到指定數量時輪轉(例如 10 萬條)
  • 索引大小:當索引磁碟大小達標時輪轉(例如 30GB)
  • 索引時間:定時輪轉,如每 1 天或 1 週產生新索引

這樣既可控制單個索引大小,也方便日後刪除舊索引釋放資源。


在 Graylog 6 中,索引管理已發生重大改變。傳統的基於消息數量、索引大小等輪轉策略已被棄用,取而代之的是 Data Tiering(數據分層) 策略,這是目前推薦且預設的索引管理方式。

Data Tiering 概念與架構

Data Tiering 將數據分為三個層級:Hot Tier(熱層)、Warm Tier(溫層)與 Archive(歸檔)。每個層級針對不同的存取頻率與成本需求:

  • Hot Tier:新索引的預設位置,提供最佳搜索性能,但運營成本較高
  • Warm Tier:適合存放不常搜索的歷史數據,搜索性能較低但成本更經濟
  • Archive:長期保存與合規需求的數據,壓縮儲存於本地檔案系統

此架構能根據數據生命週期自動管理存儲資源,既保持查詢效率又控制成本。

保留策略(Retention)

索引集還包含保留策略,決定舊索引如何處理:

  • 刪除(Delete):自動刪除超出設定數目的舊索引,最常用
  • 關閉(Close):保留但關閉索引以節省資源(不常見)
  • 不作為(No action):不進行任何處理(風險是硬碟爆滿)

通常選擇「刪除」來自動清理過舊的日誌,避免磁碟滿溢。

索引集(Index Sets)配置

Web UI 設定概覽

  1. 登入 Graylog 管理介面,導航至 System > Indices
  2. 選擇現有索引集點擊 Edit,或建立新索引集
  3. 在 Rotation and Retention 區段選擇 Data Tiering
  4. 設定關鍵參數:
    • Minimum days:數據在系統中的最短保留天數
    • Maximum days:數據的最長保留天數,超過後自動刪除
    • Enable warm tier:啟用溫層存儲(需 Enterprise 授權)
    • Hot tier days:數據在熱層中保留的天數

設定完成後,Graylog 會自動執行輪轉和保留管理。

REST API 簡約配置範例

使用 REST API 建立採用 Data Tiering 的索引集:

{
  "title": "production-logs",
  "index_prefix": "graylog_prod",
  "shards": 4,
  "replicas": 0,
  "use_legacy_rotation": false,
  "rotation_strategy_class": "org.graylog2.indexer.rotation.strategies.TimeBasedRotationStrategy",
  "rotation_strategy": {
    "type": "org.graylog2.indexer.rotation.strategies.TimeBasedRotationStrategyConfig",
    "rotation_period": "P1D"
  },
  "retention_strategy_class": "org.graylog2.indexer.retention.strategies.DeletionRetentionStrategy",
  "retention_strategy": {
    "max_number_of_indices": 30
  }
}

使用 curl 命令示範:

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Basic <base64-encoded-credentials>" \
  -d @index_set.json \
  https://<graylog-url>/api/system/indices/index_sets

其中 index_set.json 是包含索引集配置的 JSON 文件。

存儲優化策略

分片與副本配置

  • 小型環境:建議 4 分片、0 副本,降低資源消耗
  • 生產環境:可設置 1 個副本提升容錯能力,分片數可根據數據量調整

Warm Tier 配置(Enterprise 功能)

若具備 Enterprise 授權,可設定 Warm Tier 降低存儲成本:

  1. 設定存儲後端(Amazon S3 或本地共享存儲)
  2. 在 Data Node 配置檔中設定相關參數
  3. 重啟所有節點使配置生效
  4. 在索引集中啟用 Warm Tier 並設定熱層保留天數

監控與調優

  • 定期檢查磁碟使用率,確保保留策略有效運行
  • 監控 Warm Tier 的檔案快取使用率,維持在 70% 以下
  • 避免在搜索中過度依賴 Warm Tier 數據,以免影響查詢性能

總結

通過 Graylog 的索引集機制及 OpenSearch 原生輪轉與保留策略機制能有效管理日誌索引大小和數量,達到存儲空間的優化與系統性能的平衡。


上一篇
Day 9: 數據解析與字段提取 (Pipelines 篇)
系列文
從零開始的 graylog 探險10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言