0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Certbot ログローテート設定

Posted at

概要

letsencryptのSSL証明書の自動更新ログが、かなり貯まっている事に気づいた。このログのローテート設定をしていなかったのでしておく。
管理しているサーバがたくさんあり、それぞれOSバージョンもcertbotバージョンも違うのメモしておく。
残すログファイルは約4ヶ月分の120世代にします。

サーバOSとCertbotバージョンの一覧

全部で11台、OS種類は4種類、Certbot種類は7種類でしたが、CentOS7.9以降はcertbotをパッケージ管理システム「Snap」でインストールしたので、自動更新で実行されるサービスファイルの場所と書き方が少し違うだけだった。なので設定方法としては2パターンです。

サーバOSとCertbotバージョン
サーバ名 OS Ver Certbot Ver
b-srv02 CentOS 7.5 certbot 1.11
k-srv10 CentOS 7.5 certbot 1.11
k-srv21 CentOS 7.5 certbot 1.11
k-srv25 CentOS 7.9 certbot 1.29.0
k-srv40 RockyLinux 8.7 certbot 2.7.4
k-srv41 RockyLinux 8.7 certbot 2.5.0
k-srv43 RockyLinux 8.7 certbot 2.5.0
k-srv44 RockyLinux 8.7 certbot 2.8.0
k-srv45 RockyLinux 8.7 certbot 2.7.4
k-srv46 RockyLinux 8.7 certbot 2.6.0
y-srv02 RockyLinux 8.6 certbot 2.6.0

ローテート設定

パターン1

certbotをsnapでインストールしてないパターンの設定手順です。

ログファイル数を確認

[root]# ls -al /var/log/letsencrypt/ |wc -l
925

不要ログを削除

不要な古いログ、末尾が121番以降ログを削除。
正規表現が得意でないので、121番号以降を一発で検索できないので分けて行う。

[root]# find /var/log/letsencrypt/ -type f |grep -E "letsencrypt.log.[2-9][0-9][0-9]"| xargs rm -f
[root]# find /var/log/letsencrypt/ -type f |grep -E "letsencrypt.log.1[3-9][0-9]"| xargs rm -f
[root]# find /var/log/letsencrypt/ -type f |grep -E "letsencrypt.log.12[1-9]"| xargs rm -f
[root]# ls -la /var/log/letsencrypt/letsencrypt.log* |wc -l
124

timerが実行するサービスファイルを探す

定期実行はtimerサービスで管理されているので、timerが実行するサービスファイルを探します。

[root]# ls -la /etc/systemd/system/timers.target.wants/
lrwxrwxrwx   1 root root   43  3月  6  2019 certbot-renew.timer -> /usr/lib/systemd/system/certbot-renew.timer

シンボリックリンクが貼られているファイルがあるディレクトリをみる

[root]# ls -la /usr/lib/systemd/system/ |grep cert
-rw-r--r--   1 root root   284  1月  6  2021 certbot-renew.service
-rw-r--r--   1 root root   195  1月  6  2021 certbot-renew.timer

サービスファイルを編集

/usr/lib/systemd/system/certbot-renew.serviceのExecStartのコマンドに-max-log-backups 120を追加します。

[root]# vi /usr/lib/systemd/system/certbot-renew.service
[Service]
EnvironmentFile=/etc/sysconfig/certbot
Type=oneshot
ExecStart=/usr/bin/certbot renew --noninteractive --no-random-sleep-on-renew $PRE_HOOK $POST_HOOK $RENEW_HOOK $DEPLOY_HOOK $CERTBOT_ARGS
↓ ※ここを変更
ExecStart=/usr/bin/certbot renew --noninteractive --max-log-backups 120 --no-random-sleep-on-renew $PRE_HOOK $POST_HOOK $RENEW_HOOK $DEPLOY_HOOK $CERTBOT_ARGS

daemon-reloadでサービスファイルを再読み込みさせる。
※これ忘れがち

[root]# systemctl daemon-reload

パターン2

certbotをsnapでインストールしたから、timerが実行するサービスファイル名が違うのと、サービスファイル内の変数ExecStartのコマンドが少し違うだけです。

timerが実行するサービスファイルを探す

[root]# ls -la /etc/systemd/system/timers.target.wants/
lrwxrwxrwx   1 root root   44  8月  3  2022 snap.certbot.renew.timer -> /etc/systemd/system/snap.certbot.renew.timer

[root]# ls -la /etc/systemd/system/ |grep cert
-rw-r--r--   1 root root 12288  8月  4  2022 .snap.certbot.renew.timer.swp
-rw-r--r--   1 root root   479  8月  3  2022 snap.certbot.renew.service
-rw-r--r--   1 root root   321  3月 29  2023 snap.certbot.renew.timer
-rw-r--r--   1 root root   302  8月  3  2022 var-lib-snapd-snap-certbot-2192.mount

サービスファイルを編集

同じ様にExecStartのコマンドに-max-log-backups 120を追加します。

[root]# vi /etc/systemd/system/snap.certbot.renew.service
[Service]
EnvironmentFile=-/etc/environment
ExecStart=/usr/bin/snap run --timer="00:00~24:00/2" certbot.renew
↓ ※ここを変更
ExecStart=/usr/bin/snap run --timer="00:00~24:00/2" certbot.renew --max-log-backups 120

daemon-reloadでサービスファイルを再読み込みさせる。
※これ忘れがち

[root]# systemctl daemon-reload

備考

あとは数日後にログの数が120個までになっているか確認する。

オプション --max-log-backups を付けて即実行

snap run certbot.renew --max-log-backups 120

で確認するが、これはtimerが実行したわけではないので、変数ExecStart内のコマンドの書き方があっているか分からないので、やっぱり数日後に確認するしかない。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?