暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

构建在 ClickHouse 之上的 Loki - cLoki

k8s技术圈 2022-06-03
2783

cLoki 是一个构建在 ClickHouse 之上的比较灵活的 Loki 兼容 LogQL API。

  • 内置 Explore UI 和 LogQL CLI 用于查询和提取数据
  • 用于查询、处理、摄取、跟踪和报警的原生 Grafana 和 LogQL API
  • 强大的管道,可从日志、事件等进行动态搜索、过滤和提取数据
  • 摄取和推送 API 与 LogQL、PromQL、InfluxDB、Elastic 等兼容
  • 可与 Promtail、Grafana-Agent、Vector、Logstash、Telegraf 等代理一起使用
  • 云原生、无状态的设计

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

手动安装

在进行手动安装之前,必须具备以下要求。

  • clickhouse-server
    服务必须带 HTTP+ 认证
  • nodejs
    14.x 或 16.x,已安装 npm

然后安装 cloki
pm2

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

文章转载自k8s技术圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论