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

推薦する

デザイン: 意志の強いデザイナー

<br />長年の専門的なアートデザイン教育を通じて「美とは何か」を学びましたが、「美を...

マークアップ言語 - HTML を学んだ後に何を学ぶべきか?

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

Mysql5.7 以降での ONLY_FULL_GROUP_BY エラーの解決方法

最近、開発プロセス中に、プロジェクト開発環境に接続されている MySQL データベースは Aliba...

Windows 版 MySQL のインストール、起動、基本設定に関する詳細なグラフィック チュートリアル

ダウンロード:ステップ 1: ウェブサイトを開きます (ダウンロードするには公式ウェブサイトにアクセ...

MySQL データベースの最適化: テーブルとデータベースのシャーディング操作の詳細な説明

この記事では、例を使用して、MySQL データベースの最適化のためのテーブルおよびデータベース シャ...

イメージのパッケージ化とワンクリック展開を実現するためにDockerを組み合わせたアイデア

1. サーバーにDockerをインストールする yumでdockerをインストール設定ファイルを変更...

Docker コンテナのカスタム ホストのネットワーク アクセス操作

docker-compose.yml に extra_hosts キーワードを追加すると、コンテナの...

最新の JavaScript で非同期タスクを書く方法

序文この記事では、非同期 JavaScript の進化と、それがコードの記述方法にどのような変化をも...

CentOS 7.4 に MySQL 5.7 を手動でインストールする方法

MySQL データベースは、特に JAVA プログラマーの間で広く使用されています。クラウド データ...

Win10 VM 仮想マシンに Mac OS10.14 を完璧にインストールする (グラフィック チュートリアル)

最近、Apple の記者会見を見てとても興奮したので、Mac システムを体験して Apple の素晴...

MySQL インデックスの最適化: ページング探索の詳細な紹介

目次MySQL インデックス最適化ページングの調査ケース1ケース2 MySQL インデックス最適化ペ...

WeChatアプレットコンポーネント開発:視覚的な映画座席選択機能

目次1. はじめに1. コンポーネントデータ2. コンポーネントページのレイアウト1. ロゴエリアの...

ie8/ie9/ie10/ie11 chrome firefox を区別するための CSS コード

ウェブサイトの互換性のデバッグは本当に面倒です。今日のウェブサイト デザイナーは、以前よりもはるかに...

ユニアプリとミニプログラム(画像とテキスト)を下請けする方法を教えます

目次1. ミニプログラム下請け2. Uniapp 下請けアプレット下請けの手順: 1. manife...

現在のマウススライドの座標を取得するVue+openlayer5メソッド

序文: Vue プロジェクトで現在のマウスの座標を取得するにはどうすればよいでしょうか。ここで共有す...