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

推薦する

ウェブデザイナー職の面接でよくある質問と回答

1. ASP.NET Web アプリケーションのテンプレートとは何ですか? それらの違いは何ですか?...

HTMLでvueとel​​ement-uiを直接参照する方法

コードは次のようになります。 <!DOCTYPE html> <html> ...

MAC で MySQL の初期パスワードを変更する方法

問題の説明: Macを購入し、初めてMySQLをインストールしました。初期パスワードが分かりません。...

HTML DOM入門_PowerNode Javaアカデミー

DOMとは何ですか? JavaScript を使用すると、HTML ドキュメント全体を再構築できます...

React でカレンダー コンポーネントを構築するためのステップ バイ ステップ ガイド

目次事業背景テクノロジーの活用技術的な問題デザインのアイデア😱 困惑と苦痛に満ちた顔🙄考え始める🌲デ...

Windows で MySQL 5.6 を 5.7 にアップグレードする方法

前面に書かれたMySQL をアップグレードする方法には、インプレース アップグレードと論理アップグレ...

MySQL をインストールするときに初期パスワードを忘れた場合のシンプルで効果的な解決策

MySQL をインストールすると初期パスワードが与えられますが、この初期パスワードは大文字と小文字の...

nginx のロケーションで URI の傍受を実装する方法

例:場所のルートとエイリアスルートディレクティブは、ルートによって設定されたディレクトリに検索ルート...

MySQL 集計統計データの低速クエリの最適化

前面に書かれた注文テーブル、アクセス記録テーブル、商品テーブルなど、日常生活でデータベースを操作する...

CentOS7で新しいデータディスクをマウントするための完全な手順

序文新しい VPS を購入しました。新しい VPS のデータ ディスクはデフォルトではシステムにマウ...

vue-cli でレスポンシブ レイアウトを実装する方法

フロントエンド開発を行うと、PCとモバイル端末の適応に必然的に直面することになります。このような問題...

LeetCode の SQL 実装 (175. 2 つのテーブルの結合)

[LeetCode] 175.2つのテーブルを結合する表: 人物+-------------+--...

Alibaba Cloud Server Linux システムは Tomcat を構築して Web プロジェクトを展開します

私は全体のプロセスを 4 つのステップに分けます。 JDKをダウンロードしてインストールするTomc...

CocosCreatorでクールなレーダーチャートを描く方法

目次序文プレビュー文章グラフィックコンポーネントプロパティ機能グリッドを描く軸角度を計算するスケール...

Nest.js パラメータ検証とカスタム戻りデータ形式の詳細な説明

0x0 パラメータ検証Nest.jsでは、パラメータ検証業務のほとんどをパイプライン方式で実装してい...