iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0

今天,我們將深入探討 Loki 的設定檔,了解各個關鍵參數的意義以及如何調整它們以符合不同規模的生產環境需求。

Loki 設定檔結構概覽

Loki 的設定檔(通常是 loki-config.yaml)主要由以下幾個部分組成:

  • server: 設定 Loki 服務本身,如監聽的 Port。
  • common: 通用設定,特別是儲存後端的配置(如 S3、GCS 或本地文件系統)。
  • schema_config: 定義日誌的儲存模式和索引策略,是效能優化的核心。
  • limits_config: 設定各種限制,防止單一租戶或查詢消耗過多資源。
  • ingester & querier: 分別對寫入和讀取路徑進行細部調整。
  • ruler: 用於告警規則的評估。

關鍵設定區塊詳解

1. server - 服務配置

這是最基本的配置,定義了 Loki 如何運行。

server:
  http_listen_port: 3100
  grpc_listen_port: 9095
  log_level: info
  • http_listen_port: Loki API 的主要 Port,用於接收日誌、處理查詢。
  • grpc_listen_port: gRPC Port,用於 Loki 元件之間的內部通訊。
  • log_level: Loki 自身的日誌級別,可設為 debug, info, warn, error

2. common - 儲存後端

這裡定義了日誌和索引的最終儲存位置。生產環境強烈建議使用物件儲存。

common:
  storage:
    s3:
      endpoint: s3.ap-northeast-1.amazonaws.com
      region: ap-northeast-1
      bucketnames: my-loki-logs-bucket
      # 建議使用 IAM Role,而非寫死 Access Key
  replication_factor: 3 # 在 Loki 叢集中,資料會被複製的份數
  • storage: 可以選擇 s3, gcs, azurefilesystem(本地文件系統,僅建議測試用)。
  • replication_factor: 在叢集模式下,確保資料的高可用性。

3. schema_config - 儲存模式與索引

這是影響 Loki 效能和成本最重要的部分。它定義了日誌如何被索引和分塊。

schema_config:
  configs:
    - from: 2024-01-01
      store: tsdb
      object_store: s3
      schema: v12
      index:
        prefix: index_
        period: 24h
  • from: 此設定生效的起始日期。你可以隨著時間演進更新你的 schema。
  • store: 索引的儲存格式。tsdb 是目前推薦的預設值,效能更佳。
  • schema: Loki 的 schema 版本,v11v12 是常見選擇。
  • index.period: 每個索引檔案涵蓋的時間範圍。24h 表示每天建立一個新的索引檔案。這個值越小,索引越快,但檔案也越多。

4. limits_config - 資源限制

此區塊是保護 Loki 穩定運行的關鍵,避免被惡意或錯誤的查詢拖垮。

limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h # 拒收一週前的日誌
  max_query_series: 10000 # 單一查詢最多能回傳的 series 數量
  ingestion_rate_mb: 50 # 每秒每個租戶最大寫入速率 (MB/s)
  ingestion_burst_size_mb: 100 # 瞬間寫入的峰值容許量
  per_stream_rate_limit: 10MB # 單一 stream 的寫入速率限制
  • reject_old_samples_max_age: 避免過舊的日誌寫入,這通常是客戶端配置錯誤的信號。
  • max_query_series: 限制查詢的複雜度,防止 "Query of Death"。
  • ingestion_rate_mb: 控制寫入流量,保護後端儲存。

總結

Loki 的設定檔提供了極大的靈活性,但也帶來了複雜性。理解以上幾個關鍵區塊的意義,可以幫助你:

  • 優化效能: 透過調整 schema_configlimits_config
  • 控制成本: 特別是物件儲存的費用,可以透過 retention 策略(未在範例中詳述)和 schema 設計來管理。
  • 提升穩定性: limits_config 是保護系統不被濫用的重要防線。

上一篇
Day20 - 進階監控技巧與最佳實踐
下一篇
Day22 - Loki 進階功能:Ruler 告警、儲存策略與多租戶
系列文
Vibe Coding 後的挑戰:Locust x Loki 負載及監控26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言