Docker で nginx のログレベルを調整する方法

Docker で nginx のログレベルを調整する方法

はじめに

最近、アプリケーションの 1 つが大量のログを生成し、そのほとんどが nginx の access_log であることがわかりました。デフォルトでは、アプリケーション ログを分析するために標準出力を es に収集しますが、その多くは access_log であり、実際のエラー ログを覆い隠してしまう可能性があります。そのため、これらの access_log を出力したくない場合があります。例は次のとおりです。

Nginx Dockerファイル

Github で Nginx の Dockerfile、docker-nginx/Dockerfile at master · nginxinc/docker-nginx (github.com) を調べました。

nginxはデフォルトでaccess_logとerror_logを標準出力にリンクしていることがわかります。そのため、dockerログやkubectlログでaccess_logを確認できます。

コンテナ内でcat /etc/nginx/nginx.confを実行すると、デフォルトのnginx設定が表示されます。

デフォルトの nginx 設定

上記から、error_log レベルが notice であることがわかります。必要に応じて、warn/error に設定することもできます。具体的なログ設定については、公式ドキュメントを参照してください。設定可能なログ レベルは、debug、info、notice、warn、error、crit、alert、emerg です。

access_log は、off を使用するか別のパスを使用して直接無効にすることができます。これにより、標準出力に直接出力されなくなり、ログの数もそれほど多くなくなります。

新しい会議

構成を変更する方法を知っておくと便利です。デフォルトの構成を新しい構成に置き換えるだけです。新しい構成は次のとおりです。

ユーザー nginx;
ワーカープロセスは自動です。

error_log /var/log/nginx/error.log エラー;
pid /var/run/nginx.pid;

イベント {
    ワーカー接続 1024;
}

http {
    /etc/nginx/mime.types を含めます。
    デフォルトタイプ アプリケーション/オクテットストリーム;

    access_log オフ;

    ファイル送信オン;
    #tcp_nopush オン;

    キープアライブタイムアウト65;

    #gzip オン;

    /etc/nginx/conf.d/*.conf を含めます。
}

次に、Dockerfile で、デフォルトの構成を新しい構成で上書きします。

# カスタム nginx 設定をコピーする
/conf/nginx.conf を /etc/nginx/nginx.conf にコピーします。

もっと

access_log を記録したいが直接記録したくない場合は、access_log を別のファイル名に設定することができます。設定済みの対応するファイルに書き込まれますが、標準出力に直接出力されないため、収集されたログの多くは access_log ではなくなります。

ログを記録したくない場合は、off 設定を直接使用して access_log を無効にすることができます。2xx/3xx を記録しないなど、選択的にログを記録したい場合は、他の状況も記録できます。nginx のドキュメントでも紹介されています。必要に応じて選択できます。

$status $loggable をマップします。
    ~^[23] 0;
    デフォルト 1;
}
access_log /path/to/access.log と組み合わせると、if=$loggable;

参考文献

  • https://notestack.io/public/configure-nginx-logging-in-a-docker-container/874f1253-cf1a-4c62-9d2d-467ab23c258d を参照してください。
  • https://docs.nginx.com/nginx/admin-guide/monitoring/logging/
  • https://github.com/nginxinc/docker-nginx/blob/master/stable/alpine/Dockerfile

Docker における nginx のログレベルを調整する方法についてはこれで終わりです。Docker における nginx のログレベルについての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerでnginxログをローリングするアイデアの詳細な説明

<<:  Reactベースのコンポーネントのカプセル化の実装手順

>>:  HTML のオートコンプリートを無効にして履歴を表示しないようにする

推薦する

VC6.0をWIN10にインストールすると使用できない問題の解決方法

VC6.0は確かに古すぎるVC6.0は昔の開発ツールです。現在のwin10では対応していません。しか...

MySQL 8.0.18 ハッシュ結合は左/右結合をサポートしていません 左と右の結合の問題

MySQL 8.0.18 では、インデックスが作成されていないフィールドに適用でき、等価値の関連付け...

nginx httpモジュールのデータ保存構造の概要

このセクションから、http モジュールの実装原理について説明します。http モジュールで非常に重...

CSS を使用して固定ナビゲーションと左右スライドを備えたスクロール バーを作成する方法

上に示すように、ナビゲーションは上部に固定されており、左右にスライドしてさらにオプションをクリックで...

純粋な CSS で DIV サスペンションを実装するサンプル コード (固定位置)

DIV フローティング効果 (固定位置) は CSS のみで実装されており、IE8、360、Fir...

MySQLは効率的なインデックス例分析を確立する

この記事では、例を使用して、MySQL で効率的なインデックスを作成する方法について説明します。ご参...

ES6の新機能に関する最もよく使われる知識ポイントのまとめ

目次1. キーワード2. 脱構築3. 文字列4. 正規化5. 配列6. 機能7. オブジェクト8.シ...

Dockerの急速な拡張の高度な方法

1. コマンド方式作成された Swarm クラスターで nginx サービスを実行し、--repli...

QTとJavaScript間のインタラクティブデータの実装

1. QTからJSへのデータフロー1. QTはJS関数を呼び出し、JSはパラメータを通じてQTの値を...

JavaScript で円形のプログレスバー効果を実装する

この記事では、円形のプログレスバー効果を実現するためのJavaScriptの具体的なコードを参考まで...

Docker+daocloudはフロントエンドプロジェクトの自動構築とデプロイを実現します

自動プロジェクト展開は大企業やユニコーン企業でよく使用され、手動でプロジェクトを展開するよりも効率的...

Reactはダブルスライダークロススライドを実装します

この記事では、Reactでダブルスライダークロススライドを実装するための具体的なコードを参考までに共...

Vue.js の計算プロパティ、監視プロパティ、ライフサイクルの詳細な説明

目次序文計算されたプロパティ計算プロパティの紹介入門ケース統計価格事例ゲッターメソッドとセッターメソ...

Linux lsof コマンドの使用方法の詳細な説明

lsof (開いているファイルのリスト) は、プロセスによって開かれたファイルを表示するツールです。...