Simple Log Serviceを使用すると、NGINXログを収集し、複数のディメンションでログを分析できます。 Logtail設定を作成してログを収集できます。 このトピックでは、Simple Log Serviceコンソールを使用してNGINX設定モードでLogtail設定を作成する方法について説明します。
前提条件
プロジェクトと Logstore が作成されていること。 詳細については、「プロジェクトの作成」および「Logstoreの作成」をご参照ください。
Logtailがインストールされているサーバーは、リモートサーバーのポート80とポート443に接続できます。
ログを収集するサーバーは、継続的にログを生成します。
重要Logtailは増分ログのみを収集します。 適用されたLogtail設定がサーバーに配信された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。
背景情報
NGINX設定モードでは、Logtailはlog_formatパラメーターの定義に基づいてログコンテンツを構造化します。 NGINXログを収集する前に、/etc/nginx/nginx.confファイルでlog_formatおよびaccess_logパラメーターを設定する必要があります。 log_formatはログ形式を指定し、access_logはNGINXログファイルが格納されるディレクトリを指定します。
ログ形式とストレージパス
次の例では、log_formatとaccess_logのデフォルト値が使用されます。
log_formatメイン '$remote_addr - $remote_user [$time_local] "$request"' '$request_time $request_length ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"'; access_log /var/logs/nginx/access.logメイン
次の表に、ログフィールドを示します。
フィールド
説明
remote_addr
クライアントのIPアドレス。
remote_user
クライアントがリクエストを送信するために使用するユーザー名。
time_local
サーバーのシステム時刻。 値は [] で囲む必要があります。
request
リクエストのURLとHTTPプロトコル。
request_time
リクエストの処理に必要な時間。 単位は秒です。
request_length
リクエストの長さ。 リクエスト行、リクエストヘッダー、リクエスト本文がすべてカウントされます。
status
リクエストのステータス。
body_bytes_sent
クライアントに送信される応答のバイト数。 レスポンスヘッダーはカウントされません。
http_referer
ソースwebページのURL。
http_user_agent
クライアントのブラウザ情報。
生ログ
NGINXは、log_formatパラメーターの定義に基づいてログを生成します。
192.168.1.2 - - [10/Jul/2022:15:51:09 + 0800] "GET /ubuntu.iso HTTP/1.0" 0.000 129 404 168 "-" "Wget/1.11.4 Red Hat modified"
収集されたログ
手順
デフォルトでは、ログファイルからログを収集するために使用できるLogtail設定は1つだけです。 複数のLogtail設定を使用してログファイルからログを収集する方法の詳細については、「複数のLogtail設定を使用してログファイルからログを収集する場合の対処方法」を参照してください。
Log Serviceコンソールにログインします。
[データのインポート] セクションで、[Nginx-テキストログ] を選択します。
プロジェクトとLogstoreを選択します。 そして、[次へ] をクリックします。
マシングループを作成します。
マシングループが利用可能な場合は、[既存のマシングループを使用] をクリックします。
使用可能なマシングループがない場合は、次の手順を実行してマシングループを作成します。 この例では、Elastic Compute Service (ECS) インスタンスが使用されています。
[ECSインスタンス] タブで、[手動でインスタンスを選択] を選択します。 次に、使用するECSインスタンスを選択し、[作成] をクリックします。
詳細については、「ECSインスタンスへのLogtailのインストール」をご参照ください。
重要Log Serviceとは異なるAlibaba Cloudアカウント、データセンター内のサーバー、またはサードパーティのクラウドサービスプロバイダーのサーバーに属するECSインスタンスからログを収集する場合は、Logtailを手動でインストールする必要があります。 詳細については、「LinuxサーバーにLogtailをインストールする」または「WindowsサーバーにLogtailをインストールする」をご参照ください。
Logtailを手動でインストールした後、サーバーのユーザー識別子を設定する必要があります。 詳細については、「ユーザー識別子の設定」をご参照ください。
Logtailをインストールしたら、[インストールの完了] をクリックします。
[マシングループの作成] ステップで、[名前] パラメーターを設定し、[次へ] をクリックします。
Log Serviceでは、IPアドレスベースのマシングループとカスタム識別子ベースのマシングループを作成できます。 詳細については、「IPアドレスベースのマシングループの作成」および「カスタム識別子ベースのマシングループの作成」をご参照ください。
[ソースサーバーグループ] から新しいマシングループを選択し、マシングループを [応用サーバーグループ] に移動します。 [次へ] をクリックします。
重要マシングループを作成した直後にマシングループを適用すると、マシングループのハートビートステータスがFAILになる可能性があります。 この問題は、マシングループがLog Serviceに接続されていない場合に発生します。 この問題を解決するには、[自動再試行] をクリックします。 問題が解決しない場合は、「Logtailでハートビート接続が検出されない場合の対処方法」をご参照ください。
Logtail設定を作成し、[次へ] をクリックします。
パラメーター
説明
設定名
Logtail設定の名前。 名前はプロジェクト内で一意である必要があります。 Logtail設定を作成した後、Logtail設定の名前を変更することはできません。
[その他の構成のインポート] をクリックすると、既存のLogtail構成をインポートできます。
ログのパス
ログファイルのディレクトリと名前。 サーバー上のログの場所に基づいて、このパラメーターを設定します。
Linuxオペレーティングシステムでログパスを指定する場合、パスはスラッシュ (/) で始まる必要があります。 例: /apsara/nuwa/.../app.Log
Windowsオペレーティングシステムでログパスを指定する場合、パスはドライブ文字で始まる必要があります。 例: C:\Program Files\Intel\...\*.Log
正確なディレクトリと正確な名前を指定できます。 ワイルドカード文字を使用して、ディレクトリと名前を指定することもできます。 詳細については、「ワイルドカードの一致」をご参照ください。 Log Serviceは、指定されたディレクトリのすべてのレベルで、指定された条件に一致するログファイルをスキャンします。 例:
/apsara/nuwa/**/*.logを指定した場合、Log Serviceは名前にが付いているログファイルからログを収集します。/apsara/nuwaディレクトリとディレクトリの再帰サブディレクトリにログインします。
/var/logs/app_*/*.logを指定した場合、Log Serviceは次の条件を満たすログファイルからログを収集します。ファイル名の接尾辞はです。ログを ファイルは、/var/logsディレクトリ下のサブディレクトリ、またはサブディレクトリの再帰サブディレクトリに格納されます。 サブディレクトリの名前は、app_* パターンと一致します。
/var/log/nginx/**/access * を指定した場合、Log Serviceは、名前が /var/log/nginxディレクトリのaccessで始まるログファイルと、ディレクトリの再帰的なサブディレクトリからログを収集します。
説明このパラメーターを設定すると、アスタリスク (*) または疑問符 (?) のみをワイルドカード文字として使用できます。
アスタリスク (*) を使用して、複数の文字を一致させることができます。
疑問符 (?) を使用して、1つの文字を一致させることができます。
ブラックリスト
ブラックリストをオンにする場合、特定のディレクトリまたはファイルをログ収集から除外するようにブラックリストを設定する必要があります。 正確なディレクトリとファイル名を指定できます。 ワイルドカード文字を使用して、ディレクトリとファイル名を指定することもできます。 例:
[フィルタータイプ] 列のドロップダウンリストから [ディレクトリでフィルターする] を選択し、コンテンツに /home/admin/dir1と入力すると、/home/admin/dir1ディレクトリ内のすべてのファイルがスキップされます。
[フィルタータイプ] 列のドロップダウンリストから [ディレクトリでフィルターする] を選択し、[コンテンツ] に /home/admin/dir * と入力すると、/home/admin/ ディレクトリの名前の先頭にdirが付いているすべてのサブディレクトリのファイルがスキップされます。
[フィルタータイプ] 列のドロップダウンリストから [ディレクトリでフィルターする] を選択し、コンテンツに /home/admin/*/dirと入力した場合、/home/admin/ ディレクトリの各サブディレクトリにあるすべてのファイルがスキップされます。
たとえば、/home/admin/a/dirディレクトリのファイルはスキップされますが、/home/admin/a/b/dirディレクトリのファイルはスキップされません。
[フィルターの種類] 列のドロップダウンリストから [ファイルでフィルター] を選択し、コンテンツに /home/admin/private *.logと入力した場合、名前の接頭辞がprivate、接尾辞が /home/admin/ ディレクトリへのログインはスキップされます。
[フィルタータイプ] 列のドロップダウンリストから [ファイルでフィルター] を選択し、[コンテンツ] に /home/admin/private */*_inner.logと入力した場合、/home/admin/ ディレクトリのプレフィックスがprivateであるサブディレクトリ内の_inner.logという名前のファイルはすべてスキップされます。
たとえば、/home/admin/private/app_inner.logファイルはスキップされますが、/home/admin/private/app.logファイルはスキップされません。
説明このパラメーターを設定すると、アスタリスク (*) または疑問符 (?) のみをワイルドカード文字として使用できます。
アスタリスク (*) を使用して、複数の文字を一致させることができます。
疑問符 (?) を使用して、1つの文字を一致させることができます。
ワイルドカード文字を使用してログパスを設定し、指定したディレクトリ内の一部のディレクトリをスキップする場合は、ブラックリストを設定して完全なディレクトリを入力する必要があります。
たとえば、ログパスを /home/admin/app * /Log /*.logに設定し、/home/admin/app1 * ディレクトリ内のすべてのサブディレクトリをスキップする場合は、[ディレクトリでフィルター] を選択し、/home/admin/app1 */** と入力してブラックリストを設定する必要があります。 /home/admin/app1 * と入力した場合、ブラックリストは有効になりません。
ブラックリストが使用されているとき、計算オーバーヘッドが生成される。 ブラックリストには最大10エントリを追加することを推奨します。
スラッシュ (/) で終わるディレクトリパスは指定できません。 たとえば、パスを /home/admin/dir1/ に設定した場合、ディレクトリのブラックリストは有効になりません。
Docker ファイル
Dockerコンテナからログを収集する場合は、Dockerファイルをオンにして、コンテナのディレクトリとタグを指定する必要があります。 Logtailはコンテナを監視して、コンテナが作成されたか破棄されたかを確認し、タグでコンテナをフィルタリングし、フィルタリング結果のコンテナからログを収集します。 詳細については、「Log Serviceコンソールを使用してDaemonSetモードでコンテナテキストログを収集する」をご参照ください。
モード
ログ収集モード デフォルトでは、NGINX設定モードが表示されます。 モードを変更できます。
NGINXログの設定
NGINX設定ファイルで指定されたログ設定セクション。 セクションはlog_formatで始まります。 例:
log_formatメイン '$remote_addr - $remote_user [$time_local] "$request"' '$request_time $request_length ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"';
詳細については、「バックグラウンド情報」をご参照ください。
正規表現
Simple Log Serviceは、NGINX Log Configurationフィールドに入力した内容に基づいて正規表現を生成します。
ログのサンプル
実際のシナリオから収集されるサンプルNGINXログ。 例:
192.168.1.2 - - [10/Jul/2022:15:51:09 + 0800] "GET /ubuntu.iso HTTP/1.0" 0.000 129 404 168 "-" "Wget/1.11.4 Red Hat modified"
Simple Log Serviceはサンプルログを使用して、NGINX log Configurationパラメーターの値が生成された正規表現と一致するかどうかを確認します。 サンプルログを入力したら、[検証] をクリックします。
検証が成功すると、システムはNGINXキーセクションの [値] フィールドに抽出された値を自動的に入力します。
NGINXキー
NGINX Log ConfigurationおよびLog Sampleパラメーターの値に基づいて自動的に生成されるキーと値のペア。
ドロップログの解析に失敗
[ログの解析に失敗した削除] をオンにした場合、解析に失敗したログはLog Serviceにアップロードされません。
[ログの解析に失敗した削除] をオフにした場合、解析に失敗したログは、__raw__ フィールドの値としてLog Serviceにアップロードされます。
監視ディレクトリの最大深度
監視するサブディレクトリのレベルの最大数。 サブディレクトリは、指定したログファイルディレクトリにあります。 有効な値: 0 ~ 1000 値0は、指定したログファイルディレクトリのみを監視することを示します。
ビジネス要件に基づいて詳細設定を構成できます。 詳細設定は変更しないことをお勧めします。 詳細設定のパラメーターを次の表に示します。
パラメーター
説明
プラグイン処理の有効化
ログが複雑で、NGINXモード、フル正規表現モード、JSONモードなどのモードで解析できない場合は、[プラグイン処理の有効化] をオンにして、ログを解析するLogtailプラグインを追加できます。
Log Serviceは、選択した収集モードに基づいてデフォルトのプラグイン設定を生成します。 processorsフィールドを設定することで、他のプラグイン設定を既定のプラグイン設定に追加できます。 詳細については、「概要」をご参照ください。
重要[プラグイン処理の有効化] をオンにすると、[生ログのアップロード] 、[タイムゾーン] 、[ログの解析に失敗したドロップ] 、[フィルタ設定] 、[エントリのアップロードが不完全 (デリミターモード)] などのパラメーターが使用できなくなります。
生ログのアップロード
[生ログのアップロード] をオンにすると、各生ログは、生ログから解析されたログとともに、__Raw__ フィールドの値としてLog Serviceにアップロードされます。
Topic の生成方法
トピック生成モードを選択します。 詳細については、「ログトピック」をご参照ください。
Null-トピックを生成しない: このモードでは、トピックフィールドは空の文字列に設定されます。 ログを照会するときに、トピックを指定する必要はありません。 デフォルト値です。
マシングループトピック属性: このモードでは、トピックはマシングループレベルで設定されます。 異なるサーバーによって生成されたログを区別する場合は、このモードを選択します。
ファイルパス正規表現: このモードでは、カスタム正規表現フィールドで正規表現を指定する必要があります。 ログパスの正規表現に一致する部分がトピックとして使用されます。 異なるユーザーまたはインスタンスによって生成されたログを区別する場合は、このモードを選択します。
ログファイルのエンコーディング
ログファイルのエンコード形式。 有効な値: utf8とgbk。
タイムゾーン
ログを収集するタイムゾーンを選択します。 有効な値:
システムタイムゾーン: この値を選択すると、Logtailがインストールされているサーバーまたはコンテナーのタイムゾーンが使用されます。
カスタム: この値を選択する場合、ビジネス要件に基づいてタイムゾーンを選択する必要があります。
タイムアウト
ログファイルが指定された期間内に更新されない場合、Logtailはモニタリングがタイムアウトしたと見なします。
Never: すべてのログファイルは継続的に監視され、監視がタイムアウトすることはありません。
30 分タイムアウト: ログファイルが30分以内に更新されない場合、Logtailはモニタリングがタイムアウトしたと見なし、ファイルをモニタリングしなくなります。
30 Minute Timeoutを選択した場合、Maximum Timeout Directory Depthパラメーターを設定する必要があります。 有効な値: 1 ~ 3。
フィルターの設定
ログの収集に使用するフィルター条件を指定します。 フィルター条件は、KeyとRegexで構成されます。 Keyは必須フィールドの名前を指定し、Regexはフィルタリングに使用される正規表現を指定します。 フィルター条件間の論理演算子はANDです。
重要シンプルモードでは、コンテンツフィールドのみが生成されます。 フィルター条件を指定する場合、Keyはcontentのみに設定できます。
指定する正規表現は、フルテキスト照合のみをサポートします。 キーワードマッチングはサポートされていません。
例:
指定されたフィルター条件に一致するログを収集します。
Keyをlevelに設定し、RegexをWARNING | ERRORに設定した場合、levelの値がWARNINGまたはERRORであるログのみが収集されます。
Keyをcontentに設定し、Regexをに設定した場合。* 05\/Jan\/2023.* の場合、contentの値に05/Jan/2023が含まれるログのみが収集されます。
指定されたフィルター条件に一致しないログを除外します。
Keyをlevelに設定し、Regexを ^(?!.*(INFO | DEBUG)).* に設定した場合、levelの値にINFOまたはDEBUGが含まれるログは除外されます。
Keyをlevelに設定し、Regexを ^(?!(INFO | DEBUG)$).* に設定した場合、levelの値がINFOまたはDEBUGであるログは除外されます。
Keyをurlに設定し、Regexをに設定した場合。* ^(?!.*(healthcheck)).* urlの値にhealthcheckが含まれているログは除外されます。
正規表現を指定する方法の詳細については、「正規表現の使い方」をご参照ください。
最初のコレクションのサイズ
Logtailがファイルからログを最初に収集するときに、Logtailがログファイルから収集できるデータのサイズを指定します。 First Collection Sizeのデフォルト値は1024です。 (単位:KB)
ファイルサイズが1,024 KB未満の場合、Logtailはファイルの先頭からデータを収集します。
ファイルサイズが1,024 KBを超える場合、Logtailはファイル内の最後の1,024 KBのデータを収集します。
ビジネス要件に基づいて最初のコレクションサイズを指定できます。 有効な値: 0 ~ 10485760 (単位:KB)
その他の設定
Logtailの拡張設定を指定します。 詳細については、「advanced」をご参照ください。
たとえば、現在のLogtail設定を使用して、異なるLogtail設定に一致するログファイルからログを収集し、ログが集計されてlog Serviceに送信される間隔を指定する場合は、現在のLogtailの拡張設定を指定できます。
{ "force_multiconfig": true、 "batch_send_interval": 3 }
[次へ] をクリックしてLogtail設定の作成を完了します。 その後、Log Serviceはログの収集を開始します。
説明Logtail設定を有効にするには、最大3分かかります。
Logtailを使用してログを収集するときにエラーが発生した場合は、「Logtail収集エラーの表示方法」をご参照ください。 およびSimple Log Serviceがログを収集するときに発生する可能性のある一般的なエラーのトラブルシューティング方法を教えてください。
データをプレビューし、インデックスを設定し、[次へ] をクリックします。
デフォルトでは、Log Serviceでフルテキストインデックスが有効になっています。 手動モードまたは自動モードで収集したログに基づいてフィールドインデックスを設定することもできます。 自動モードでフィールドインデックスを設定するには、[自動インデックス生成] をクリックします。 これにより、Log Serviceは自動的にフィールドインデックスを作成します。 詳細については、「インデックスの作成」をご参照ください。
重要ログをクエリおよび分析する場合は、フルテキストインデックス作成またはフィールドインデックス作成を有効にする必要があります。 フルテキストインデックスとフィールドインデックスの両方を有効にすると、フィールドインデックスのみが使用されます。
[ログクエリ] をクリックします。 Logstoreのクエリと分析ページにリダイレクトされます。
インデックスが有効になるまで約1分待つ必要があります。 次に、収集したログを [生ログ] タブで表示できます。 詳細については、「ログの照会と分析」をご参照ください。
トラブルシューティング
Logtailを使用してログを収集した後、プレビューページまたはクエリページにデータが表示されない場合は、「」に記載されている手順に基づいてエラーをトラブルシューティングできます。