Loki 日志块使用 MinIO 对象存储

简介

与其他日志记录系统不同,Grafana Loki 是围绕仅索引有关日志的元数据的想法构建的:标签(就像 Prometheus 标签一样)。然后,日志数据本身会被压缩并以块的形式存储在对象存储(例如 S3 或 GCS)中,甚至本地存储在文件系统中。小索引和高度压缩的块简化了操作并显着降低了 Loki 的成本。

在 Loki 2.0 之前,索引数据存储在单独的索引中。

安装 Loki

略,参见:  Grafana+Loki+Promtail 搭建日志收集系统_promtail多行日志收集_不会飞的小龙人的博客-CSDN博客

安装 MinIO

略,参见:MinIO 安装笔记_不会飞的小龙人的博客-CSDN博客

Loki 对象存储配置

S3 是 AWS 的托管对象存储服务,也是互联网通用的网络对象存储服务模式。它非常适合托管对象存储,尤其是当您已经在 AWS 上运行并且生产安全时。

使用 AWS config 配置 MinIO,因为 MinIO 实现了 S3 API。而 Loki 支持配置 s3 的应用,如下:

storage_config:
  aws:
    # Note: use a fully qualified domain name, like localhost.
    # full example: http://loki:supersecret@localhost.:9000
    s3: http://:@:
    s3forcepathstyle: true
  boltdb_shipper:
    active_index_directory: /loki/boltdb-shipper-active
    cache_location: /loki/boltdb-shipper-cache
    cache_ttl: 24h         # Can be increased for faster performance over longer query periods, uses more disk space
    shared_store: s3

schema_config:
  configs:
    - from: 2020-07-01
      store: boltdb-shipper
      object_store: aws
      schema: v11
      # index为索引数据,prefix表示设置索引存储文件夹的前缀,period表示设置当天24小时内的索引数据放在一个index_xxx目录,每天创建一个新index_xx索引目录
      index:
        prefix: index_
        period: 24h
      # 注意chunks存储的即为数据块
      chunks:
        prefix: chunks_
        period: 24h

我们用一个完整的示例,来演示如何将 Loki 通过 s3 协议将日志块上传到 MinIO,完整的 Loki 示例配置如下:

root@ubuntu2:/opt/loki# vim loki-local-config-minio.yaml
auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

common:
  path_prefix: /tmp/loki
#  storage:
#    filesystem:
#      chunks_directory: /tmp/loki/chunks
#      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    instance_addr: 0.0.0.0
    kvstore:
      store: inmemory

query_range:
  results_cache:
    cache:
#      embedded_cache:
#        enabled: true
#        distributed: true
#        max_size_mb: 100

storage_config:
  aws:
    # Note: use a fully qualified domain name, like localhost.
    # full example: http://loki:supersecret@localhost.:9000
    s3: http://miniotest:[email protected]:9000/loki
    s3forcepathstyle: true
  boltdb_shipper:
    active_index_directory: /tmp/loki/boltdb-shipper-active
    cache_location: /tmp/loki/boltdb-shipper-cache
    cache_ttl: 24
    # Can be increased for faster performance over longer query periods, uses more disk space
    shared_store: s3

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: aws
      schema: v11
      index:
        prefix: index_
        period: 24h
      chunks:
        prefix: chunks_
        period: 24h

ruler:
  alertmanager_url: http://localhost:9093

MinIo 上创建 Buckets

loki 要使用 minio 存储日志块数据,必需先在 minio 创建网络对象存储桶 bucket,此 bucketName 必需与 yaml 配置文件中的 bucketName 一致,yaml 中配置的为 s3: http://miniotest:[email protected]:9000/loki,loki 即为 minio 存储桶名称;miniotest:miniotest 为 minio 创建用的账号和密码,使用此账号上传日志数据到 minio 对象存储桶时,确认此账号有写入权限,如无可以进入 Buckets》loki》Manage》Access Audit》Users 中添加。

Loki 日志块使用 MinIO 对象存储_第1张图片

启动 loki 服务

./loki-linux-amd64 --config.file=loki-local-config-minio.yaml

日志存储查询

MinIo 管理平台成功上传日志块到 fake 目录和索引文件上传到 index 目录;

Loki 日志块使用 MinIO 对象存储_第2张图片

参考:

https://grafana.com/docs/loki/latest/configuration/examples/

https://grafana.com/docs/loki/latest/configuration/examples/#aws-basic-config-no-credsyaml (loki 配置 s3)

https://aws.amazon.com/cn/blogs/china/from-elk-efk-to-plg-implement-in-eks-a-container-logging-solution-based-on-promtail-loki-grafana/( 亚马逊 AWS 官方博客)

你可能感兴趣的:(开源项目,对象存储,minio,文件服务器,loki,日志管理)