logの崩壊

logが崩壊した。
logにアクセスしに行くと、lessでもtaileでも「落ちる」。

理由は簡単であった。
debug情報を吐き出させまくっていた上、実運用に入っていたからだ。(馬鹿だ、本気のバカだ)
そのせいでApache2のerror_logが異様に大きくなっていたのである。
大き過ぎでlessだろうが何だろうが、止まってしまう。
mi.appすら止まった。
なんせ2.23GBバイトである。
rmまで止まった。(酷でぇなぁ…(sigh)

と言うことで、一応⌘+Rで外部起動して、Disk First Aidをかける。(一応ね、問題なかったし)
次にrm -R apache2でlogの格納フォルダごと消す。
最後にmkdir、touchでフォルダと中身のファイルを再作成。
これでApacheは動き出し、lessで中身も見られるようになった。
ただし、これで終わりではないのであ〜る。

httpd.confのlogLogLevel=warn(元々debugだった、そりゃ増える)へ変更。

Geminiさんの言うことには、httpd-ssl.confも要見直しだそうで。
中にある
#TransferLog “/opt/local/var/log/apache2/ssl_transfer_log”

#CustomLog “/opt/local/var/log/apache2/ssl_request_log” “%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”
はaccess_logとほぼ同一のものが出力されるらしい。
なので、その部分の出力をコメントアウトして削る。
これで一応Apache2の対処はお仕舞い、

次はpostfixである。
master.cfの中を見ると、

なんて一番後ろに-v(-vvも在るかも知れない)が憑いている。
これがlog吐き出しの冗長化という奴らしく、実運用では必要ないだろう。(もうチェックは終わっているのだし)

main.cfでは、最初にdebug_peer_level、debug_peer_listはコメントアウトする。
次に、lmtp_tls_loglevel、smtp_tls_loglevel、smtp_tls_loglevelをコメントアウト。(他にもsmtpd_tls_loglevelなんてのも在るらしい)
実際、default値は0なので、=0でも問題ないようだ。

# smtp_tls_loglevel (デフォルト: 0)
TLS アクティビティの追加の Postfix SMTP クライアント ログを有効にします。各ログ レベルには、より低いログ レベルでログに記録される情報も含まれます。
0 TLS アクティビティのログを無効にします。
1 TLS ハンドシェイクの完了時にサマリー メッセージのみをログに記録します。サーバー証明書の検証が不要な場合は、リモート SMTP サーバー証明書の信頼チェーン検証エラーはログに記録されません。Postfix 2.8 以前では、サマリー メッセージをログに記録し、無条件に信頼チェーン検証エラーをログに記録します。
2 また、Postfix TLS ライブラリで詳細なログ記録を有効にし、セッション キャッシュ操作をログに記録し、SSL ハンドシェイクの進行状況の OpenSSLログを有効にします。
3 また、TLS ネゴシエーション プロセスの 16 進数および ASCII ダンプをログに記録します。
4 また、STARTTLS 後の完全な送信の 16 進数および ASCII ダンプをログに記録します。

問題が発生した場合を除いて、”smtp_tls_loglevel = 2″ 以上を使用しないでください。ログレベル 4 の使用は強く推奨されません。

(上記はmain.cf内に書かれていたコメントをGoogle翻訳に直してもらったもの)

最後にdovecot
conf.d/10-logging.confの
#info_log_path = /opt/local/var/log/dovecot/info.log
#debug_log_path = /opt/local/var/log/dovecot/debug.log
上記に点をコメントアウト。
名前通りなら、infoとdebug情報がこちらに書き込まれる筈。
ならば、これら二つも巨大化必須やん。

他にも在ったりしないだろうな?(凄い不安感

速攻で見つけました。(^_^;;
auth_verbose = no
auth_verbose_passwords = no
この二つは大丈夫だった。(元からno)
だが、しかし
#verbose_ssl = yes
これは生きていた(速攻でコメントアウト)
上で、info_logとdebug_logを塞いじゃったので、error.logかsyslogかに行っちゃうかも。
外して安心、verbose。

と、ここまで来たのだから、/opt/local/var/logの各ディレクトリの中身をチェックして、巨大ログファイルがあれば設定を見直す。
と言うのをやってきました。
最後はmariadb。
この中のslow.logと言うのが9GBと今までの最大容量を誇りましたよ?
これがmariadbのmy.cnf中(実はちがうけど)の下記の項目。
こちらが現在。

こちらが以前。

と言うことで、全てをslow cqueryとしろ、そして書き出せ。
が実行され、ログがガンガン溜まっていったのだそうです。(Geminiさんに聞いた)
log_queries_not_using_indexesを0にしたこと、long_query_timeを2にしたことで、2秒以上かかるような重い処理だけ保存される(と思われる)ため、うちの環境じゃ先ず出なさそうです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

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