メインコンテンツまでスキップ

ログ

Semaphore はサーバーログを stdout に書き出し、タスクログとアクティビティログをデータベースに保存します。これにより重要なログ情報が一元化され、ログファイルを個別にバックアップする必要がなくなります。ファイルシステムに保存されるのはキャッシュデータのみです。


サーバーログ​

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ログレコードの形式。raw 形式では空のままにするか、json を指定します。
loggerSEMAPHORE_EVENT_LOGGERロガーのオプション。

タスクログのオプション​

タスクログのオプションでは、Semaphore がタスク実行の詳細をファイルに記録する方法を設定できます。これらの設定は、タスクの開始、完了、実行ステータスなど、タスク関連イベントのログ出力を制御します。有効にすると、すべてのタスク操作とその結果が、これらの設定に従って指定されたログファイルに書き込まれ、タスク実行履歴の詳細な監査証跡が得られます。

パラメータ環境変数説明
enabledSEMAPHORE_TASK_LOG_ENABLEDタスクログのファイル出力を有効にします。
formatSEMAPHORE_TASK_LOG_FORMATログレコードの形式。raw 形式では空のままにするか、json を指定します。
loggerSEMAPHORE_TASK_LOGGERロガーのオプション。
result_loggerSEMAPHORE_TASK_RESULT_LOGGERロガーのオプション。

ロガーのオプション​

パラメータ型説明
filename文字列ログを書き込むファイルのパスと名前。バックアップログファイルは同じディレクトリに保持されます。空の場合は、一時ディレクトリ内の processname-lumberjack.log が使用されます。
maxsize整数ローテーションされるまでのログファイルの最大サイズ(メガバイト単位)。デフォルトは 100 メガバイトです。
maxage整数ファイル名に含まれるタイムスタンプに基づいて、古いログファイルを保持する最大日数。1 日は 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_ENABLEDsyslog 転送のオン/オフを切り替えます。
networkSEMAPHORE_SYSLOG_NETWORKコレクターへの接続に使用するプロトコル(udp や tcp など)。
addressSEMAPHORE_SYSLOG_ADDRESShost:port 形式のコレクターアドレス。
tagSEMAPHORE_SYSLOG_TAGすべてのメッセージの先頭に付加される任意の識別子。

これらの値を変更した後は、新しい syslog の送信先を適用するために Semaphore サービスを再起動してください。


SIEM 連携​

サインインとアカウントの変更(新しいユーザー、ロール、API トークンなど)は監査ログに記録できます。 Semaphore Pro は監査ログを SIEM に送信できます。

まとめ​

  • サーバーログ: stdout に書き出されます。systemd 配下で実行している場合は journalctl で確認できます。
  • アクティビティログとタスクログ: すべてのユーザー操作を記録します。Pro 2.10 以降では、オプションでファイルに書き出すこともできます。
  • タスク履歴: リアルタイムおよび過去のタスク実行ログを保存します。保持数はテンプレートごとに設定できます。
  • 監査ログ: サインインとアカウントの変更を記録します。既定では無効です。

これらのガイドラインに従うことで、ストレージ使用量とログの保持を制御しつつ、Semaphore UI の動作を適切に把握できます。