自作インストーラーが RHEL6.3 から動かなくなった。調べると、rsyslog reload が失敗している。
[rhel63]# service rsyslog reload ; echo $?
3
上記には、「rsyslog は reload をサポートしなくなったから代わりに restart を使ってね」とあるが、それだけ言われても釈然としない。しかし実は、以前から身近なところに答えはあった。
[rhel62]# man rsyslogd
SIGNALS
<...snip...>
HUP This lets rsyslogd perform close all open files. Also, in v3 a
full restart will be done in order to read changed configuration
files. Note that this means a full rsyslogd restart is done.
This has, among others, the consequence that TCP and other con-
nections are torn down. Also, if any queues are not running in
disk assisted mode or are not set to persist data on shutdown,
queue data is lost. HUPing rsyslogd is an extremely expensive
operation and should only be done when actually necessary. Actu-
ally, it is a rsyslgod stop immediately followed by a restart.
Future versions will remove this restart functionality of HUP
(it will go away in v5). So it is advised to use HUP only for
closing files, and a "real restart" (e.g. /etc/rc.d/rsyslogd
restart) to activate configuration changes.
何か未来を予見してたような manpage 出た。「HUP で設定を再読み込みする機能は v5 から無くなるんだからね!」とのこと。どうやらこれは今更の話ではなく、rsyslog かねてよりの固い意志だったらしい。HUP 時に設定を再読み込みする $HUPisRestart という設定項目も、v5 になって消えたようだ。
The $HUPisRestart directive is supported by some early v5 versions, but has been removed in 5.1.3 and above.
ちなみに RHEL6.2 → RHEL6.3 でパッケージバージョンを比べると、
[rhel62]# rpm -q rsyslog
rsyslog-4.6.2-12.el6.x86_64
[rhel63]# rpm -q rsyslog
rsyslog-5.8.10-2.el6.x86_64
同じ RHEL6 中でパッケージのメジャーバージョンが上がるのって反則じゃね? 全ての元凶はここにある気がするのだが。
ともかく、ここに至ってようやく前述の Bugzilla での議論が理解できる。
reload: reload the configuration of the service without actually stopping and restarting the service (if the service does not support this, do nothing)
reload の定義は、「サービスを再起動することなく設定を再読み込みする」となっている。つまり、もはや rsyslog v5 の initscript には reload を実装する術がない。reload をサポートしなくなったというより、サポートできなくなったのだ。だから reload は未実装となり、これまでの流れを考えると、恐らく今後も復活することはないだろう。
結論として、rsyslog に関しては(どんなに不満でも)以下を受け入れるしかない。
- ファイルハンドルを閉じたいなら HUP シグナル。(kill -HUP <PID>)
- 設定を再読み込みさせたいなら再起動。(service rsyslog restart)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。