Serverless App Engine (SAE) を使用すると、アプリケーションインスタンスの指定されたディレクトリからApsaraMQ for Kafkaにアプリケーションインスタンスとログの標準出力 (stdout) を収集できます。 その後、ビジネス要件に基づいて、ApsaraMQ for Kafkaから他の永続データベース (Elasticsearchデータベースなど) にデータを配信できます。 これにより、ログを一元管理および分析できます。 このトピックでは、SAEコンソールでApsaraMQ for Kafkaにログを収集する方法について説明します。
前提条件
SAE
アプリケーションのインスタンスごとに、少なくとも25% のCPU容量と250 MBのメモリが予約されています。
Kafka
ApsaraMQ for Kafkaが有効化され、トピックが作成されました。 SAEは、ApsaraMQ for Kafka 2.X以降のインスタンスをサポートしています。
ApsaraMQ for Kafkaインスタンスが仮想プライベートクラウド (VPC) で作成され、インターネットにアクセスできない場合、ApsaraMQ for KafkaインスタンスとSAEインスタンスは同じVPCに存在する必要があります。
ApsaraMQ for KafkaインスタンスのIPアドレスホワイトリストが設定されています。
ApsaraMQ for KafkaインスタンスとServerless App Engine (SAE) インスタンスが同じVPCにあり、異なるvSwitchに関連付けられている場合、ApsaraMQ for Kafkaコンソールの [インスタンス] ページで、SAEインスタンスのvSwitch CIDRブロックをApsaraMQ for KafkaインスタンスのIPアドレスホワイトリストに追加する必要があります。
VPC経由のアクセスを有効にする場合は、0.0.0.0/0を使用します。
背景情報
ファイルログ収集の設定
アプリケーション作成時のログ収集の構成
SAEコンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、[アプリケーションの作成] をクリックします。
では、基本情報ステップ、パラメータを設定し、次条: アプリケーションの配置設定.
では、デプロイの設定ステップを設定し、Technology Stackプログラミング言语とアプリケーションの配置方法パラメータと対応する設定。
[Log Collection Service] セクションで、[Log Collection to Kafka] タブをクリックし、[Log Collection to Kafka] をオンにします。
パラメーター
説明
Kafkaインスタンス
SAEからログを収集するApsaraMQ for Kafkaインスタンスを選択します。
ログタイプ
ログタイプを選択します。 有効な値:
ファイルログ (コンテナー内のログパス): ファイルログ。 デフォルト値です。 複数の収集ルールを追加して、異なるログソースからファイルログを収集できます。
Container Standard出力ログ: コンテナーのstdoutログ。 stdoutログを収集するために設定できる収集ルールは1つだけです。 このログタイプは、vSwitchが推奨ゾーンのいずれかにある場合にのみ、[ログタイプ] ドロップダウンリストで使用できます。 詳細については、「アプリケーションのセキュリティグループとvSwitchの変更」をご参照ください。
ログソース
ログファイルが保存されているディレクトリを入力します。 ディレクトリには、ログファイルの名前が含まれている必要があります。 例: /tmp0/cjsc.log Container Standard出力ログを選択した場合、Log Sourceパラメーターを設定する必要はありません。 ファイル名とパスに一致する正規表現を指定できます。 ディレクトリに同じ形式のログファイルが多数含まれている場合は、/xxx/xxx/xxx/*.log形式でログソースを指定できます。
重要他の種類の重要なファイルをログソースに保存しないでください。 それ以外の場合、ファイルはログファイルによって上書きされます。
Kafkaトピック名
ApsaraMQ for Kafkaトピックを選択します。
[次へ: 仕様の確認] をクリックします。
仕様の確認ステップで、アプリケーションの詳細と選択した仕様の料金を表示します。 次に、[確認] をクリックします。
作成完了ステップが表示されます。 [アプリケーションの詳細] をクリックすると、アプリケーションの [基本情報] ページに移動できます。
結果を確認します。
アプリケーションをデプロイした後、SAEは設定されたログ収集ルールに基づいてログを収集し、指定されたディレクトリに配信します。
アプリケーションの詳細ページの左側のナビゲーションウィンドウで、
を選択します。 [永続ログ] ページで、収集されたログに関する情報を表示します。ログが存在する場合、ログ収集ルールが有効になります。 ログに基づいてビジネス分析を実行できます。
アプリケーションのデプロイ時のログ収集の構成
アプリケーションを再デプロイすると、アプリケーションは再起動されます。 業務中断などの予測できないエラーを防ぐため、オフピーク時にアプリケーションをデプロイすることを推奨します。
アプリケーションを更新するために実行できる手順は、アプリケーション内のインスタンスの数によって異なります。 このセクションでは、インスタンス数が1以上のアプリケーションに必要な機能を設定する方法の例を示します。 インスタンス数が0のアプリケーションの更新方法については、「アプリケーションの更新」をご参照ください。
SAEコンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。 上部のナビゲーションバーで、リージョンを選択します。 次に、アプリケーションの名前をクリックします。
の右上隅に基本情報ページをクリックします。アプリケーションのデプロイ.
[設定のデプロイ] ページの [Log Collection Service] セクションで、[Log Collection to Kafka] タブをクリックし、[Log Collection to Kafkaの有効化] をオンにします。
パラメーター
説明
Kafkaインスタンス
SAEからログを収集するApsaraMQ for Kafkaインスタンスを選択します。
ログタイプ
ログタイプを選択します。 有効な値:
ファイルログ (コンテナー内のログパス): ファイルログ。 デフォルト値です。 複数の収集ルールを追加して、異なるログソースからファイルログを収集できます。
Container Standard出力ログ: コンテナーのstdoutログ。 stdoutログを収集するために設定できる収集ルールは1つだけです。 このログタイプは、vSwitchが推奨ゾーンのいずれかにある場合にのみ、[ログタイプ] ドロップダウンリストで使用できます。 詳細については、「アプリケーションのセキュリティグループとvSwitchの変更」をご参照ください。
ログソース
ログファイルが保存されているディレクトリを入力します。 ディレクトリには、ログファイルの名前が含まれている必要があります。 例: /tmp0/cjsc.log Container Standard出力ログを選択した場合、Log Sourceパラメーターを設定する必要はありません。 ファイル名とパスに一致する正規表現を指定できます。 ディレクトリに同じ形式のログファイルが多数含まれている場合は、/xxx/xxx/xxx/*.log形式でログソースを指定できます。
重要他の種類の重要なファイルをログソースに保存しないでください。 それ以外の場合、ファイルはログファイルによって上書きされます。
Kafkaトピック名
ApsaraMQ for Kafkaトピックを選択します。
設定後、[確認] をクリックします。
重要2つのApsaraMQ for Kafkaトピックに同時にログファイルを収集することはできません。 アプリケーションを段階的リリースモードまたはカナリアリリースモードでデプロイし、構成済みのログソースを保持しても、ログ収集のトピックを変更した場合、アプリケーションのすべての構成がデプロイされるまで、ログは元のトピックに収集されます。
結果を確認します。
アプリケーションをデプロイした後、SAEは設定されたログ収集ルールに基づいてログを収集し、指定されたディレクトリに配信します。
アプリケーションの詳細ページの左側のナビゲーションウィンドウで、
を選択します。 [永続ログ] ページで、収集されたログに関する情報を表示します。ログが存在する場合、ログ収集ルールが有効になります。 ログに基づいてビジネス分析を実行できます。
フォーマット
ログ収集からKafkaを有効にすると、収集されたログは次の形式になります。
{
"file":"/home/admin/apache-tomcat-8.5.42/logs/localhost.2022-03-01.log" 、
"ホスト":"test-kafka-9527eec8-b2c1-4f03-9178-5dac0fe16d07-*****" 、
"message":"01-Mar-2022 15:09:36.016 INFO [localhost-startStop-1] org.apache.ca talina.core.ApplicationContext.logクラスパスでSpring WebApplicationInitializerタイプが検出されません" 、
"topic":"test2"
}
説明:
file
は、収集されたログファイルのパスを示します。host
は、ログを収集するインスタンスの名前を示します。message
は、収集されたログの内容を示します。topic
は、収集されたログが配信されるApsaraMQ for Kafkaトピックを示します。
複数行のログを収集する
Javaアプリケーションでは、ログが自動的に1行にマージされるとエラーが報告されます。 次の例は、Java例外ログを示しています。
java.lang.RuntimeException: testLog at cn.niutong.controller.TestController.heathc(TestController.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) で...
改行
\n
が検出された場合、ログデータは新しい行に再書き込みされます。 ビジネスプログラムでログをJSON文字列にパッケージ化し、その文字列を1行としてエクスポートすることをお勧めします。
複数行のログをマージするなど、追加の要件がある場合は、DingTalkグループ32874633に参加して、テクニカルサポートを行います。
よくある質問
ログ収集をKafkaに有効にした後、ワイルドカード文字はサポートされますか?
はい。ログ収集をKafkaに有効にすると、ワイルドカード文字がサポートされます。 たとえば、アスタリスク (*) をワイルドカード文字として使用して、特定のフォルダー内のすべてのファイルを指定できます。 例:
/tmp/logs/*.log
ログの収集に失敗するのはなぜですか?
ネットワークの例外により、ログの収集に失敗する可能性があります。 問題をトラブルシューティングするには、次の手順を実行します。
SAE Webshellにログインします。 telnetコマンドを実行して、ApsaraMQ for Kafkaインスタンスのアドレスを照会し、インスタンスのネットワーク接続が正常かどうかを確認します。 Webshellの詳細については、「webshell機能を使用してアプリケーションのヘルスステータスを確認する」をご参照ください。
ネットワークの状態を確認してください。
SAEアプリケーションとApsaraMQ for Kafkaインスタンスが同じVPCにあるかどうか、およびIPアドレスホワイトリストが設定されているかどうかを確認します。
ネットワークがログ収集の要件を満たしている場合、DingTalkグループ32874633に参加して、テクニカルサポートを行います。