構建在 ClickHouse 之上的 Loki - cLoki

cLoki 是一個構建在 ClickHouse 之上的比較靈活的 Loki 兼容 LogQL API。

Loki API 及其 Grafana 原生集成非常出色、簡單易用 - 但我們更喜歡 ClickHouse

cLoki 實現了一個完整的 LogQL API,該 API 由位於 ClickHouse 表之上的快速批量 LUR 緩存,並依靠其列式搜索和插入性能以及存儲數據的可靠分佈和集羣功能。就像 Loki 一樣,cLoki 不會解析或索引傳入的日誌,而是使用與 Prometheus 相同的標籤系統對日誌流進行分組。

特性

🔥 支持 LogQL

cLoki 實現了 LogQL 查詢,以提供與 Loki API 的兼容。Grafana Loki 數據源可用於本地查詢日誌和顯示提取的時間序列,不需要額外的插件。

⛽日誌流

cLoki 支持通過使用 JSON 或 Protobuf 的 Push API 輸入,它與 Promtail 和任何其他 Loki 代理兼容。除此之外,cLoki 還可以接受和轉換使用 Influx、Elastic、Tempo 和其他常見的 API 格式的日誌和指標插入。

我們解析和發送日誌流到 cLoki 的首選工具是 paStash,它具有廣泛的插值能力,可以創建標籤和修剪任何日誌,在處理指標時,建議發送 JSON 格式的日誌。

支持 Tempo

cLoki Pulse 爲 Grafana Tempo API 提供實驗性支持,提供跨度攝取和查詢。

在數據庫層面,Tempo Spans/Traces 被存儲爲標記的日誌,並且可以從 LogQL 和 Tempo APIs 訪問。

安裝

Docker

如果你使用 Docker,只需將我們的容器添加到你的 Stack 發送流量即可,cLoki 實例是無狀態的,對負載平衡器友好。

cloki:
    image: qxip/cloki:latest
    ports:
      - "3100:3100"
    environment:
      - CLICKHOUSE_SERVER=http://user:pass@clickhouse:8123

手動安裝

在進行手動安裝之前,必須具備以下要求。

然後安裝 clokipm2

sudo npm install -g cloki pm2

使用 pm2 啓動 cloki,並使用你的 clickhouse-server 實例進行連接:

cd $(dirname $(readlink -f `which cloki`)) \
  && CLICKHOUSE_SERVER="localhost" CLICKHOUSE_AUTH="default:password" CLICKHOUSE_DB="cloki" \
  pm2 start cloki --name "cloki"

此外也可以使用 pm2 配置文件來啓動和管理 cloki 實例:

module.exports = {
  apps : [{
    name   : "cloki_custom",
    script : "cd $(dirname $(readlink -f `which cloki`)) && ./cloki.js",
    env: {
      "UUID""cloki_custom",
      "CLICKHOUSE_SERVER""localhost",
      "CLICKHOUSE_PORT": 8123,
      "CLICKHOUSE_AUTH""default:password",
      "CLICKHOUSE_DB""cloki_custom",
      "CLOKI_USER""demo",
      "CLOKI_PASSWORD""demo",
      "LABELS_DAYS": 7,
      "SAMPLES_DAYS": 7,
      "PORT": 3100,
      "DEBUG"false
    }
  }]
}

檢查服務狀態:

pm2 status cloki

如果沒有錯誤,則可以保存你的服務並進行啓動:

pm2 save
pm2 startup

當然同樣你也可以部署到 Kubernetes 中去,關於 cLoki 的更多使用方法可以前往官方文檔 https://github.com/lmangani/cLoki/wiki 頁面瞭解更多相關信息。

Git 倉庫:https://github.com/lmangani/cLoki

Github 愛好者 我們是一羣 Github 愛好者,專注分享有價值、有趣的開源項目和學習資料,包括 Python、Golang、Java、Rust、AI、前端、運維、數據分析、大數據、雲計算、Kubernetes、Service Mesh 等領域資源。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/BOVPgnENmLCNZNCbuG3FAA