1

我是 Loki 新手,我们正在尝试为在不同服务器上运行的多个 Loki/Grafana 实例设置共享存储。

主要查询: 我查看了 boltdb-shipper,它充当块/索引的共享存储,并且可以发送到“GCS 存储桶”,我想知道:

是否可以将日志从 Loki 的不同本地实例发送到同一个“GCS”存储,然后在 Google Cloud 上设置一个 Loki/Grafana 实例,该实例可以从这个中央存储中使用,从而为我们提供所有服务器日志的整体视图。

细分: 假设我们有一个名为“ shared-bucket-xyz ”的GCS 存储桶为简单起见,我使用术语日志而不是块/索引,因为获得集中式日志是最终目标

  1. 我们可以将日志从本地设置推送到远程shared-bucket-xyz吗?因为我在提供的配置选项中没有看到任何身份验证机制。

  2. 我们可以将来自 2 个或更多本地服务器的日志推送到同一个存储桶shared-bucket-xyz吗?

  3. 云部署的 Loki/Grafana 堆栈是否能够使用来自shared-bucket-xyz的日志?

Grafana 提供的配置示例:


    schema_config:
      configs:
        - from: 2018-04-15
          store: boltdb-shipper
          object_store: gcs
          schema: v11
          index:
            prefix: loki_index_
            period: 24h

    storage_config:
      gcs:
        bucket_name: GCS_BUCKET_NAME

      boltdb_shipper:
        active_index_directory: /loki/index
        shared_store: gcs
        cache_location: /loki/boltdb-cache

4

1 回答 1

0

所以我在 Grafana 社区发布了同样的问题,并在那里得到了答案。我会在这里分享给其他人:

是否可以将日志从 Loki 的不同本地实例发送到同一个“GCS”存储,然后在 Google Cloud 上设置一个 Loki/Grafana 实例,该实例可以从这个中央存储中使用,从而为我们提供所有服务器日志的整体视图。

使用代理(promtail)将所有远程集群的日志发送到这个远程 loki 实例。这是推荐的方法,也是我们自己运行 Loki 的方式。

我们可以将日志从本地设置推送到远程 shared-bucket-xyz 吗?因为我在提供的配置选项中没有看到任何身份验证机制。

是的,身份验证是通过我们使用的 GCS SDK 处理的,通常使用环境变量完成。

为此,请在“docker run”命令中将路径挂载到以 json 格式保存 google auth 文件的位置。在他们的官方页面上了解更多关于谷歌身份验证的信息

我们可以将来自 2 个或更多本地服务器的日志推送到同一个存储桶 shared-bucket-xyz 吗?

是的,但是最好只运行一个 table-manager 和一个 compactor,运行多个不应该伤害任何东西,但不是最佳的。然而,目前这很难用单一二进制文件(默认情况下将同时运行表管理器和压缩器)我们一直在讨论添加配置以更好地处理这个问题,但工作尚未完成。

云部署的 loki/grafana 堆栈是否能够使用来自 shared-bucket-xyz 的日志?

是的,但是请注意,在此远程实例中可见的内容会有一些延迟,因为 Loki 将日志数据保存在内存中以在刷新它们之前构建足够的块。远程站点配置的 Loki 将确定这一点,默认情况下可能长达一个小时,但在块被刷新并在中心位置可见之前。可以更改这些时间,但不建议这样做,因为强制较小的块会影响查询性能。这就是为什么我们通常推荐我建议的第一种方法,即集中 Loki 并将日志从任何地方发送到它。

于 2020-12-28T05:25:56.027 回答