Kibana 中的报告设置
编辑Kibana 中的报告设置编辑
您可以在 kibana.yml
中配置 xpack.reporting
设置,以便
启用报告编辑
不建议禁用报告功能。如果您需要关闭生成报告的功能,请在 Kibana 应用程序权限 中配置角色和空间。
如果需要,您还可以通过设置 xpack.reporting.queue.pollEnabled: false
来防止 Kibana 实例声明报告工作。
加密密钥设置编辑
默认情况下,每次启动 Kibana 时,都会为报告功能生成一个加密密钥。如果 Kibana 配置中没有持久保存静态加密密钥,则在您重新启动 Kibana 时,任何待处理的报告都会失败。
如果您在多个 Kibana 实例之间进行负载均衡,则每个实例都需要具有相同的报告加密密钥。否则,如果通过一个实例将报告排队,而另一个实例从报告队列中获取该作业,则报告生成将失败。获取该作业的实例无法解密报告作业元数据。
xpack.reporting.encryptionKey: "something_secret"
后台作业设置编辑
报告在后台生成报告,并使用 Elasticsearch 中的文档协调作业。根据您生成报告的频率和报告的总数,您可能需要更改以下设置。
-
xpack.reporting.capture.maxAttempts
- 如果由于任何原因捕获报告失败,Kibana 将重新将报告作业排队以进行重试,重试次数为此设置的值。默认为
3
。 -
xpack.reporting.queue.indexInterval
- 存储报告作业的索引滚动到新索引的频率。有效值为
year
、month
、week
、day
和hour
。默认为week
。 -
xpack.reporting.queue.pollEnabled
- 如果为
true
,则允许 Kibana 实例轮询 Elasticsearch 以查找待处理的作业并声明它们以供执行。如果为false
,则允许 Kibana 实例仅将新作业添加到报告队列、列出作业并通过 UI 提供已完成报告的下载。这要求在 Elastic 集群中至少有一个其他 Kibana 实例将此设置设置为true
。默认值为true
。
在集群中运行多个 Kibana 实例以实现报告的负载均衡需要 xpack.reporting.encryptionKey
的值相同,如果启用了安全性,还需要 xpack.security.encryptionKey
的值相同。
捕获设置编辑
报告使用内部“屏幕截图”插件从 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
- 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
。
如果默认文档数量对网络资源造成压力,您可能需要降低此设置。
如果 Elasticsearch 中的搜索延迟足够高,例如,如果您正在使用跨集群搜索,您可能需要增加时间设置或将此配置值设置为 auto
。当配置值设置为 auto
时,滚动上下文将尽可能长时间地保留,直到由于 xpack.reporting.queue.timeout
的限制而终止报告任务。
-
xpack.reporting.csv.scroll.strategy
- 选择在 CSV 导出期间用于分页数据的 API 方法。有效选项为
scroll
和pit
。默认为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.enabled
为true
。默认为[ "reporting_user" ]
。
Kibana 服务器设置编辑
为了生成 PNG 和 PDF 报告的屏幕截图,Reporting 使用服务器上的本地连接打开 Kibana Web 界面。在大多数情况下,使用与 Kibana 服务器的本地连接不会出现问题。如果您希望无头浏览器使用特定主机名连接到 Kibana,则有许多设置允许无头浏览器通过代理连接到 Kibana,而不是直接连接。
xpack.reporting.kibanaServer
设置是可选的。编辑这些设置时请务必小心。添加这些设置可能会导致报告功能失败。如果报告失败,请检查服务器日志。Reporting 尝试打开的完整 Kibana URL 会在报告执行期间记录下来。