跳到主要内容

日志

Semaphore 将服务器日志写入 stdout,并将 任务(Task)日志和 活动(Activity)日志存储在 数据库 中,从而集中管理关键日志信息,无需单独备份日志文件。文件系统上仅存储缓存数据。


服务器日志​

Semaphore 不会将日志写入文件。所有应用日志都会写入 stdout。
如果 Semaphore 以 systemd 服务的方式运行,您可以使用以下命令查看日志:

journalctl -u semaphore.service -f

如果 Semaphore 运行在 Docker 容器中,您可以使用以下命令查看日志:

docker logs -f my-semaphore-container

这将以实时(流式)方式显示日志。


活动日志​

活动日志记录用户在 Semaphore 中执行的操作,包括:

  • 添加或删除资源(例如模板、清单、仓库)。
  • 添加或移除团队成员。

Pro 2.10 及更高版本 Pro​

Semaphore Pro 2.10+ 支持将活动日志和任务日志写入文件。要启用此功能,请在 config.json 中添加以下配置:

{
"log": {
"events": {
"enabled": true,
"logger": {
"filename": "./events.log"
// other logger options
}
},
"tasks": {
"enabled": true,
"logger": {
"filename": "./tasks.log"
// other logger options
},
"result_logger": {
"filename": "./task_results.log"
// other logger options
}
}
}
}

或者使用以下环境变量:

export SEMAPHORE_EVENT_LOG_ENABLED=True
export SEMAPHORE_EVENT_LOGGER={"filename": "./events.log"}

export SEMAPHORE_TASK_LOG_ENABLED=True
export SEMAPHORE_TASK_LOGGER={"filename": "./tasks.log"}

活动(事件)日志选项​

活动(事件)日志选项用于配置 Semaphore 如何将用户操作和系统事件记录到文件。这些设置控制事件日志的行为,包括是否启用、日志条目的格式以及具体的日志记录器配置。启用后,创建模板、管理团队等用户操作将按照这些设置写入指定的日志文件。

参数环境变量说明
enabledSEMAPHORE_EVENT_LOG_ENABLED启用事件日志写入文件。
formatSEMAPHORE_EVENT_LOG_FORMAT日志记录格式。留空表示原始格式,或设置为 json。
loggerSEMAPHORE_EVENT_LOGGER日志记录器选项。

任务日志选项​

任务日志选项用于配置 Semaphore 如何将任务执行详情记录到文件。这些设置控制与任务相关事件的日志记录,包括任务的启动、完成及其执行状态。启用后,所有任务操作及其结果将按照这些设置写入指定的日志文件,从而提供详细的任务执行历史审计记录。

参数环境变量说明
enabledSEMAPHORE_TASK_LOG_ENABLED启用任务日志写入文件。
formatSEMAPHORE_TASK_LOG_FORMAT日志记录格式。留空表示原始格式,或设置为 json。
loggerSEMAPHORE_TASK_LOGGER日志记录器选项。
result_loggerSEMAPHORE_TASK_RESULT_LOGGER日志记录器选项。

日志记录器选项​

参数类型说明
filename字符串写入日志的文件路径和名称。备份日志文件会保留在同一目录中。若为空,则在临时目录中使用 processname-lumberjack.log。
maxsize整数日志文件在轮转前的最大大小(MB)。默认为 100 MB。
maxage整数根据文件名中编码的时间戳保留旧日志文件的最大天数。注意,一天定义为 24 小时,由于夏令时、闰秒等原因,可能与日历日不完全一致。默认不根据时间删除旧日志文件。
maxbackups整数保留的旧日志文件的最大数量。默认保留所有旧日志文件(不过 MaxAge 仍可能导致它们被删除)。
localtime布尔值决定备份文件时间戳格式化时使用的时间是否为计算机的本地时间。默认使用 UTC 时间。
compress布尔值决定轮转后的日志文件是否使用 gzip 压缩。默认不压缩。

文件中的每一行都遵循以下格式:

2024-01-03 12:00:34 user=234234 object=template action=delete

任务历史​

Semaphore 将任务执行信息存储在数据库中。任务历史提供所有已执行任务的详细视图,包括其状态和日志。您可以通过 Web 界面实时监控任务或查看历史日志。

配置任务保留策略​

默认情况下,Semaphore 将所有任务存储在数据库中。如果您运行大量任务,它们可能会占用大量磁盘空间。

您可以通过以下任一方式配置每个模板保留的任务数量:

  1. 环境变量
    SEMAPHORE_MAX_TASKS_PER_TEMPLATE=30
  2. config.json 选项
    {
    "max_tasks_per_template": 30
    }

当任务数量超过此限制时,最早的任务日志会被自动删除。


Syslog 协议支持 Enterprise​

Semaphore 可以将活动日志和任务日志条目转发到外部 syslog 收集器,用于长期存储或集中监控。Syslog 转发默认处于禁用状态。

在 config.json 中配置 syslog 支持:

"syslog": {
"enabled": true,
"network": "udp",
"address": "logs.example.com:514",
"tag": "semaphore"
}

如果您不想编辑 JSON 文件,也可以通过环境变量设置相同的选项:

SEMAPHORE_SYSLOG_ENABLED=true
SEMAPHORE_SYSLOG_NETWORK=udp
SEMAPHORE_SYSLOG_ADDRESS=logs.example.com:514
SEMAPHORE_SYSLOG_TAG=semaphore

Syslog 选项​

参数环境变量说明
enabledSEMAPHORE_SYSLOG_ENABLED开启或关闭 syslog 转发。
networkSEMAPHORE_SYSLOG_NETWORK连接收集器所用的协议,例如 udp 或 tcp。
addressSEMAPHORE_SYSLOG_ADDRESS收集器地址,格式为 host:port。
tagSEMAPHORE_SYSLOG_TAG可选标识符,会添加到每条消息的开头。

更改这些值后,请重启 Semaphore 服务,以使新的 syslog 目标生效。


SIEM 集成​

登录和账户变更(例如新用户、角色和 API 令牌)可以记录在审计日志中。 Semaphore Pro 可以将其发送到 SIEM。

小结​

  • 服务器日志: 写入 stdout;在 systemd 下运行时可通过 journalctl 查看。
  • 活动日志和任务日志: 跟踪所有用户操作。Pro 2.10+ 可选择将其写入文件。
  • 任务历史: 存储实时和历史的任务执行日志。可按模板配置保留策略。
  • 审计日志: 记录登录和账户变更。默认关闭。

遵循这些指南可以确保您对 Semaphore UI 的运行情况有充分的可见性,同时控制存储使用量和日志保留。