Loki 配置与 s3

2024-03-30

我无法使用 Loki 连接到 AWS S3docker-compose。日志在 Grafana 中可见,但 S3 存储桶仍为空。

s3 存储桶是公共的,我附加了一个 IAM 角色来允许s3:FullAccess.

我将 loki 更新到 v2.0.0 并将周期更改为 24 小时,但没有任何区别。 loki 日志中没有错误。

以下是 docker 日志 (loki) 中选定的行:

msg="Starting Loki" version="(version=master-4e661cd, branch=master, revision=4e661cde)"
caller=server.go:225 http=[::]:3100 grpc=[::]:9095 msg="server listening on addresses"
caller=worker.go:65 msg="no address specified, not starting worker"
msg="cleaning up mapped rules directory" path=/loki/tmprules
msg=initialising module=memberlist-kv
msg=initialising module=store
msg=initialising module=server
msg=initialising module=ring
msg="value is nil" key=collectors/ring index=1
msg=initialising module=ingester
msg="not loading tokens from file, tokens file path is empty"
msg="instance not found in ring, adding with no tokens" ring=ingester
msg="auto-joining cluster after timeout" ring=ingester
msg=initialising module=table-manager
msg=initialising module=distributor
msg=initialising module=ingester-querier
msg=initialising module=ruler
msg="ruler up and running"
msg="Loki started"
msg="synching tables" expected_tables=132

这是我的loki.config:

auth_enabled: false

server:
  http_listen_port: 3100

distributor:
  ring:
    kvstore:
      store: memberlist

ingester:
  lifecycler:
    ring:
      kvstore:
        store: memberlist
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 5m
  chunk_retain_period: 30s

schema_config:
  configs:
  - from: 2020-10-27
    store: boltdb-shipper
    object_store: s3
    schema: v11
    index:
      prefix: index_
      period: 24h
  
storage_config:
  boltdb_shipper:
    active_index_directory: /loki/index
    cache_location: /loki/index_cache
    resync_interval: 5s
    shared_store: s3
  
  aws:
     s3: s3://AKIARE3@us-east-1/mydomain.com.docker.loki.logs
     s3forcepathstyle: true 

limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h     

Here is docker-compose.yaml

version: "3.8"

networks:
  traefik:
    external: true

volumes:
  data:
   
services:
  fluentd:
    image: grafana/fluent-plugin-loki:master
    command:
      - "fluentd"
      - "-v"
      - "-p"
      - "/fluentd/plugins"
    environment:
      LOKI_URL: http://loki:3100
      LOKI_USERNAME:
      LOKI_PASSWORD:
    container_name: "fluentd"
    restart: always
    ports:
      - '24224:24224'
    networks:
      - traefik
    volumes:
      - type: bind
        source: ./config/fluent.conf
        target: /fluentd/etc/fluent.conf
    logging:
      options:
        tag: docker.monitoring
  
  loki:
    image: grafana/loki:master
    container_name: "loki"
    restart: always
    networks:
      - traefik
    volumes:
      - type: volume
        source: data
        target: /loki
    ports:
      - 3100
    volumes:
      - type: bind
        source: ./config/s3.loki.conf
        target: /loki/etc/loki.conf
    depends_on:
      - fluentd

我终于解决了这个问题。它需要一个压实机,但没有给出任何警告。最佳实践是创建一个没有任何公共访问权限的 AWS s3 存储桶。接下来创建一个仅具有编程访问权限的 IAM 用户。创建一个访问策略,仅授予对您创建的存储桶的完全访问权限。将策略附加到用户的权限。您不需要将策略附加到存储桶本身。检查您的 URL 中是否有“/”,并使用 %2F 对其进行转义,否则您将收到身份验证错误。请注意,此配置适用于昨天发布的 loki v2.0.0。

这是我完整的工作 docker-compose 和 loki 配置文件。我将它们放在外部网络上以启用普罗米修斯监控。

这是我的docker-compose.yaml

    version: "3.8"
    
    networks:
      appnet:
        external: true
    
    volumes:
      loki_data:
       
    services:
      fluentd:
        container_name: "fluentd"
        image: grafana/fluent-plugin-loki:master
        command:
          - "fluentd"
          - "-v"
          - "-p"
          - "/fluentd/plugins"
        environment:
          LOKI_URL: http://loki:3100
          LOKI_USERNAME:
          LOKI_PASSWORD:
        restart: always
        ports:
          - '24224:24224'
        networks:
          - appnet
        volumes:
          - type: bind
            source: ./config/fluent.conf
            target: /fluentd/etc/fluent.conf
      
      loki:
        container_name: "loki"
        image: grafana/loki:2.0.0
        restart: always
        networks:
          - appnet
        ports:
          - 3100
        volumes:
          - type: volume
            source: loki_data
            target: /data
          - type: bind
            source: ./config/s3-loki-bolt-conf.yml
            target: /etc/loki/local-config.yaml
        command: -config.file=/etc/loki/local-config.yaml        
        depends_on:
          - fluentd

这是我在 prometheus/config/s3-loki-bolt-conf.yml 中的 loki 配置。您可以将其命名为任何您想要的名称,但保留上面的目标文件名,因为它是 loki 默认配置文件。

    auth_enabled: false
    
    ingester:
      chunk_idle_period: 3m
      chunk_block_size: 262144
      chunk_retain_period: 1m
      max_transfer_retries: 0
      lifecycler:
        ring:
          kvstore:
            store: inmemory
          replication_factor: 1
    
    limits_config:
      enforce_metric_name: false
      reject_old_samples: true
      reject_old_samples_max_age: 168h
    
    compactor:
      working_directory: /loki/boltdb-shipper-compactor
      shared_store: aws
      
    schema_config:
      configs:
      - from: 2020-07-01
        store: boltdb-shipper
        object_store: aws
        schema: v11
        index:
          prefix: loki_index_
          period: 24h
          
    server:
      http_listen_port: 3100
    
    storage_config:
      aws:
        s3: s3://ACCESS_KEY:SECRET_ACCESS_KEY@us-west-1/mydomain.com.docker.loki.logs
      boltdb_shipper:
        active_index_directory: /loki/index
        shared_store: s3
        cache_location: /loki/boltdb-cache
    
    chunk_store_config:
      max_look_back_period: 0s
    
    table_manager:
      retention_deletes_enabled: false
      retention_period: 0s
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Loki 配置与 s3 的相关文章

  • aws key 和 Secret 在 aws cli 上工作但在 jenkins 上不起作用

    我正在尝试运行 python 脚本 其中包含使用 boto3 sdk 访问 s3 的代码 我已经在我的 Windows 机器中创建了默认配置文件 aws cli 命令在窗口 cmd 中可以正常工作以访问 s3 存储桶 python 脚本在窗
  • 节点 aws-sdk s3 文件上传大小

    当使用 Node js 的 aws sdk npm 插件时 我可以使用以下代码上传 50kb 的 pdf 到 AWS s3 var params Bucket BUCKET Key pdf key Body file ContentType
  • 禁用进度输出 aws s3sync 而不禁用所有输出

    有什么办法可以禁用 Completed 1 of 12 part s with 11 file s remaining 进度输出aws s3 sync命令 来自 aws cli 工具 我知道有一个 quiet选项 但我不想使用它 因为我仍然
  • 优化spark sql中分区数据写入S3

    我在每个 Spark 作业运行中从 HDFS 读取大约 700 GB 的数据 我的工作读取这些数据 过滤大约 60 的数据 将其分区如下 val toBePublishedSignals hiveCtx sql some query toB
  • 通过使用 AWS-SDK PHP 生成的预签名帖子拒绝 AWS S3 上传访问

    我正在尝试使用 AWS SDK PHP 生成的预签名帖子将文件 用于测试的图像 上传到我的 s3 存储桶 首先我生成预签名的帖子 然后我使用 Postman 或通过简单的 html 表单使用给定的 PostObjectV4 数据手动创建请求
  • AWS S3在两个存储桶之间复制文件和文件夹

    我一直在寻找一种工具来帮助我将 AWS S3 存储桶的内容复制到第二个 AWS S3 存储桶 而无需先将内容下载到本地文件系统 我尝试使用 AWS S3 控制台复制选项 但这导致一些嵌套文件丢失 我尝试过使用 Transmit 应用程序 由
  • 使用存储桶级别权限调用 PutObject 操作时出现访问被拒绝的情况

    我按照上面的例子http docs aws amazon com IAM latest UserGuide access policies examples html iam policy example s3 http docs aws
  • Amazon S3 下载尝试限制

    我想限制我的 Amazon s3 服务的下载尝试次数为特定数量 我正在使用来自的库http undesign org za http undesigned org za 任何人都知道如何限制下载到特定数量 我的理解是 这种限制是不可能的 无
  • AWS Cloudfront 行为函数不重定向

    尝试找到一种方法将流量从我的 AWS CloudFront 页面重定向到另一个 URL 我目前正在使用 Cloudfront Functions 设置 函数 函数代码 函数名称 exampleFunction function handle
  • 如何通过 SSL 将文件直接上传到 S3?

    我已经使用基于浏览器的 Amazon S3 直接 POST 上传有一段时间了 最 近想开始通过 HTTPS 发布 普通的 HTTP 帖子就可以正常工作 但是 当我将相同的表格发布到https s3 amazonaws com https s
  • 使用AWS SDK将文件上传到存储桶中的特定文件夹

    我正在使用节点开发人员工具包将图像上传到 AWS S3 const aws require aws sdk const s3Bucket process env S3 BUCKET const s3 new aws S3 signature
  • 开始使用 Python 进行安全 AWS CloudFront 流式传输

    我已经创建了一个 S3 存储桶 上传了一个视频 并在 CloudFront 中创建了一个流分配 用静态 HTML 播放器对其进行了测试 它可以工作 我已经通过帐户设置创建了密钥对 目前我的桌面上有私钥文件 这就是我所在的地方 我的目标是让我
  • 将文件从 CodeCommit 部署到 S3

    我想将推送到 CodeCommit 存储库中的某些文件部署到 S3 存储桶中 我正在尝试使用存储库上的 Lambda 触发器来执行此操作 但是 我无法获取提交中更改的文件列表 也无法使用 AWS CodeCommit API 从 CodeC
  • 从 Flask 中的 S3 返回 PDF

    我正在尝试在 Flask 应用程序的浏览器中返回 PDF 我使用 AWS S3 来存储文件 并使用 boto3 作为与 S3 交互的 SDK 到目前为止我的代码是 s3 boto3 resource s3 aws access key id
  • 亚马逊 AWS CloudFront 声称不存在这样的存储桶

    我正在尝试设置 CloudFront 来提供图像 但当前无法访问它并返回错误 指定的存储桶不存在
  • 使用S3上传但不允许公共访问

    我的想法是创建一个 S3 存储桶以允许用户上传二进制对象 下一步是确认上传 然后 API 将启动文件处理 为了使其更安全 客户端将首先请求上传位置 然后 API 会在 S3 上为此上传分配并预先创建一个一次性使用目录 并在该目录上设置访问策
  • Amazon S3:静态网站:自定义域或子域

    Amazon com 刚刚宣布可以在 S3 存储桶中托管静态网站 我访问了他们的设置页面http docs amazonwebservices com AmazonS3 latest dev index html WebsiteHostin
  • 将 BufferedImage 对象作为文件保存到 Amazon S3

    我目前使用以下方法将文件上传到 S3 File file new File my file path AmazonS3 s3 new AmazonS3Client new PropertiesCredentials cred s3 putO
  • XCode 7 中的 AWSS3TransferManagerUploadRequest

    我今天升级到 Xcode 7 Swift 2 0 我的项目正在使用 CocoaPods 我正在 POD 文件中导入所有与 AWS 相关的文件 我已经设置了桥接标头 并导入了 Amazon 告诉我的所有文件 在升级到 Swift 2 0 之前
  • AWS S3 公共对象与私有对象?

    回到 S3 我的存储桶中有图像的 URL 我将在我的应用程序中呈现这些图像 但它们被设置为私有 当我尝试单击该链接时 它显示 访问被拒绝 当我将链接的设置更改为公共时 它会通过 但是我读到公共访问并不是最安全的事情 所以这本质上是一个由两部

随机推荐