Elasticsearch 指南
Slurm 提供多个作业完成插件。这些插件是提供已完成作业的历史作业 计费 数据的正交方式。
在大多数安装中,Slurm 已经配置了一个 AccountingStorageType 插件 — 通常是 slurmdbd。在这些情况下,由完成插件捕获的信息是故意冗余的。
jobcomp/elasticsearch 插件可以与 Elasticsearch 服务器上的 Web 层一起使用 — 例如 Kibana — 来 可视化您的已完成作业和集群状态。这些可视化工具中的一些还允许您轻松创建不同类型的仪表板、 图表、表格、直方图和/或在搜索时应用自定义过滤器。
先决条件
该插件需要额外的库进行编译:
配置
Elasticsearch 实例应该正在运行,并且可以从配置的多个 SlurmctldHost 访问。 有关设置和配置的更多详细信息,请参阅 Elasticsearch 官方文档。
与该插件相关的有三个 slurm.conf 选项:
-
JobCompType
用于选择要激活的作业完成插件类型。它应该设置为
jobcomp/elasticsearch。
JobCompType=jobcomp/elasticsearch
-
JobCompLoc 应设置为
Elasticsearch 服务器的 URL 端点(包括端口号和目标
索引)。
JobCompLoc=<host>:<port>/<target>/_doc
注意: 自 Elasticsearch 8.0 起,接受类型的 API 被移除, 因此转向无类型模式。Slurm elasticsearch 插件在 20.11 之前的版本 从此选项 URL 中删除了任何尾随斜杠,并附加了硬编码的 /slurm/jobcomp 后缀,分别表示 /index/type。 从 Slurm 20.11 开始,URL 完全可配置,并按原样传递给 libcurl 库函数,而不进行修改。此外,这还允许 用户将来自不同集群的数据索引到同一服务器,但索引不同。
注意: Elasticsearch 官方文档提供了有关这些概念的详细信息, 类型到无类型的弃用过渡以及 reindex API 参考,说明如何在需要时将数据从一个索引复制到另一个索引。
-
DebugFlags 可以包括
Elasticsearch 标志以进行额外的调试。
DebugFlags=Elasticsearch
在您验证已完成的作业是否正确索引之前,最好先开启此选项。请注意,您不需要手动 创建 Elasticsearch 索引,因为插件会在尝试索引第一个作业文档时自动 执行此操作。
可视化
一旦作业被索引,使用 Web 可视化 层来分析数据是个好主意。 Kibana 是一个 推荐的开源数据可视化插件,用于 Elasticsearch。 安装后,必须配置一个 Elasticsearch 索引 名称或模式,以指示 Kibana 检索数据。一旦数据加载,就可以创建表格,其中每一行都是一个已完成的作业,按您选择的任何列排序 — 建议使用 @end_time 时间戳 — 以及任何仪表板、图表或其他感兴趣的分析。
测试与调试
出于调试目的,您可以使用 curl 命令或任何类似 工具直接对 Elasticsearch 执行 REST 请求。以下一些使用 curl 工具的示例可能会有用。
查询信息,假设有一个 slurm 索引 名称,包括 文档计数(每个索引的作业应该是一个):
$ curl -XGET http://localhost:9200/_cat/indices/slurm?v health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open slurm 103CW7GqQICiMQiSQv6M_g 5 1 9 0 142.8kb 142.8kb
查询 slurm 索引 中的所有已索引作业:
$ curl -XGET 'http://localhost:9200/slurm/_search?pretty=true&q=*:*' | less
删除 slurm 索引(小心!):
$ curl -XDELETE http://localhost:9200/slurm {"acknowledged":true}
查询 _cat 选项的信息。更多信息可以在 官方文档中找到。
$ curl -XGET http://localhost:9200/_cat
故障管理
当主 slurmctld 关闭时,关于所有已完成但尚未索引的作业的信息将保存在一个名为 elasticsearch_state 的文件中,该文件位于 StateSaveLocation。这 使插件能够在 slurmctld 重新启动时恢复信息,并在连接恢复时将其发送到 Elasticsearch 数据库。致谢
Elasticsearch 插件是 Alejandro Sanchez 的 硕士论文的一部分。
最后修改于 2021 年 8 月 6 日