Loki配置

厚礼蝎發表於2024-07-28

Grafana Loki 配置引數 |Grafana Loki 文件

Loki 的配置檔案

  • YAML格式,預設為loki.yaml檔案
  • 可在啟動Loki server時由“-config.file”選項指定
  • 關鍵的配置欄位
    • server:指定監聽的地址、埠等
    • common:公共配置段
    • distributor:Distributor相關的配置
    • querier:Querier的配置段
    • query_range:配置Loki query-frontend上切分和快取查詢的方式
    • ruler:Ruler相關的配置
    • ingester:Ingester相關的配置
    • client_config:客戶端配置段
    • schema_config:Chunk索引方案及儲存位置
    • storage_config:儲存配置段
    • chunk_store_config:chunk的快取方式及存入物件儲存前的快取時長
    • memberlist:成員列表,至少應該存在一個成員
    • compactor:Compactor相關的配置
    • limits_config:全域性及租戶限額相關的配置
    • query_scheduler:查詢排程器配置

server部分

# Loki監聽的地址,也可以透過命令列選項“-server.http-listen-address”指定
[http_listen_address: <string> | default = ""]
# Loki Server 監聽的埠,也可透過命令列選項“-server.http-listen-port”指定
[http_listen_port: <int> | default = 3100]
# 最大併發連線數, 0表示不限制,也可透過命令列選項“-server.http-conn-limit”指定
[http_listen_conn_limit: <int> | default = 0]
# 日誌格式,僅支援logfmt和json兩種,命令列選項為“-log.format”
[log_format: <string> | default = "logfmt"]
#日誌級別,可用值有debug、info、warn和error,命令列選項為“-log.level”
[log_level: <string> | default = "info"]
# gRPC server監聽地地下,命令列選項為“-server.grpc-listen-address”
[grpc_listen_address: <string> | default = ""]
# gRPC server 監聽的埠,命令列選項為“-server.grpc-listen-port”
[grpc_listen_port: <int> | default = 9095]
# gRPC server的最大併發連線數,命令列選項為“-server.grpc-conn-limit”
[grpc_listen_conn_limit: <int> | default = 0]

common部分

# common配置段的可用引數
[path_prefix: <string> | default = ""] # Loki API path的路徑字首,例如“/loki”,預設為空
[replication_factor: <int>] # 複製因子
[compactor_address: <string> | default = ""] # compactor的訪問入口,通常要關聯至backend組之上,格式為http://host:port
[compactor_grpc_address: <string> | default = ""] # compactor的grpc入口
storage: # 儲存配置段,配置要使用的儲存後端,例如s3、gcs、azure、filesystem等儲存服務
  ...
  filesystem: # 使用filesystem儲存時的專用配置引數
    [chunks_directory: <string> | default = ""] # chunks檔案的儲存目錄
    [rules_directory: <string> | default = ""] # rules檔案的儲存目錄
ring:
  kvstore: # 配置使用的KV儲存,支援consul、etcd、inmemory、memberlist和multi幾種
    [store: <string> | default = "consul"]
    ...
    [tokens_file_path: <string> | default = ""] # token的儲存路徑
    [num_tokens: <int> | default = 128] # ring上的token的數量
    [replication_factor: <int> | default = 3] # 複製因子

ingester部分

# 配置生命週期管理器
lifecycler:
  ring:
    kvstore: # 配置使用的KV儲存,支援consul、etcd、inmemory、memberlist和multi幾種
      [store: <string> | default = "consul"]
      ...
    [replication_factor: <int> | default = 3] # ingester的複製因子
    [zone_awareness_enabled: <boolean> | default = false] # 是否在複製功能上啟動區域感知功能
    [join_after: <duration> | default = 0s] # 等待其它member加進來的時長
    [observe_period: <duration> | default = 0s] # 為解決衝突而等待token時長

[chunk_idle_period: <duration> | default = 30m] # 達到儲存上限前,未更新的chunk可儲存於記憶體中的時長
[chunk_retain_period: <duration> | default = 0s] # chunk被刷寫後,仍可駐留在記憶體中的時長
[chunk_block_size: <int> | default = 262144] # 未壓縮狀態的chunk儲存上限,單位是位元組
[chunk_target_size: <int> | default = 1572864] # 壓縮狀態的chunk儲存上限,單位是位元組
[max_chunk_age: <duration> | default = 2h] # chunk中可儲存的日誌時長跨度
[chunk_encoding: <string> | default = "gzip"] # chunk的壓縮演算法,支援none, gzip, lz4-64k, snappy, lz4-256k, lz4-1M, lz4, flate和zstd
[flush_op_timeout: <duration> | default = 10m] # 等待flush的超時時長
[concurrent_flushes: <int> | default = 32] # 可並行執行flush的chunk數量

[sync_period: <duration> | default = 1h] # 執行chunk同步的時長,這可能會觸發chunk滾動,但chunk空間利用率較低時,也可能不執行同步操作
[sync_min_utilization: <float> | default = 0.1] # 執行chunk同步時,其利用率的最低要求,低於該利用率的chunk不會執行同步操作

wal: # WAL (Write Ahead Log)機制,將接收到的日誌儲存於本地檔案系統,以支援能夠在程序崩潰時完成資料恢復
  [enabled: <boolean> | default = true]
  [dir: <string> | default = "wal"]

ruler部分

[enable_api: <boolean> | default = true] # 是否啟用ruler的API
evaluation:
  [mode: <string> | default = "local"] # ruler進行規則評估的模式,支援local和remote兩種
  query_frontend:
    [address: <string> | default = ""] # Query Frontend的地址,必須是一個DNS地址,形如“dns:///”

[rule_path: <string> | default = "/rules"] # 儲存臨時規則檔案的路徑
[alertmanager_url: <string> | default = ""] # AlertManager程序的地址

[enable_sharding: <boolean> | default = false] # 是否基於ring backend,將評估規則的操作分佈於多個ruler上執行
[sharding_algo: <string> | default = "by-group"] # 將rule和group進行切片的演算法,支援兩種取值by-rule和by-group

ring:
  kvstore: # 配置使用的KV儲存,支援consul、etcd、inmemory、memberlist和multi幾種
    [store: <string> | default = "consul"]
    ...

[enabled_tenants: <string> | default = ""] # 當前ruler例項可為哪些tenant進行rule評估,預設為所有

wal:
  [dir: <string> | default = "ruler-wal"] # 用於儲存各tenant的WAL檔案的目錄,每個tenant在該目錄下使用一個專用的子目錄
  [truncate_frequency: <duration> | default = 1h] # 執行WAL truncation的頻率
  [min_age: <duration> | default = 5m] # 樣本的最小存活時長,低於該時長的樣本不能執行truncate
  [max_age: <duration> | default = 4h] # 樣本的最大存活時長

remote_write: # 定義規則評估的結果樣本的儲存位置
  [enabled: <boolean> | default = false] # 是否啟用樣本的遠端儲存,若啟用,其目標地址應該是一個指標資料的時間序列儲存服務,例如Prometheus
  [clients: <map of string to RemoteWriteConfig>]

memberlist部分

[join_members: <list> | default = []] #叢集中的節點列表 可以是主機ip,也可以是主機+埠
[node_name: <string> | default = ""] # memberlist叢集的節點名稱列表
[randomize_node_name: <boolean> | default = true] # 是否為節點名稱新增隨機字尾
[bind_port: <int> | default = 7946] # gossip協議監聽的埠
[bind_addr: <list of strings> | default = []] # gossip協議監聽地IP地址,預設為0.0.0.0

[gossip_interval: <duration> | default = 200ms] # 傳送gossip的時間間隔
[gossip_to_dead_nodes_time: <duration> | default = 30s] # 向故障節點傳送gossip的時長
[dead_node_reclaim_time: <duration> | default = 0s] # 故障節點名稱可由一個新地址註冊使用的等待時長,0表示禁用
[left_ingesters_timeout: <duration> | default = 5m] # 將LEFT狀態的Ingester儲存在ring中的時長

limits_config部分

[ingestion_rate_mb: <float> | default = 4] # 每使用者每秒可抓取的日誌樣本的大小(平均速率),單位為MB
[ingestion_burst_size_mb: <float> | default = 6] #每使用者每秒可抓取的日誌樣本的峰值大小(峰值速率),單位為MB
[reject_old_samples: <boolean> | default = true] # 是否拒絕接收較舊的樣本
[reject_old_samples_max_age: <duration> | default = 1w] # 新舊樣本的時間間隔點,預設為1周前的即為舊樣本
[max_line_size: <int> | default = 256KB] # 樣本行大小的上限
[max_line_size_truncate: <boolean> | default = false] # 是否自動修剪超時樣本行上限的行
[max_streams_per_user: <int> | default = 0] # 每使用者可持有的日誌流數量上限
[per_stream_rate_limit: <int> | default = 3MB] # 每個日誌流每秒鐘的速率上限
[per_stream_rate_limit_burst: <int> | default = 15MB] # 每個日誌流的海秒鐘的峰值速率上限
[max_query_parallelism: <int> | default = 32] # 最大查詢併發數
[max_cache_freshness_per_query: <duration> | default = 10m] # 每租戶可快取的查詢結果時長上限
[max_entries_limit_per_query: <int> | default = 5000] # 每個查詢允許返回的日誌行數上限
[max_query_range: <duration> | default = 0s] # 基於時間範圍查詢時,所允許的時間範圍上限

querier部分

[query_store_only: <boolean> | default = false] # 是否只從儲存中進行查詢,而不查詢Ingester
[query_ingester_only: <boolean> | default = false] # 是否只從Ingester中查詢,而不查詢儲存
[query_ingesters_within: <duration> | default = 3h] # 發往Ingester的查詢的時長上限,即過去多長時間範圍內的查詢可發給Ingester
[per_request_limits_enabled: <boolean> | default = false]
[max_concurrent: <int> | default = 4] # querier支援的併發查詢數上限

frontend部分

# frontend配置段的可用配置引數
[log_queries_longer_than: <duration> | default = 0s] # 查詢執行時長超過多久時將被記入日誌,0表示禁用,負數表示記錄查詢
[compress_responses: <boolean> | default = true] # 是否壓縮HTTP響應報文
[max_outstanding_per_tenant: <int> | default = 2048] # 每個tenant可在每個frontend上支援的獨立請求數量上限

query_range部分

# query_range配置段的可用配置引數,用於配置query frontend切分和快取查詢的方式
[cache_results: <boolean> | default = false] # 是否可快取查詢結果
[max_retries: <int> | default = 5] # 每個查詢請求的最大重試次數
[parallelise_shardable_queries: <boolean> | default = true] # 是否可並行執行切片的查詢,僅chunk storage engine支援該功能
[cache_index_stats_results: <boolean> | default = true] # 是否快取索引統計的結果
[cache_instant_metric_results: <boolean> | default = false] # 是否快取即時向量的查詢結果
[instant_metric_query_split_align: <boolean> | default = false] # 是否合併切分的即時向量指標查詢結果
[cache_label_results: <boolean> | default = true] # 是否快取標籤查詢的結果

相關文章