- PR -

ログローテイトはするが、ファイルにログを吐き出さない(FreeBSD:newsyslog.conf)

投稿者投稿内容
RUNNER_haru
会議室デビュー日: 2002/04/03
投稿数: 5
投稿日時: 2003-11-06 23:44
newsyslog.confにより、バーチャルホストのアクセスログをローテイトさせています。
ログファイルは、ちゃんと設定した周期でつくられるのですが、作成されてもログを書き出してくれません。
いろいろな情報を調べ検証しましたが、上手くいきません。
usr/local/apache/logs/error_log 644 4 * 24 Z /var/run/httpd.pid
上のように、/var/run/httpd.pidを書くと、ログを吐き出してくれるとありますが
これもうまくいきません。
別件で、httpd.confの設定変更を行い、restartすると、ログが吐き出し始めるとう現象だけわかってきました。
newsyslog.confで、restart状態にするにはどうしたらよいでしょうか?
technocore
常連さん
会議室デビュー日: 2003/11/07
投稿数: 20
投稿日時: 2003-11-09 00:14
newsyslog.confの第9フィールドにシグナルを
指定してみてはいかがでしょうか?

Apacheにログファイルが変更されたことを伝えるのに
「SIGUSR1」というシグナルを送る必要があります。
UNIX(POSIX) の SIGUSR1 の値が 30 番なのでその値を
書いてみてください。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2003-11-09 11:05
自分では使っていませんが...

> newsyslog.confの第9フィールドにシグナルを
> 指定してみてはいかがでしょうか?

man してみると、デフォルトでは SIGHUP を送る、とあります。
apache は(ほとんどの daemon がそうであるのと同じく)
SIGHUPを受け取ると再起動しますので、本来ならデフォルトのままで
期待の動作をするはずです。

してみると、pid が正しく取得できていないのではないかと
思うのですが...
/var/run/httpd.pid というファイルは実際に存在していますか?
存在していた場合、「ファイルの中身」と「psコマンドで表示される
apacheの親プロセスのID」は一致していますか?
おそらく、違うのではないかと。
その場合、httpd.conf をみて PidFile の設定がどうなっているか
確認してみて下さい。
technocore
常連さん
会議室デビュー日: 2003/11/07
投稿数: 20
投稿日時: 2003-11-09 11:30
>apache は(ほとんどの daemon がそうであるのと同じく)
>SIGHUPを受け取ると再起動しますので、本来ならデフォルトのままで
>期待の動作をするはずです。

変更した設定を反映させるためなら、SIGHUPを送ってApacheを強制的に
再起動させますが、

ログローテートの反映が目的なら、SIGUSR1を送って、やさしく再起動
する方が安全です。

SIGUSR1を送るという事は「apachectl graceful」でapacheを再起動
することになります。



以下、Apacheのマニュアルより。

graceful

Apache デーモンに SIGUSR1 を送ること
により段階的に再起動します。

デーモンが実行されていない場合は起動します。
現在利用中の接続は中断されないという点で通常の
再起動とは異なります。

副作用は、すぐには古いログファイルを閉じることができないことです。
これはログの交換スクリプトを使用する場合、実際の遅延が、
ログファイルを処理する前に閉じられることを保証するのに
必要かもしれないことを意味します。

このコマンドは Apache が停止しないことを確認するため
再起動を開始する前に configtest
によりファイルを自動的にチェックします。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2003-11-09 12:19
> ログローテートの反映が目的なら、SIGUSR1を送って、やさしく再起動
> する方が安全です。

SIGHUP と SIGUSR1 とでの、それぞれの apache の動作は存じております。
「安全」をどう解するか次第ですが、「未明等であろうと、一瞬たりとも
接続を切断するわけにはいかない」というような事情があるならば
SIGUSR1 を送るべきですが、ほとんどの人には必要ないものと思います。

現に、SIGHUP を送ろうとしてもそれが反映されていない以上、
問題点は「送るべきシグナルの種類」とは別のところにあると
解すべきでは?

[ メッセージ編集済み 編集者: ぽんす 編集日時 2003-11-09 12:19 ]
technocore
常連さん
会議室デビュー日: 2003/11/07
投稿数: 20
投稿日時: 2003-11-09 14:36
>SIGHUP と SIGUSR1 とでの、それぞれの apache の動作は存じております。

わたしはぽんすさんに指摘したつもりはなかったのですが、
ぽんすさんの発言を引用したのはまずかったですね。

>ほとんどの人には必要ないものと思います。

必要か不要か判断するのは、投稿者RUNNER_haruさんですね。

>現に、SIGHUP を送ろうとしてもそれが反映されていない以上、
>問題点は「送るべきシグナルの種類」とは別のところにあると
>解すべきでは?

最終的には、投稿者RUNNER_haruさんがトラブルを解決されるのが
目的なので、多くの情報・アドバイスを提供するのは
当然のことです。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2003-11-09 16:37
> 最終的には、投稿者RUNNER_haruさんがトラブルを解決されるのが
> 目的なので、多くの情報・アドバイスを提供するのは
> 当然のことです。

なるほど。私は「多すぎる情報は、本当に必要なことを見失わせる」
という考えに立つ者ですのでその意見には賛同しませんが、
いまそれについては争いません。

というわけで私からの情報を。
apache にある程度以上興味のある人ならばみな SIGUSR1 を捕捉した
際の動作のことを知っています。にもかかわらず、そういった人々の
多くがログを変える際に送っているのは SIGHUP です。すなわち、
多くの人が「ときどきは SIGHUP を送っておいたほうがいいんじゃ
ないかな」と考えていることを示しています。
自分がそれほど詳しくないのであれば、詳しい人がやっている方法に
従うのは悪い考えではないでしょう。
逆に、自分が使用しているオペレーティング環境について熟知しており、
「カーネル/ライブラリのどこにどんなバグが隠れているかすべて
押さえている」というくらいであれば、もちろん他人のやり方を参考に
する必要などありません。
RUNNER_haru
会議室デビュー日: 2002/04/03
投稿数: 5
投稿日時: 2003-11-11 13:28
ぽんすさん、technocoreさん、いろいろ教えていただいて本当にありがとうございます。
連絡が遅れて申し訳ありません。言い訳になってしまうのですが、ここ数日、抱えていた仕事が
かなり切羽詰った状態だったので、本当に失礼しました。

とりあえず、SIGUSR1の方でテストしてみます。
バーチャルサーバーを20件(かなりのアクセス数があるものも抱えています)ほど
管理しているので、テストするにも慎重になってしまいます。

また、結果をお知らせします。とりあえずは、お礼とお詫びまで。

スキルアップ/キャリアアップ(JOB@IT)