配置项
配置文件

配置文件

Seele 的配置文件采用 TOML (opens in a new tab) 格式,且配置文件名固定为 config.toml。在程序启动时,它会尝试在当前目录下读取配置文件,若文件不存在则会导致程序退出。当使用 Seele 提供的 Docker 镜像时,默认的当前目录为 /etc/seele,因此你需要将配置文件挂载到此文件夹下才能让程序顺利读取到配置文件。

配置文件中的各个配置项如下表所示:

名称类型可选简介
log_levelstring输入到控制台的日志等级,默认为 warn
可选值:debuginfowarnerroroff
work_modestring评测系统的工作模式,参见下文。
可选值:barebare_systemdcontainerized
默认值:containerized
thread_countsobject评测系统使用的线程数量,参见下文
pathsobject一些文件夹和程序的目录,参见下文
telemetryobject观测性配置,参见下文
healthzobject健康探针配置,参见下文
httpobject内置的 HTTP 客户端配置,参见下文
exchangeobject参见 Exchange 配置
composerobject参见 Composer 配置
workerobject参见 Worker 配置

work_mode 配置

指定 Seele 运行的模式,这和评测系统的工作原理有关。

  • 当作为普通用户运行评测系统程序时,请指定 bare
  • 当使用 Systemd 运行评测系统程序时,请指定 bare_systemd
  • 当使用 Seele 的容器镜像部署到 Docker 或 Kubernetes 等平台上运行时,请指定 containerized(此值为默认值)。

thread_counts 配置

为了确保评测公平性,Seele 在启动时会严格地将每一个线程绑定到不同的 CPU 核心上

默认情况下,令 N 为系统上存在的 CPU 核心数,Seele 会使用其中的 1 个核心运行主线程,使用另外的 1 个核心运行 1 个辅助线程(此线程被称为 Worker 线程),并使用剩余的 N-2 个核心运行 N-2 个辅助线程(此线程被称为 Runner 线程),评测系统会使用 Runner 线程运行安全沙箱,参见整体架构

用户可以通过下表所示的 thread_counts 的属性改变 Worker 线程和 Runner 线程的数量:

名称类型可选简介
workernumberWorker 线程数量
runnernumberRunner 线程数量

paths 配置

此配置的属性如下表所示:

名称类型可选简介
rootstring默认值为 /etc/seele。存储评测系统需要持久化的文件的根文件夹路径
tmpstring默认值为 /tmp。存储评测任务文件夹的根文件夹路径
runjstring默认值为 /usr/local/bin/runj。安全沙箱程序的路径
skopeostring默认值为 /usr/bin/skopeo。skopeo 程序的路径
umocistring默认值为 /usr/bin/umoci。umoci 程序的路径

telemetry 配置

观测性的相关配置。Seele 使用 OpenTelemtry (opens in a new tab) 提供的 SDK 导出 Tracing 和 Metrics 数据。在实践中,我们一般通过 OpenTelemetry 提供的 Collector (opens in a new tab) 收集 Seele 导出的观测性数据,然后将其分类发送到不同的观测性数据库中存储,如 Jaeger、Tempo 和 Prometheus 等,最后通过 Grafana 等前端工具查询数据。

telemetry 的属性如下表所示。当没有配置 telemetry 时,Seele 会关闭观测性功能。

名称类型简介
collector_urlstringCollector 的 URL。目前仅支持 Grpc 协议
histogram_boundariesnumber[]Histogram 类型的 metrics 的 boundary 配置。参见观测性

healthz 配置

Seele 为 Kubernetes 提供了 HTTP 类型的健康探针,供后者检测评测系统的运行状态,并在系统出现问题时及时重启。此探针目前仅接入了 Amqp Exchange 的健康状态检查,如果你没有使用它,那么健康探针没有意义。

Seele 会在启动初始化完成后才会启动 HTTP 健康探针,如果你配置了预载容器镜像,那么需要配置 Kubernetes 的探针等待足够的时间。

此配置的属性如下表所示:

名称类型简介
enabledboolean是否开启健康探针 HTTP 端点
portnumberHTTP 端点的端口号

http 配置

此配置控制 Seele 内置的 HTTP 客户端的各项参数。后者目前用于:添加文件任务通过 HTTP URL 下载文件、上传文件通过 HTTP URL 上传文件。它的各项属性如下表所示:

名称类型默认值简介
user_agentstringseele/版本号HTTP 请求头中的 User-Agent
connect_timeout_secondsnumber8HTTP 请求的 TCP 连接请求超时
timeout_secondsnumber60HTTP 请求的超时
pool_idle_timeout_secondsnumber600保留池化的 TCP 连接的时长
pool_max_idle_per_hostnumber8每个 host 最大能够池化的 TCP 连接数量