SAE アプリケーションから標準出力ログまたはファイルログを Simple Log Service (SLS) に収集することで、永続ストレージと集計分析が可能になります。
前提条件
-
Simple Log Service が有効化されていることを確認します。有効化されていない場合は、Simple Log Service コンソールにログインし、画面の指示に従って有効化してください。
-
アプリケーションの各インスタンスに、少なくとも 0.25 コアの CPU と 250 MB の使用可能なメモリがあることを確認してください。
ログ収集の有効化
操作手順:
-
アプリケーションの作成
SAE アプリケーションリストページで、上部でターゲットリージョンと名前空間を選択し、[アプリケーションの作成] をクリックします。[アプリケーションの基本情報] ページで、パラメーターを設定し、[次へ: 高度な設定] をクリックします。
実行中のアプリケーションの変更
警告アプリケーションを再デプロイすると、アプリケーションが再起動します。サービス中断などの予期せぬ問題を避けるため、デプロイ操作はオフピーク時間に行ってください。
SAE アプリケーションリストページで、上部でターゲットリージョンと名前空間を選択し、ターゲットのアプリケーション ID をクリックしてアプリケーション詳細ページを開きます。 左側のナビゲーションウィンドウで [基本情報] をクリックし、右上隅の [アプリケーションのデプロイ] をクリックします。
停止中のアプリケーションの変更
SAE アプリケーションリストページで、上部でターゲットリージョンと名前空間を選択し、ターゲットのアプリケーション ID をクリックしてアプリケーション詳細ページを開きます。 [基本情報] をクリックし、[アプリケーション設定の変更] をクリックします。
-
[ログ設定] セクションを展開し、[SLS ログサービス] を有効にします。
設定の詳細:
-
SAE アプリケーションログを保存する SLS リソースを選択します:
-
Simple Log Service リソースの作成:システムは自動的に SLS プロジェクトを作成します。プロジェクト名は
sae-<random_string>の形式になります。 -
既存の Simple Log Service リソースの使用:既存の SLS プロジェクトを選択します。プロジェクトはアプリケーションと同じリージョンにある必要があります。
-
-
ログラベル:ログエントリを識別し、分類するために使用されます。[カスタムログラベル] を有効にした後、[タイプ] を選択してキーと値を設定します。複数のキーと値のペアを設定するには、[追加] をクリックします。
-
カスタム:[変数名] と [変数値] を入力します。
-
設定項目の参照:[変数名] を入力し、既存の [設定項目名] と [キー] を選択します。
説明この機能は現在、招待プレビュー中です。使用したい場合は、DingTalk グループ (グループ ID: 32874633) の技術チームに連絡して有効化を依頼してください。
-
-
収集ログタイプ:
-
ファイルログ (コンテナ内のログパス):アプリケーションがログをファイルに書き込む場合は、このオプションを使用します。[ログソース] フィールドで、コンテナ内のログファイルの絶対パスをファイル名を含めて指定します。例:/tmp/cjsc.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 データ送信レートなどのログ収集に影響を与えるボトルネックを解決するのに役立ちます。
[環境変数] セクションで、[カスタム] または [設定項目の参照] を選択し、[変数名] と [変数値/変数参照] を入力します。詳細については、「環境変数の設定」をご参照ください。
-
変数名のルール
設定したい Logtail 環境変数に sls_ プレフィックスを追加します。たとえば、Logtail パラメーター max_read_buffer_size を追加したい場合、環境変数を sls_max_read_buffer_size に設定します。このパラメーターは、Logtail が読み取ることができる単一ログエントリの最大サイズを指定します。この例では 524,288 バイトです。その他のパラメーターについては、「Logtail 起動パラメーターの設定」をご参照ください。
-
環境変数と Logtail 起動パラメーターのマッピング
詳細については、「環境変数の説明」をご参照ください。
クォータと制限
各 Alibaba Cloud アカウント (root ユーザー) は最大 200 の Logstore と 50 のプロジェクトを作成できます。基本的な SLS リソースの制限は、SAE アプリケーションのログ収集に影響を与え、ログの保持期間が短い、または収集に失敗するなどの問題を引き起こす可能性があります。その他の使用制限については、「基本リソースの制限」をご参照ください。
課金
Simple Log Service を使用すると、追加料金が発生します。詳細については、「SLS の課金」をご参照ください。
よくある質問
-
SAE のログ収集はログローテーションをサポートしていますか?
はい。ログファイル名にワイルドカードを追加することで、ログローテーションを実装できます。
ファイル名でサポートされているワイルドカードは、アスタリスク (*) と疑問符 (?) です。
-
ファイルログを表示しても SLS コンソールにデータが表示されません。どうすればよいですか?
デフォルトでは、SLS は過去 15 分間のデータをクエリします。SLS にデータが表示されない場合は、Webshell を使用して、ご利用のアプリケーションがログファイルを生成しているかどうかを確認してください。詳細については、「Webshell を使用したアプリケーションの診断」をご参照ください。
-
ログデータが存在する場合、DingTalk グループ (グループ ID: 32874633) に参加し、製品技術エキスパートに連絡してサポートを依頼してください。
-
ログデータが存在しない場合は、アプリケーションの設定を確認してください。
-