https://grafana.com/docs/loki/latest/installation/tanka/

Tanka是Grafana Labs 在 Ksonnet 被弃用后创建的Ksonnet的重新实现 。Grafana Labs 使用 Tanka 在生产环境中运行 Grafana Loki。

Tanka 安装以微服务模式运行 Loki 集群。

先决条件

为这些命令安装最新版本的 Tanka(版本 v0.17.1 或更新版本)tk env 。可以在Tanka 发布 URL找到 Tanka 的预构建二进制文件。

在您的配置存储库中,如果您没有 Tanka 应用程序,请创建一个文件夹并tk init在其中调用。然后为 Loki 创建一个环境并提供 Kubernetes API 服务器部署到的 URL(例如,https://localhost:6443):

mkdir <application name>
cd <application name>
tk init
tk env add environments/loki --namespace=loki --server=<Kubernetes API server>

安装jsonnet-bundler( jb),在 Tanka 的安装文档中找到适用于您的平台的说明。

部署中

jb使用(版本 v0.4.0 或更新版本)下载并安装 Loki 和 Promtail 模块:

jb init  # not required if you already ran `tk init`
jb install github.com/grafana/loki/production/ksonnet/loki@main
jb install github.com/grafana/loki/production/ksonnet/promtail@main

修改 的 YAML 内容 environments/loki/main.jsonnet ,更新这些变量:

  • 更新usernamepassword和相关的htpasswd变量值。
  • 根据您的对象存储类型更新 S3 或 GCS 变量值。有关更多配置详细信息,请参阅storage_config 。
  • 从配置中删除不属于您的设置的 S3 或 GCS 对象存储变量。
  • 将 的值更新boltdb_shipper_shared_store为您正在使用的对象存储类型。选项有gcss3azurefilesystemobject_store将该部分下的变量更新schema_config为相同的值。
  • 更新 Promtail 配置container_root_path变量的值以反映 Docker 守护程序的根路径。运行docker info | grep "Root Dir"以获取您的根路径。
  • from 将Loki 部分中的值更新schema_config为不超过当前日期前 14 天。日期from表示该schema_config部分有效的第一天。例如,如果今天是2021-01-15,则设置from2021-01-01。此建议基于 Loki 默认接受最多 14 天前的日志行。配置变量reject_old_samples_max_age控制接受范围。
local gateway = import 'loki/gateway.libsonnet';
local loki = import 'loki/loki.libsonnet';
local promtail = import 'promtail/promtail.libsonnet';

loki + promtail + gateway {
  _config+:: {
    namespace: 'loki',
    htpasswd_contents: 'loki:$apr1$H4yGiGNg$ssl5/NymaGFRUvxIV1Nyr.',

    // S3 variables -- Remove if not using s3
    storage_backend: 's3,dynamodb',
    s3_access_key: 'key',
    s3_secret_access_key: 'secret access key',
    s3_address: 'url',
    s3_bucket_name: 'loki-test',
    dynamodb_region: 'region',

    // GCS variables -- Remove if not using gcs
    storage_backend: 'bigtable,gcs',
    bigtable_instance: 'instance',
    bigtable_project: 'project',
    gcs_bucket_name: 'bucket',

    //Set this variable based on the type of object storage you're using.
    boltdb_shipper_shared_store: 'my-object-storage-backend-type',

    //Update the object_store and from fields
    loki+: {
      schema_config: {
        configs: [{
          from: 'YYYY-MM-DD',
          store: 'boltdb-shipper',
          object_store: 'my-object-storage-backend-type',
          schema: 'v11',
          index: {
            prefix: '%s_index_' % $._config.table_prefix,
            period: '%dh' % $._config.index_period_hours,
          },
        }],
      },
    },

    //Update the container_root_path if necessary
    promtail_config+: {
      clients: [{
        scheme:: 'http',
        hostname:: 'gateway.%(namespace)s.svc' % $._config,
        username:: 'loki',
        password:: 'password',
        container_root_path:: '/var/lib/docker',
      }],
    },

    replication_factor: 3,
    consul_replicas: 1,
  },
}

运行 tk show environments/loki 以查看将部署到集群的清单。运行 tk apply environments/loki 以部署清单。

作者:Jeebiz  创建时间:2023-02-26 21:29
最后编辑:Jeebiz  更新时间:2024-02-26 11:18