Debian 13 における ntpsec プロセス消失とディレクトリ要件

Debian 13 において ntpsec プロセスの動作に問題があり、起動中にプロセスが消失する問題が発生していた。


背景

環境は Debian 13。NTP デーモンとして ntpsec を採用している。ある時点から、起動中に ntpd のプロセスが存在せず、時刻同期が停止していることに気付いた。
監視(プロセス数の可視化)でも断続的にゼロが観測され、実体としても起動していないケースが確認された。


目的

  • なぜ起動中に ntpd が不在になるのかを特定する
  • 再発を抑止し、再起動後も安定して起動する状態に戻す
  • 現象の知見を残し、同様環境での初動を短縮する

事象

journalctl から、起動時に次のエラーが繰り返し出力されていた。

statistics directory /var/log/ntpsec/ does not exist or is unwriteable, error No such file or directory
Stopped ntpsec.service - Network Time Service.

この後に ntpd のプロセスが存在しない状態となる。


環境

  • OS: Debian 13 (trixie)
  • パッケージ: ntpsec 1.2.3
  • 設定: /etc/ntpsec/ntp.conf はデフォルトに準拠。statsdir や statistics はいずれもコメントアウト(統計出力は無効)

調査過程

  1. サービス状態と PID の有無を確認。再発時は active でなく、MainPID も空であることを確認。
  2. kernel/journald を含む直近ログを走査し、OOM や segfault は出ていないことを確認。
  3. 競合確認。systemd-timesyncd や chrony は無効化済みで、123/udp を占有する他プロセスも無し。
  4. 設定ファイルを精査。/etc/ntpsec/ntp.conf に追加 include は無く、statsdir と statistics はコメントアウト(無効)。
  5. それでも ntpd は /var/log/ntpsec の不在を理由に終了しているため、ディレクトリの存在要件が実質的に働いていると判断。

原因仮説と検証

  • 仮説A: Debian 13 の ntpsec 1.2.3 における回帰または挙動変更により、統計無効でも起動時に /var/log/ntpsec の存在をチェックしている。
  • 仮説B: 設定は無効でも、サービス初期化のどこかで統計ディレクトリを参照し、存在しない場合にエラー扱いで停止している。

対処として、/var/log/ntpsec を作成し所有権とパーミッションを適切に設定したところ、以後は起動中のプロセス消失がなくなった。


対処(今回の運用方針)

統計出力は無効のままにしつつ、/var/log/ntpsec のみ作成した。パーミッションは 750。

sudo install -d -o ntpsec -g ntpsec -m 750 /var/log/ntpsec

この状態でも、統計が無効であればディレクトリには何も出力されない(空のまま)。


比較検討(Debian 12 との違い)

  • Debian 12 では、デフォルト設定が同様に統計無効であり、/var/log/ntpsec 不在が致命にならず、サービスは通常通り起動していた。
  • 今回の事象は Debian 13 でのみ再現。バージョン依存の挙動差である可能性が高い。

恒久策の選択肢

  • 手動作成を継続(本件ではこれを採用)。
  • systemd の override で LogsDirectory=ntpsec を指定し、自動生成を保証する(将来の再発防止重視の場合)。

運用上のメモ

  • 監視(プロセス数)でゼロを検出したら、まずは systemctl status と journalctl を確認し、/var/log/ntpsec の存在と所有権を点検する。
  • 統計出力を有効化する場合は、statsdir の有効化とディレクトリの権限整備をセットで行う。

採取したコマンド群

journalctl -u ntpsec --since "2 days ago" -g 'fatal|error|segfault|killed|Stopped|Restarting|PANIC'
journalctl -k --since "2 days ago" -g 'oom|Out of memory|audit'
systemctl is-active ntpsec.service
systemctl show ntpsec.service -p MainPID
ss -ulpn | grep ':123 '
cat /etc/ntpsec/ntp.conf

結論

  • Debian 13 の ntpsec 1.2.3 環境で、統計無効設定にもかかわらず、/var/log/ntpsec 不在がプロセス消失の直接原因となっていた。
  • /var/log/ntpsec を所有権 ntpsec:ntpsec、パーミッション 750 で作成することで安定化した。
  • 統計が無効であるため、ディレクトリには実際の出力は行われていない。

補足:関連情報

  • 関連する Debian BTS の議論では、/var/log/ntpsec 不在に起因するエラー報告 (Reference #1049424 #1066081) が散見される。将来的にパッケージ側での対処(unit の LogsDirectory 指定や postinst での作成)が進む可能性がある。

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)