首页 > 解决方案 > 渲染失败。无法在 AWS S3 上发送 Grafana 警报图像以进行渲染以在 Slack 警报中使用

问题描述

运行 2 个 docker 容器 - Grafana 和 Grafana Image Renderer

我在 Docker 中的 Grafana 配置:

 GF_RENDERING_SERVER_URL: http://render:8081/render
 GF_RENDERING_CALLBACK_URL: http://grafana:3000/
 GF_SERVER_ROOT_URL: http://grafana:3000/
 GF_INSTALL_PLUGINS: "grafana-image renderer
 GF_INSTALL_IMAGE_RENDERER_PLUGIN: "true"
 GF_LOG_FILTERS: rendering:debug
 GF_EXTERNAL_IMAGE_STORAGE_PROVIDER: "s3"
 GF_EXTERNAL_IMAGE_STORAGE_S3_BUCKET_URL: https://*bucketname*.s3.*region*.amazonaws.com
 GF_EXTERNAL_IMAGE_STORAGE_S3_REGION: "*region*"
 GF_EXTERNAL_IMAGE_STORAGE_S3_ACCESS_KEY: *access key*
 GF_EXTERNAL_IMAGE_STORAGE_S3_SECRET_KEY: *secret key*

S3 存储桶中的策略:

{
  "Id": "*Policy*",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "*Sid*",
      "Action": [
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bucketname/*",
      "Principal": "*"
    }
  ]
}

渲染失败是我在 Grafana 仪表板上收到的消息

标签: amazon-s3grafanaslack

解决方案


您的容器日志可能会给您原因。

我怀疑容器不能互相交谈——即主机名rendergrafana解析?例如,您可以从 grafana 容器中curl访问http://render:8081docker exec -it <container id> /bin/sh (使用)吗?

此外,您不需要这些环境变量:

  • GF_INSTALL_PLUGINS: "grafana-image renderer(错字?),因为插件功能由渲染器容器提供
  • GF_INSTALL_IMAGE_RENDERER_PLUGIN: "true",因为您使用的是外部渲染器,并且不需要使用它们提供的单独 Dockerfile 构建自定义容器。

推荐阅读