24時間365日フルマネージドホスティングサービスのデイーネット

lsyncdのログをsystemdへ出力しない

どうも、こんにちは、ディーネットの山田です。

今回はlsyncdのログがsystemdに標準出力されるのを抑制する方法について紹介します。

はまったこととしては、lsyncdで定期的にファイルの同期を行うように設定したのはいいが lsyncd用のログファイルとは別にlsyncdがsystemdにログを標準出力するためmessages にも同じログが埋まっていきログを肥大化させることがありました。

この事象は、systemdが使われているCentOS7系で発生しCentOS6系では起きていなくて 対処方法について記載します。

現状の確認からやってきます

環境情報

  • OS: CentOS Linux release 7.4.1708 (Core)
  • lsyncd: lsyncd-2.2.2-1.el7.x86_64

設定ファイル

# cat /etc/lsyncd.conf
settings {
        logfile         = "/var/log/lsyncd/lsyncd.log",
        statusFile      = "/var/tmp/lsyncd",
        maxProcesses    = 4,
        nodaemon        = false,
        statusInterval  = 1,
        insist          = 1
}

sync {
        default.rsync,
        source          = "/demo1/",
        target          = "/demo2/",
        delete          = false,
        rsync           = {
                                archive = true,
                                verbose = true,
                                owner = true,
                                group = true,
                                perms = true,
                                times = true
        }
}

⇒"/demo1/"配下を"/demo2/"配下に同期するような設定です。

lsyncdのログ確認

# cat /var/log/lsyncd/lsyncd.log
Wed Jun  6 09:52:07 2018 Normal: Calling rsync with filter-list of new/modified files/dirs
/hogehoge2
/
Wed Jun  6 09:52:07 2018 Normal: Finished a list after exitcode: 0

⇒同期されたことが確認出来ますね

systemdにも標準出力されることを確認

# systemctl status lsyncd
● lsyncd.service - Live Syncing (Mirror) Daemon
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; disabled; vendor preset: disabled)
   Active: active (running) since 火 2018-06-05 18:17:51 JST; 15h ago
 Main PID: 4783 (lsyncd)
   CGroup: /system.slice/lsyncd.service
           mq4783 /usr/bin/lsyncd -nodaemon /etc/lsyncd.conf

 6月 06 09:52:07 localhost lsyncd[4783]: sending incremental file list
 6月 06 09:52:07 localhost lsyncd[4783]: ./
 6月 06 09:52:07 localhost lsyncd[4783]: hogehoge2
 6月 06 09:52:07 localhost lsyncd[4783]: sent 86 bytes  received 34 bytes  240.00 bytes/sec
 6月 06 09:52:07 localhost lsyncd[4783]: total size is 0  speedup is 0.00
# cat /var/log/messages | grep "lsyncd:"
Jun  6 09:52:07 localhost lsyncd: sending incremental file list
Jun  6 09:52:07 localhost lsyncd: ./
Jun  6 09:52:07 localhost lsyncd: hogehoge2
Jun  6 09:52:07 localhost lsyncd: sent 86 bytes  received 34 bytes  240.00 bytes/sec
Jun  6 09:52:07 localhost lsyncd: total size is 0  speedup is 0.00

⇒ログを見るのが楽しい人ならいいけど、不要な人は少しでも省きたい。

systemdに出力しない方法は?

  • lsyncdのserviceファイルに手を加えていきます

変更箇所

# vi /usr/lib/systemd/system/lsyncd.service
[Unit]
Description=Live Syncing (Mirror) Daemon
After=network.target

[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/lsyncd
ExecStart=/usr/bin/lsyncd -nodaemon $LSYNCD_OPTIONS
StandardOutput=null

[Install]
WantedBy=multi-user.target

⇒"StandardOutput=null"を追記して下さい。

設定の再読み込み

# systemctl daemon-reload

lsyncdの再起動

# systemctl restart lsyncd

これで、systemdには標準出力されなくなったはずなので、実際のログを確認していきましょう。

設定変更後のログ確認

lsyncdのログ確認

# cat /var/log/lsyncd/lsyncd.log
Wed Jun  6 10:10:47 2018 Normal: Calling rsync with filter-list of new/modified files/dirs
/hogehoge3
/
Wed Jun  6 10:10:47 2018 Normal: Finished a list after exitcode: 0

⇒こちらのログは、抑制対象外なので出力されているので問題なし

systemdにも標準出力されることを確認

# systemctl status lsyncd
● lsyncd.service - Live Syncing (Mirror) Daemon
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; disabled; vendor preset: disabled)
   Active: active (running) since 水 2018-06-06 10:07:16 JST; 4min 5s ago
 Main PID: 6474 (lsyncd)
   CGroup: /system.slice/lsyncd.service
           mq6474 /usr/bin/lsyncd -nodaemon /etc/lsyncd.conf

 6月 06 10:07:16 localhost systemd[1]: Started Live Syncing (Mirror) Daemon.
 6月 06 10:07:16 localhost systemd[1]: Starting Live Syncing (Mirror) Daemon...
# cat /var/log/messages | grep "lsyncd:"

⇒怖いぐらい何も出なくなりましたね

備考

あっそうそう、運用上の経験からですが"lsyncd-2.1.5-6.el7.x86_64"の場合 systemdにログが出力されないように、shellで無理やりlsyncdからの標準出力を 捨てているみたいです。

がしかし、lsyncdでのファイル同期が頻繁過ぎるとshellで扱えるメモリを超過したり メモリリークが発生することが見受けられるので、悩んでいる方はまず最新版にアップ デートしましょう。

バグレポートが報告されてます。
https://bugzilla.redhat.com/show_bug.cgi?id=1369274

sh: /usr/bin/sh: xrealloc: cannot allocate 18446744071562067968 bytes (24576 bytes allocated)

のようなログが出てlsyncdがプロセスダウンする方は必見です。。。

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar