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 のオートコンプリートを無効にして履歴を表示しないようにする

推薦する

フロントエンドページのポップアップマスクはページのスクロールを禁止します

フロントエンド開発者がよく遭遇する問題は、ユーザーに情報を提示するためのポップアップ ウィンドウを作...

dns-prefetch とは何ですか? フロントエンドの最適化: DNS の事前解決によりページ速度が向上します

目次背景1. dns-prefetch とは何ですか? 2. dns-prefetch を設定するに...

Linux で MySQL パスワードを忘れた場合の解決策

問題は次のとおりです。mysql -uroot -p コマンドを入力しましたが、パスワードを忘れてし...

EclipseでTomcatを作成する原理の詳細な説明

ローカルEclipse上にTomcatサーバーを作成する場合、 tomcaインストールディレクトリの...

MySQL アップグレードのベストプラクティス

MySQL 5.7 には、オンライン DDL、マルチソース レプリケーション、拡張された半同期、テー...

Vueの子コンポーネントが親コンポーネントのメソッドを呼び出す場合の詳細な説明

1. 子コンポーネントのthis.$parent.eventを通じて親コンポーネントメソッドを直接呼...

MySQL8のパスワードを忘れた場合の簡単な解決策

序文MySQL データベースのパスワードを忘れると、データベースに正常にアクセスできなくなり、パスワ...

ウェブページの背景色を制御する CSS コード

誰もが自分の Web ページの背景にふさわしい画像を見つけることに悩むことが多いと思います。これは事...

Element-UI の Select と Cascader にポップアップ下部アクション ボタンを追加する方法

下図のように、 selectポップアップレイヤーの下部に操作ボタンを配置するのが一般的な設計方法です...

MySQL 8.0.19 インストールチュートリアル

公式サイトからインストールパッケージをダウンロードします: mysql-8.0.19-linux-g...

Reactのコンポーネント作成方法のまとめ

目次1. 関数を使用してコンポーネントを作成する2. クラスを使用してコンポーネントを作成する3. ...

vue.config.js パッケージ最適化構成

Baiduの情報は多様すぎて目が回ります。心配しないでください。私はあなたのためにそれを体験しました...

MySQLのSQL文はインデックスを使用しません

インデックス集約を使用しない MySQL クエリご存知のとおり、インデックスを追加することはクエリ速...

データ URI スキームを使用して Web ページに画像を埋め込む方法の紹介

データ URI スキームを使用すると、HTML、CSS、Javascript などで使用できるインラ...

dockerエラーの原因分析 終了しました (1) 4分前

Dockerエラー1. 原因を確認するdocker ログ ネクサス2. エラーの原因OpenJDK ...