SAE アプリケーションから標準出力ログまたはファイルログを収集し、Simple Log Service (SLS) に送信して永続ストレージに保存し、集計分析を行うことができます。
前提条件
Simple Log Service を有効化していること。このサービスをまだ有効化していない場合は、Simple Log Service コンソールにログインし、画面の指示に従って有効化してください。
アプリケーション内の各インスタンスに、少なくとも 0.25 コアの CPU と 250 MB の利用可能なメモリがあることを確認してください。
ログ収集の有効化
操作手順
アプリケーションの作成
SAE アプリケーションリストページで、上部のナビゲーションバーでターゲットリージョンと名前空間を選択し、[アプリケーションの作成] をクリックします。[アプリケーションの基本情報] ページで、パラメーターを設定し、[次へ:高度な設定] をクリックします。
実行中のアプリケーションの変更
警告アプリケーションを再デプロイすると、アプリケーションは再起動されます。ビジネスの中断などの予測不能なエラーを防ぐため、オフピーク時間にアプリケーションをデプロイすることを推奨します。
SAE アプリケーションリストページで、上部のナビゲーションバーでターゲットリージョンと名前空間を選択します。ターゲットのアプリケーションの ID をクリックして、アプリケーション詳細ページを開きます。左側のナビゲーションウィンドウで、[基本情報] をクリックします。右上隅で、[アプリケーションのデプロイ] をクリックします。
停止中のアプリケーションの変更
SAE アプリケーションリストページで、上部のナビゲーションバーでターゲットリージョンと名前空間を選択します。ターゲットのアプリケーションの ID をクリックして、アプリケーション詳細ページを開きます。[基本情報] をクリックし、次に [アプリケーション設定の変更] をクリックします。
[ログ設定] セクションを展開し、[Simple Log Service の有効化] を有効にします。
設定の説明
SAE アプリケーションのログを保存する SLS リソースを選択します:
[Simple Log Service リソースの作成]:システムが自動的に SLS プロジェクトを作成します。プロジェクト名は
sae-<random_string>というフォーマットになります。[既存の Simple Log Service リソースの使用]:既存の SLS プロジェクトを選択します。プロジェクトはアプリケーションと同じリージョンにある必要があります。
[ログラベル]:[ログラベル] はログエントリを識別し、分類するために使用されます。[カスタムログラベルの有効化] を有効にした後、以下の [タイプ] のいずれかを選択してキーと値を設定します。複数のキーと値のペアを設定するには、[追加] をクリックします。
[カスタム]:[変数名] と [変数値] を入力します。
[設定項目の参照]:[変数名] を入力し、既存の [設定項目名] と [キー] を選択します。
重要この機能は招待プレビューです。この機能を使用するには、DingTalk グループ (ID:32874633) で関連する技術スタッフに連絡し、アカウントをホワイトリストに追加してもらってください。
[収集ログタイプ]:
[ファイルログ (コンテナー内のログパス)]:このオプションは、アプリケーションがログをファイルに書き込むシナリオに適用されます。[ログソース] フィールドで、ファイル名を含むコンテナー内のログファイルの絶対パスを指定します。例:/tmp/test.log。ワイルドカードマッチングもサポートされています。例:/path/to/your/files/*.log。
[コンテナー標準出力ログ]:このオプションは、アプリケーションがログを標準出力に出力するシナリオに適用されます。[ログソース] は
stdout.logと表示されます。+ Add をクリックして、複数のレコードを追加します。
[既存の Simple Log Service リソースの使用] を選択した場合、各レコードに logstoreName と logtail を設定できます。
重要ディレクトリ内のファイルが上書きされるのを防ぐため、[ログソース] パスに他の重要なファイルを保存しないでください。たとえば、アプリケーションの実行可能ファイルとデータが
/home/admin/app/に保存されている場合、ログストレージパスを/home/admin/に設定すると、そのパス以下のすべてのディレクトリとファイルが上書きされます。これを防ぐには、ログストレージパスを/home/admin/log/に設定します。バッチリリースまたは段階的リリースの際、プロジェクトまたは Logstore のみを変更した場合、すべてのバッチがデプロイされるまで、ログは古い収集先に収集され続けます。これは、SLS が同じファイルから異なるプロジェクトや Logstore へのログ収集をサポートしていないためです。
結果の確認
SAE アプリケーションリストで、上部のナビゲーションバーからターゲットリージョンと名前空間を選択します。ターゲットのアプリケーション ID をクリックして、アプリケーション詳細ページに移動します。
左側のナビゲーションウィンドウで、 を選択して、SLS ログを表示します。
Actions 列で、File Logs をクリックして、対応する Logstore に移動し、ログの詳細を表示します。
ログコンテンツからのプレフィックスの削除
コンテナーの標準出力ログを収集すると、元のログコンテンツに不要なプレフィックスが含まれます。以下のいずれかの方法を使用して、プレフィックスを削除できます。
方法1:Logtail 構成のカスタマイズ
この機能は Logtail 2.0 以降でのみ利用可能です。この機能を使用するには、DingTalk グループ (ID:32874633) でプロダクト技術エキスパートに連絡し、SAE アプリケーションの Logtail バージョンをアップグレードしてもらってください。
対応する Logstore を展開し、[Logtail 構成] をクリックします。
[Logtail 構成] ページで、ターゲットの Logtail 構成項目をクリックします。
[編集] をクリックし、以下のパラメーターを設定します。他のパラメーターはデフォルト値のままにします。
[プロセッサー設定] セクションを展開します。[分割失敗時の処理方法] を [単一行として保持] に設定します。
[処理方法] を [SPL] に設定します。
[SPL ステートメント] テキストボックスに、
* | extend msg=regexp_replace(content, '(\S{33,36}\s\S+\sF\s)','') | project-away contentと入力します。
[保存] をクリックします。
新しく収集されたログからプレフィックスが削除されます。
方法2:標準出力のリダイレクト
アプリケーションの作成
SAE アプリケーションリストページで、上部のナビゲーションバーでターゲットリージョンと名前空間を選択し、[アプリケーションの作成] をクリックします。[アプリケーションの基本情報] ページで、パラメーターを設定し、[次へ:高度な設定] をクリックします。
実行中のアプリケーションの変更
警告アプリケーションを再デプロイすると、アプリケーションは再起動されます。ビジネスの中断などの予測不能なエラーを防ぐため、オフピーク時間にアプリケーションをデプロイすることを推奨します。
SAE アプリケーションリストページで、上部のナビゲーションバーでターゲットリージョンと名前空間を選択します。ターゲットのアプリケーションの ID をクリックして、アプリケーション詳細ページを開きます。左側のナビゲーションウィンドウで、[基本情報] をクリックします。右上隅で、[アプリケーションのデプロイ] をクリックします。
停止中のアプリケーションの変更
SAE アプリケーションリストページで、上部のナビゲーションバーでターゲットリージョンと名前空間を選択します。ターゲットのアプリケーションの ID をクリックして、アプリケーション詳細ページを開きます。[基本情報] をクリックし、次に [アプリケーション設定の変更] をクリックします。
[起動コマンド] セクションを展開し、標準出力をリダイレクトするように起動コマンドを設定します:
イメージからデプロイされたアプリケーションの場合、元の起動コマンドの後に
2>&1 | tee -a /home/admin/log/std.logを追加します。このコマンドでは、/home/admin/log/std.logはログファイルのストレージパスであり、カスタマイズできます。たとえば、イメージ内の元の起動コマンドが
CMD ["./main"]の場合、起動コマンドを./main 2>&1 | tee -a /home/admin/log/std.logとして設定します。イメージ環境が
teeコマンドをサポートしていない場合、またはコンソールでリアルタイムログを表示する必要がない場合は、2>&1 | tee -a /home/admin/log/std.logを> /home/admin/log/std.log 2>&1に置き換えます。[ログ設定] セクションを展開します。[収集ログタイプ] を [ファイルログ (コンテナー内のログパス)] に設定します。[ログソース] をログファイルのストレージパス、たとえば
/home/admin/log/std.logに設定します。[OK] をクリックし、アプリケーションがデプロイされるのを待ちます。
新しく収集されたログからプレフィックスが削除されます。
環境変数を設定して Logtail の収集パフォーマンスを向上させる
SAE コンソールで環境変数を設定することにより、Logtail の起動パラメーターを設定できます。これにより、Logtail の収集パフォーマンスが向上し、高いメモリ使用量、高いログデータトラフィック、高いデータ送信レートなど、ログ収集に影響を与えるボトルネックの解決に役立ちます。
[環境変数] セクションで、[カスタム] または [設定項目の参照] を選択します。次に、[変数名] と [変数値/変数参照] を入力します。詳細については、「環境変数の設定」をご参照ください。
変数名のルール
設定したい Logtail 環境変数に sls_ プレフィックスを追加します。たとえば、次の図に示すように、Logtail パラメーター max_read_buffer_size を追加するには、環境変数を sls_max_read_buffer_size として設定する必要があります。図は、各ログの読み取り最大サイズが 524,288 バイトであることを示しています。パラメーターの詳細については、「Logtail 起動パラメーターの設定」をご参照ください。

環境変数と Logtail 起動パラメーターのマッピング
詳細については、「環境変数の説明」をご参照ください。
クォータと制限
1 つの Alibaba Cloud アカウントは、最大 200 の Logstore リソースと 50 のプロジェクトリソースを持つことができます。Simple Log Service の基本リソースの制限は、SAE アプリケーションのログ収集に影響を与える可能性があります。たとえば、これらの制限により、ログ保持期間が短くなったり、ログ収集が失敗したりすることがあります。制限の詳細については、「基本リソースの制限」をご参照ください。
課金の説明
Simple Log Service は有料サービスです。詳細については、「SLS の課金の説明」をご参照ください。
よくある質問
SAE のログ機能はログローテーションをサポートしていますか?
はい、サポートしています。ログファイル名にワイルドカードを追加することで、ログをローテーションできます。
サポートされているワイルドカードは、アスタリスク (*) と疑問符 (?) です。
ファイルログを表示すると、SLS コンソールにデータが表示されません。どうすればよいですか?
デフォルトでは、SLS は過去 15 分間のデータをクエリします。SLS コンソールにデータが表示されない場合は、Webshell を使用して、アプリケーションがファイルログ情報を生成したかどうかを確認してください。詳細については、「Webshell を使用したアプリケーションの診断」をご参照ください。
ログ情報が存在する場合、DingTalk グループ (ID:32874633) に参加し、プロダクト技術エキスパートに支援を依頼してください。
ログ情報が存在しない場合は、アプリケーションの設定を確認してください。