Kibana 中的报告设置

编辑

Kibana 中的报告设置编辑

您可以在 kibana.yml 中配置 xpack.reporting 设置,以便

启用报告编辑

xpack.reporting.enabled 云端徽标
如果为 true,则启用报告功能。将其设置为 false 可完全禁用报告功能。默认值为 true

不建议禁用报告功能。如果您需要关闭生成报告的功能,请在 Kibana 应用程序权限 中配置角色和空间。

如果需要,您还可以通过设置 xpack.reporting.queue.pollEnabled: false 来防止 Kibana 实例声明报告工作。

加密密钥设置编辑

默认情况下,每次启动 Kibana 时,都会为报告功能生成一个加密密钥。如果 Kibana 配置中没有持久保存静态加密密钥,则在您重新启动 Kibana 时,任何待处理的报告都会失败。

如果您在多个 Kibana 实例之间进行负载均衡,则每个实例都需要具有相同的报告加密密钥。否则,如果通过一个实例将报告排队,而另一个实例从报告队列中获取该作业,则报告生成将失败。获取该作业的实例无法解密报告作业元数据。

xpack.reporting.encryptionKey 云端徽标
用于报告的静态加密密钥。使用至少 32 个字符的字母数字文本字符串。默认情况下,Kibana 在启动时会生成一个随机密钥,这会导致待处理的报告在重新启动后失败。配置 xpack.reporting.encryptionKey 以在多次重新启动和多个 Kibana 实例之间保留相同的密钥。
xpack.reporting.encryptionKey: "something_secret"

后台作业设置编辑

报告在后台生成报告,并使用 Elasticsearch 中的文档协调作业。根据您生成报告的频率和报告的总数,您可能需要更改以下设置。

xpack.reporting.capture.maxAttempts 云端徽标
如果由于任何原因捕获报告失败,Kibana 将重新将报告作业排队以进行重试,重试次数为此设置的值。默认为 3
xpack.reporting.queue.indexInterval
存储报告作业的索引滚动到新索引的频率。有效值为 yearmonthweekdayhour。默认为 week
xpack.reporting.queue.pollEnabled
如果为 true,则允许 Kibana 实例轮询 Elasticsearch 以查找待处理的作业并声明它们以供执行。如果为 false,则允许 Kibana 实例仅将新作业添加到报告队列、列出作业并通过 UI 提供已完成报告的下载。这要求在 Elastic 集群中至少有一个其他 Kibana 实例将此设置设置为 true。默认值为 true

在集群中运行多个 Kibana 实例以实现报告的负载均衡需要 xpack.reporting.encryptionKey 的值相同,如果启用了安全性,还需要 xpack.security.encryptionKey 的值相同。

xpack.reporting.queue.pollInterval
指定报告轮询器在轮询索引以查找任何待处理的报告作业之间等待的 时间。可以指定为毫秒数。默认为 3s
xpack.reporting.queue.timeout 云端徽标
每个工作程序生成报告的 时间。如果您的机器速度慢或负载过重,您可能需要增加此超时时间。如果报告作业执行超过此时间限制,则该作业将标记为失败,并且将无法下载。可以指定为毫秒数。默认为 4m

捕获设置编辑

报告使用内部“屏幕截图”插件从 Kibana 捕获屏幕截图。以下设置控制捕获过程。

xpack.screenshotting.capture.timeouts.openUrl 云端徽标
指定允许报告浏览器等待“正在加载...”屏幕消失并找到页面的初始数据的 时间。如果超过此时间,则会捕获显示当前页面的屏幕截图,并且下载链接会显示警告消息。可以指定为毫秒数。默认为 1m
xpack.screenshotting.capture.timeouts.waitForElements 云端徽标
指定允许报告浏览器等待页面上所有可视化面板加载的 时间。如果超过此时间,则会捕获显示当前页面的屏幕截图,并且下载链接会显示警告消息。可以指定为毫秒数。默认为 1m
xpack.screenshotting.capture.timeouts.renderComplete 云端徽标
指定允许报告浏览器等待所有可视化获取并呈现数据的 时间。如果超过此时间,则会捕获显示当前页面的屏幕截图,并且下载链接会显示警告消息。可以指定为毫秒数。默认为 2m

如果在运行报告作业时出现 xpack.screenshotting.capture.timeouts.* 设置中的任何超时,报告将记录错误并尝试使用屏幕截图继续捕获页面。因此,下载将可用,但报告中的可视化可能会出现错误。

xpack.screenshotting.capture.loadDelay
[8.0.0] 已在 8.0.0 中弃用。此设置无效。 指定在可视化未发生事件时拍摄屏幕截图之前的 时间。Kibana 附带的所有可视化都是事件驱动的,因此此设置应该不会产生太大影响。如果您看到的是空白图像而不是可视化,请尝试增加此值。 注意:此设置是为了向后兼容而存在的,但未使用,因此不会影响报告性能。

Chromium 设置编辑

对于 PDF 和 PNG 报告,报告会在服务器上生成一个无头 Chromium 浏览器进程,以加载和捕获 Kibana 应用程序的屏幕截图。在 Linux 和 Windows 平台上安装 Kibana 时,Chromium 二进制文件与 Kibana 下载捆绑在一起。对于 Mac 平台,Chromium 二进制文件在 Kibana 首次启动时下载。

xpack.screenshotting.browser.chromium.disableSandbox
建议您研究启用非特权用户命名空间的可行性。除非您在 Docker 中运行 Kibana,因为容器在具有内置 seccomp/bpf 过滤器的用户命名空间中运行。有关更多信息,请参阅 Chromium 沙箱。对于除 CentOS、Debian 和 Red Hat Linux 之外的所有操作系统,默认值为 false,而 CentOS、Debian 和 Red Hat Linux 使用 true
xpack.screenshotting.browser.chromium.proxy.enabled
启用 Chromium 使用的代理。如果设置为 true,则还必须指定 xpack.screenshotting.browser.chromium.proxy.server 设置。默认为 false
xpack.screenshotting.browser.chromium.proxy.server
代理服务器的 URI。不支持通过 URI 提供代理服务器的用户名和密码。
xpack.screenshotting.browser.chromium.proxy.bypass
不应通过代理服务器而应使用直接连接的主机数组。有效条目的示例包括“elastic.co”、“*.elastic.co”、“.elastic.co”、“.elastic.co:5601”。

网络策略设置编辑

为了生成 PDF 报告,Reporting 使用 Chromium 浏览器在服务器上完全加载 Kibana 页面。这可能涉及向外部主机发送请求。例如,请求可能会发送到外部图像服务器以显示格式化为图像的字段,或者在 Markdown 可视化中显示图像。

如果要求 Chromium 浏览器发送违反网络策略的请求,Reporting 会在请求发出之前停止处理页面,并将报告标记为失败。有关该事件的更多信息记录在 Kibana 服务器日志中。

Kibana 安装并非设计为可通过互联网公开访问。Reporting 网络策略和 Elastic Stack 安全功能的其他功能不会改变这种情况。

xpack.screenshotting.networkPolicy
从 Kibana 页面捕获屏幕截图涉及发送所有链接的 Web 资源的请求。例如,Markdown 可视化可以显示来自远程服务器的图像。
xpack.screenshotting.networkPolicy.enabled
如果为 false,则禁用 Reporting 网络策略。默认为 true
xpack.screenshotting.networkPolicy.rules
策略被指定为一个对象数组,这些对象描述了根据主机或协议允许或拒绝的内容。如果未指定主机或协议,则该规则匹配任何主机或协议。

规则对象从数组的开头到结尾按顺序进行评估,并持续到有匹配的规则为止。如果没有规则允许请求,则该请求将被拒绝。

# Only allow requests to placeholder.com
xpack.screenshotting.networkPolicy:
  rules: [ { allow: true, host: "placeholder.com" } ]
# Only allow requests to https://placeholder.com
xpack.screenshotting.networkPolicy:
  rules: [ { allow: true, host: "placeholder.com", protocol: "https:" } ]

没有主机或协议的最终 allow 规则允许所有未明确拒绝的请求

# Denies requests from http://placeholder.com, but anything else is allowed.
xpack.screenshotting.networkPolicy:
  rules: [{ allow: false, host: "placeholder.com", protocol: "http:" }, { allow: true }];

网络策略可以由多个规则组成

# Allow any request to http://placeholder.com but for any other host, https is required
xpack.screenshotting.networkPolicy
  rules: [
    { allow: true, host: "placeholder.com", protocol: "http:" },
    { allow: true, protocol: "https:" },
  ]

即使未配置任何网络策略,file: 协议也始终被拒绝。

CSV 设置编辑

xpack.reporting.csv.maxSizeBytes logo cloud
CSV 文件在被截断之前的最大字节大小。此设置的存在是为了防止大量导出导致性能和存储问题。可以指定为字节数。默认为 250mb

我们建议仅使用 CSV 报告导出适量的数据。该功能支持在外部工具中分析数据,但不用于批量导出或备份 Elasticsearch 数据。如果您需要导出超过 250 MB 的 CSV,请使用过滤器创建多个较小的报告,或者直接从 Elasticsearch 中提取所需数据,而不是增加 xpack.reporting.csv.maxSizeBytes

以下部署配置可能会导致报告作业失败或报告不完整

  • 搜索所需的任何分片都不可用。
  • 数据存储在速度较慢的存储层上。
  • 节点之间的网络延迟很高。
  • 使用了跨集群搜索。

要导出大量数据,我们建议直接使用 Elasticsearch API。请参阅时间点 API,或使用 CSV 响应数据格式的 SQL

xpack.reporting.csv.scroll.size
在 CSV 导出期间为每次滚动迭代从 Elasticsearch 检索的文档数。默认为 500

如果默认文档数量对网络资源造成压力,您可能需要降低此设置。

xpack.reporting.csv.scroll.duration
在 CSV 导出期间,Kibana 清除滚动上下文之前允许的时间量。有效选项为 auto时间,默认为 30s

如果 Elasticsearch 中的搜索延迟足够高,例如,如果您正在使用跨集群搜索,您可能需要增加时间设置或将此配置值设置为 auto。当配置值设置为 auto 时,滚动上下文将尽可能长时间地保留,直到由于 xpack.reporting.queue.timeout 的限制而终止报告任务。

xpack.reporting.csv.scroll.strategy
选择在 CSV 导出期间用于分页数据的 API 方法。有效选项为 scrollpit。默认为 pit

每种方法都有其自身的独特限制,了解这些限制非常重要。* 滚动 API:搜索最多只能搜索 500 个分片。如果数据分片不可用或超时,则导出可能会返回部分数据。* PIT API:仅读取数据别名的权限将不起作用:需要对基础索引或数据流具有权限。如果数据分片不可用或超时,则导出将为空,而不是返回部分数据。

xpack.reporting.csv.checkForFormulas
启用一项检查,当输出中包含潜在公式(=、-、+ 和 @ 字符)时,该检查会向您发出警告。请参阅 OWASP:https://www.owasp.org/index.php/CSV_Injection。默认为 true
xpack.reporting.csv.escapeFormulaValues
使用 ' 转义单元格中的公式值。请参阅 OWASP:https://www.owasp.org/index.php/CSV_Injection。默认为 true
xpack.reporting.csv.enablePanelActionDownload
[8.14.0] 已在 8.14.0 中弃用。此设置将在 Kibana 的未来版本中删除。 如果为 true,则此设置将启用一个已弃用的功能,该功能允许用户从仪表板上的已保存搜索面板下载 CSV 导出。如果为 false,则用户可以从仪表板上的已保存搜索面板生成常规 CSV 报告,并在稍后在 Stack Management > Reporting 中下载它们。默认为 false
xpack.reporting.csv.useByteOrderMarkEncoding
在 CSV 文件的开头添加一个字节顺序标记 (\ufeff)。默认为 false

安全设置编辑

启用安全功能后,Reporting 有两种形式的访问控制:每个用户只能访问自己的报告,并且自定义角色决定谁有权生成报告。使用Kibana 应用程序权限配置 Reporting 时,您可以控制允许用户生成报告的空间和应用程序。

xpack.reporting.roles 设置用于 Reporting 中已弃用的访问控制系统。关闭此功能允许 API 密钥生成报告,并允许通过 Kibana 应用程序权限进行报告访问。我们建议您通过在 kibana.yml 中添加 xpack.reporting.roles.enabled: false 来明确关闭 Reporting 已弃用的访问控制功能。这将使您能够创建自定义角色,为报告提供应用程序权限,如授予用户访问报告的权限中所述。

xpack.reporting.roles.enabled
[7.14.0] 已在 7.14.0 中弃用。此设置的默认值将在 Kibana 的未来版本中更改为 false 将访问控制设置为一组分配的报告角色,由 xpack.reporting.roles.allow 指定。默认为 true
xpack.reporting.roles.allow
[7.14.0] 已在 7.14.0 中弃用。 除了超级用户之外,还指定可以使用Elasticsearch 角色管理 API生成报告的角色。要求 xpack.reporting.roles.enabledtrue。默认为 [ "reporting_user" ]

Kibana 服务器设置编辑

为了生成 PNG 和 PDF 报告的屏幕截图,Reporting 使用服务器上的本地连接打开 Kibana Web 界面。在大多数情况下,使用与 Kibana 服务器的本地连接不会出现问题。如果您希望无头浏览器使用特定主机名连接到 Kibana,则有许多设置允许无头浏览器通过代理连接到 Kibana,而不是直接连接。

xpack.reporting.kibanaServer 设置是可选的。编辑这些设置时请务必小心。添加这些设置可能会导致报告功能失败。如果报告失败,请检查服务器日志。Reporting 尝试打开的完整 Kibana URL 会在报告执行期间记录下来。

xpack.reporting.kibanaServer.port
用于访问 Kibana 的端口。port`>> 值。
xpack.reporting.kibanaServer.protocol
用于访问 Kibana 的协议,通常为 httphttps
xpack.reporting.kibanaServer.hostname
用于访问 Kibana 的主机名。