Grafana Loki 是一個輕量的 log 收集服務。
Loki 的標語 Like Prometheus,But For Logs
說明著這個服務靈感來自 Prometheus。跟其他的 log 收集服務比較下,Loki 有以下特性:
- 不對 log 進行全文索引。介由存儲壓縮的非結構化 log 和僅索引 metadata,Loki 操作更簡易而且執行成本更低
- 使用的相同於 Prometheus 的標籤對 logs 進行索引和分組,讓您能夠用相同標籤在 metrics 和 logs 之間無縫切換
- 有 Grafana 原生支援
Loki 的運作結構
- Loki:本身負責儲存 log,並且處理查詢請求
- agent:負責收集 log,並推送給 Loki。
Promtail
agent 是 Grafana 團隊專門設計給 Loki 使用的 agent。- 當然 Loki 還支援 Logstash, Fluentd 等其他 agent
- Grafana:提供查詢的使用者介面。Grafana 的好用就不需要多介紹了。
開始使用 Loki
Grafana 官方有提供 docker-compose.yml 可以直接用他來測試
收集 log file
|
|
- 啟動 docker-compose
- 打開 grafana http://localhost:3000
- 增加 data source
Loki
,設定 URLhttp://loki:3100
- 打開 Explore,data source 選擇 Loki,就可以依照 label 查詢 log
收集 docker logs
Loki 有提供 Docker Driver Client 的 Docker plugin,可以直接讀取 container 的 log
安裝 plugin
|
|
檢查安裝的 plugins
|
|
修改 docker-compose.yml
針對要收集 log 的 container 加上 logging
的設定
|
|
- 打開 grafana http://localhost:3000
- 你可以在 Explore 看到多了
grafana
相關的 Labels