Log Serviceを使用すると、Apacheログを収集し、複数の次元でログを分析できます。 Apacheログは、Webサイトに関するO&M情報を記録します。 Logtail設定を作成してログを収集できます。 このトピックでは、Log Serviceコンソールを使用してApache設定モードでLogtail設定を作成する方法について説明します。
前提条件
プロジェクトと Logstore が作成されていること。 詳細については、「プロジェクトの作成」および「Logstoreの作成」をご参照ください。
Logtailがインストールされているサーバーは、リモートサーバーのポート80とポート443に接続できます。
ログを収集するサーバーは、継続的にログを生成します。
重要Logtailは増分ログのみを収集します。 適用されたLogtail設定がサーバーに配信された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。
背景情報
Apacheログを収集する前に、ログ表示形式、ログファイルディレクトリ、およびログファイル名を指定する必要があります。 たとえば、CustomLog "/var/log/apache2/access_log" combinedと入力した場合、ログは結合ログ形式で表示され、ログファイルディレクトリは /var/log/apache2/access_logです。
Log formats
組み合わせたログ形式:
LogFormat "% h % l % u % t \" % r\"%>s % b \" %{Referer}i\" \" %{User-Agent}i\"" combined
一般的なログ形式:
LogFormat "% h % l % u % t \" % r\"%>s % b"
カスタムログ形式:
LogFormat "% h % l % u % t \" % r\"% R \" %>s % b \"%{Referer}i\" \"%{User-Agent}i\" % D % f % k % p % q % r % T % I % O "カスタマイズ
次の表に、ログ形式のフィールドを示します。 詳細については、「mod_log_config」をご参照ください。
フィールド
キー
説明
%a
client_addr
クライアントのIPアドレス。
%A
local_addr
ローカルIPアドレス。
%b
response_size_bytes
レスポンスのバイト数。 バイトが送信されない場合、このフィールドにハイフン (-) が表示されます。
%B
response_bytes
レスポンスのバイト数。 バイトが送信されない場合、このフィールドに数字0が表示されます。
%D
request_time_msec
リクエストの処理に必要な時間。 単位:マイクロ秒。
%f
filename
ファイル名。
%h
remote_addr
リモートホストの名前。
%H
request_protocol_supple
リクエストプロトコル。
%I
bytes_received
サーバーが受信したバイト数。 このフィールドは、mod_logioモジュールを有効にした後にのみログに記録されます。
%k
keep_alive
接続で処理されるキープアライブリクエストの数。
%l
remote_ident
識別のためにリモートホストによって提供される情報。
%m
request_method_supple
HTTP リクエストの方式。
%O
bytes_sent
サーバーによって送信されるバイト数。 このフィールドは、mod_logioモジュールを有効にした後にのみログに記録されます。
%p
remote_port
サーバーのポート番号。
%P
child_process
子プロセスのID。
%q
request_query
クエリ文字列。 クエリ文字列が存在しない場合、空の文字列が表示されます。
%r
request
リクエストの最初の行。 この行は、HTTPリクエストメソッド、アドレス、およびHTTPバージョンで構成されます。
%R
response_handler
サーバーで応答を生成するハンドラーの型。
%s
status
レスポンスの初期HTTPステータス。
%>s
status
レスポンスの最終的なHTTPステータス。
%t
time_local
サーバーがリクエストを受信した時点。
%T
request_time_sec
リクエストの処理に必要な時間。 単位は秒です。
%u
remote_user
クライアントがリクエストを送信するために使用するユーザー名。
%U
request_uri_supple
リクエスト内のURI。 URIにはクエリ文字列は含まれません。
%v
server_name
サーバーの名前。
%V
server_name_canonical
サーバーの名前。 名前は、UseCanonicalNameディレクティブを使用して指定します。
%{User-Agent}i
http_user_agent
クライアントに関する情報。
"%{Rererer}i"
http_referer
ソースwebページのURL。
生ログ
192.168.1.2 - - [02/Feb/2022:17:44:13 0800] "GET /favicon.ico HTTP/1.1" 404 209 "http:// localhost/x1.html" Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML、Geckoのような) Chrome/48.XX.XX.97 "537.36 Safari
Log Serviceに収集されたログ
手順
Log Serviceコンソールにログインします。
[データのインポート] セクションで、[Apache - Text Log] をクリックします。
プロジェクトと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設定の名前を変更することはできません。
[その他の構成のインポート] をクリックすると、既存の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つの文字を一致させることができます。
ブラックリスト
[ブラックリスト] をオンにする場合は、ブラックリストを設定して、Log Serviceがログを収集するときにスキップするディレクトリまたはファイルを指定する必要があります。 正確なディレクトリとファイル名を指定できます。 ワイルドカード文字を使用して、ディレクトリとファイル名を指定することもできます。 例:
[フィルタータイプ] 列のドロップダウンリストから [ディレクトリでフィルターする] を選択し、コンテンツに /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はコンテナを監視して、コンテナが作成されたか破棄されたかを確認し、タグでコンテナをフィルタリングし、フィルタリング結果のコンテナからログを収集します。 詳細については、「Simple Log Serviceコンソールを使用してDaemonSetモードでコンテナテキストログを収集する」をご参照ください。
モード
収集モードを選択します。 デフォルト値: Apache Configuration Mode モードを変更できます。
ログフォーマット
Apache設定ファイルで指定されているログ形式を選択します。 有効な値: common、combined、Custom。
APACHE Logformatの設定
Apache設定ファイルで指定されているログ設定セクションを入力します。 ほとんどの場合、このセクションはLogFormatから始まります。
ログ形式をcommonまたはcombinedに設定した場合、システムは自動的にこのフィールドに値を挿入します。 値がApache設定ファイルで指定された値と同じかどうかを確認します。
ログ形式を [カスタム] に設定した場合、ビジネス要件に基づいて値を指定します。 たとえば、LogFormat "% h % l % u % t \" % r\"%>s % b \" % {リファラー} i\"% {ユーザーエージェント} i\" % {ユーザーエージェント} I \"% D % f % k % p % q % R % T % i % O" と入力します。
APACHEキー名
Log Serviceは、Apache Logformat設定フィールドの値からAPACHEキーを自動的に読み取ります。
ドロップログの解析に失敗
解析に失敗したログを削除するかどうかを指定します。
[ログの解析に失敗した削除] をオンにした場合、解析に失敗したログは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を使用してログを収集した後、プレビューページまたはクエリページにデータが表示されない場合は、「」に記載されている手順に基づいてエラーをトラブルシューティングできます。