Serverless App Engine (SAE) を使用してアプリケーションを管理する場合、コンテナーはアプリケーションが実行される一時的な環境として使用され、運用保守は不要です。SAE は、SAE コンソールに組み込みの軽量 Webshell 機能を提供しており、コンテナーの表示とデバッグを行うことができます。この方法で、オンラインの問題を効率的にトラブルシューティングできます。SAE アプリケーションコンテナーの基本イメージは、アプリケーションランタイムで使用できます。不安定なアプリケーションコンテナーは一時的な使用のみを目的としています。基本イメージに対して SSH を有効にする必要はなく、実行可能な /bin/bash コマンドをコードに含めるだけで済みます。トラブルシューティングを実行するために必要なすべての運用保守ツールを準備することをお勧めします。
制限事項
Webshell 機能は Windows イメージをサポートしていません。
使用上の注意
コードの実行と Webshell の実行環境はユーザーに帰属します。
ネットワーク環境
SAE アプリケーションは、名前空間機能をサポートする自己管理型仮想プライベートクラウド (VPC) にデプロイされます。ミドルウェアのサービス呼び出しを論理的に分離できます。1 つの名前空間は VPC 内の 1 つの vSwitch のみに関連付けることができますが、1 つの vSwitch は複数の名前空間に関連付けることができます。VPC 内のリソースの IP アドレスは、VPC 内からのみアクセスでき、アプリケーションは VPC をまたいで相互にやり取りすることはできません。名前空間は、ミドルウェアサービス呼び出しを論理的に分離するために使用されます。異なる名前空間にあるアプリケーションは、サービスディスカバリや構成配信などのミドルウェアサービス呼び出しで分離されます。
VPC の動作メカニズムと製品紹介については、「サービスアーキテクチャ」をご参照ください。
VPC と SAE の特性により、SAE アプリケーションコンテナーは、VPC の外部にあるサービス (OSS や Container Registry などの Alibaba Cloud サービスを除く) に接続できません。追加の設定を行わない場合、SAE アプリケーションコンテナーは隔離されたネットワークで実行され、コンテナーに直接アクセスすることはできません。
次のコードは、アプリケーションコンテナーへのアクセスに失敗した場合の例を示しています。

アプリケーションインスタンスがインターネット上のサービスにアクセスできるようにするには、NAT ゲートウェイを購入し、VPC 内の vSwitch に対してソースネットワークアドレス変換 (SNAT) を構成する必要があります。詳細については、「SAE アプリケーションにインターネットアクセスを有効にするための NAT ゲートウェイの構成」をご参照ください。
SNAT を使用すると、インスタンスにパブリック IP アドレスが割り当てられていない場合でも、VPC 内のアプリケーションインスタンスがインターネットにアクセスできます。インスタンスが NAT ゲートウェイに関連付けられているエラスティック IP アドレス (EIP) を使用するように SNAT エントリを構成できます。これにより、インスタンスはインターネット経由でサービスを呼び出し、インターネットリソースを取得できます。詳細については、「インターネットにアクセスできる製品」をご参照ください。
イメージのビルド
SAE は Container Registry と連携して動作し、イメージのビルドと管理を行うことができます。SAE は、centos:7 基本イメージ、プログラミング言語、コーデック、タイムゾーン、OpenJDK などの開発環境を提供します。
コンテナーはアプリケーションの実行を容易にするように設計されており、SAE はデフォルトでは限られた数のツールのみを統合しています。SAE が過剰な数のツールを統合すると、ツールのリソース消費がアプリケーションの状態に影響を与える可能性があります。SAE に統合されていないツールが必要な場合は、イメージをビルドするか、OSS からイメージを取得する必要があります。詳細については、「Java アプリケーションをデプロイするためのイメージの作成」をご参照ください。
Webshell ウィンドウを全画面表示にする
次の手順を実行して、Webshell ウィンドウを全画面表示にすることができます。
SAE コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。[アプリケーション] ページで、上部のナビゲーションバーでリージョンを選択し、[名前空間] ドロップダウンリストから名前空間を選択し、目的のアプリケーション名をクリックします。

[基本情報] ページで、[インスタンス] タブをクリックします。
[インスタンス] タブの [デフォルトグループ] セクションで、管理するインスタンスを見つけ、[アクション] 列の [Webshell] をクリックします。

オプション。 Webshell ウィンドウが表示されたら、右上隅にある
アイコンをクリックして、ウィンドウを全画面表示にします。ビジネス要件に基づいて Webshell ウィンドウでコマンドを実行して、コンテナーを表示およびデバッグします。
詳細については、「アプリケーションインスタンスのメタデータの取得」および「アプリケーションのヘルス状態の確認」をご参照ください。
アプリケーションインスタンスのメタデータの取得
アプリケーションを SAE にデプロイした後、セキュリティグループ ID、VPC ID、vSwitch ID など、アプリケーションインスタンスのメタデータを取得できます。
メタデータの場所 | 説明 |
/etc/podinfo/sgId | セキュリティグループ ID が存在するパス。 |
/etc/podinfo/vpcId | VPC ID が存在するパス。 |
/etc/podinfo/vswitchId | vSwitch ID が存在するパス。 説明 複数の vSwitch が存在する場合、vSwitch ID はコンマ (,) で区切られます。 |
SAEコンソール にログインし、Webshell ウィンドウで次のコマンドを実行して、セキュリティグループ ID、VPC ID、vSwitch ID を確認できます。
次のコマンドを実行して、
podinfoディレクトリを開きます。cd /etc/podinfo/説明コマンドの実行時に
can't cd to /etc/podinfo/エラーが報告された場合は、インスタンスを [再起動] するか、アプリケーションを再 [デプロイ] できます。次のコマンドを実行して、インスタンスのすべてのメタデータファイルを表示します。
ls予期される出力:
sgId vpcId vswitchIdビジネス要件に基づいて次のコマンドを実行して、アプリケーションインスタンスのメタデータを確認します。
次のコマンドを実行して、セキュリティグループの ID を取得します。
cat sgId予期される出力:
sg-2ze4ddm2rqgenvcx****sh-4.2#次のコマンドを実行して、VPC ID を取得します。
cat vpcId予期される出力:
vpc-2zeqku2oevokwm66b****sh-4.2#次のコマンドを実行して、vSwitch ID を取得します。
cat vswitchId予期される出力:
vsw-2zewmy4ynhljytzhu****sh-4.2#
運用保守コンポーネントをインストールするコマンドをコピーする
SAEコンソール にログインし、次の手順を実行して、ビジネス要件に基づいて Webshell ウィンドウのコマンドをコピーできます。このコマンドは、運用保守コンポーネントをインストールするために使用されます。
Webshell ウィンドウにインストールされたコマンドは、コンテナーが再ビルドされた後は無効になります。一般的なコマンドについては、イメージを作成するときにインストールすることをお勧めします。
Webshell ウィンドウの右上隅にある
アイコンをクリックします。[コマンドのコピー] ダイアログボックスで、必要なコンポーネントを選択し、表示されたコマンドをプレビューして、[コピー] をクリックします。「インストールコンポーネントの選択」パラメーターには、次のオプションがあります。
[openssh をインストールする]: OpenSSH は、SSH プロトコルのフリーでオープンソースな実装です。OpenSSH は、リモートコントロールとファイル転送で送信されるデータを暗号化するためのサーバーサイドバックエンドプログラムとクライアントツールを提供します。OpenSSH をインストールしてからリモートデバッグを使用して、SSH プロトコルを介したリモートログイン、sftp および scp を使用したファイルのアップロードとダウンロードなどの機能を実装できます。これにより、予期しない要件を満たすために SAE アプリケーションインスタンスをデバッグできます。
[net-tools (netstat) をインストールする]: netstat コマンドは、ネットワーク状態を監視するために使用されます。このコマンドを実行して、ルートテーブル、アクティブなネットワーク接続、ネットワークインターフェースの状態を表示できます。
[iroute (ss) をインストールする]: ソケット統計 (ss) コマンドは、netstat コマンドを実行することで取得される情報と同様のソケット統計を表示するために使用されます。ss コマンドを実行すると、netstat コマンドを実行するよりも迅速に TCP 接続に関する詳細情報を取得できます。
Webshell ウィンドウにコピーしたコマンドを貼り付けて、Enter キーを押してコマンドを実行します。
アプリケーションのヘルス状態の確認
アプリケーションの定期的なチェックの実行
定期的なチェックを実行するか、ログをアップロードおよびダウンロードして、SAE アプリケーションのヘルス状態を確認できます。複数の定期的なチェックを利用できます。たとえば、Java アプリケーションのプロセス、スレッド、Java 仮想マシン (JVM) をチェックできます。このセクションでは、Java アプリケーションのプロセスをチェックする方法と、Java アプリケーションでオンライン分析を実行する方法について説明します。
次のコマンドを実行して、Java アプリケーションに使用可能なプロセスがあるかどうかを確認します。
ps -ef | grep java説明コンテナーでは、メインプロセスを使用してアプリケーションを起動します。アプリケーションが停止すると、コンテナーは終了します。SAE は、サービス中断を防ぐためにコンテナーを自動的に再起動します。
使用可能なプロセスがない場合は、
dmesg | grep -i killコマンドを実行して、メモリ不足 (OOM) ログを確認します。OOM ログが存在する場合、アプリケーションプロセスは停止しています。作業ディレクトリにある
hs_err_pid{PID}.logという名前のログファイルを確認して、原因を特定する必要があります。
Alibaba Cloud が提供するオープンソースソフトウェア Arthas を使用して、Java アプリケーションでオンライン分析を実行することもできます。Arthas をテストイメージに統合して、定期的なチェックを実行することをお勧めします。Arthas は、Java クラスのロード状態をリアルタイムで表示できます。これにより、入力パラメーター、出力パラメーター、環境変数を表示できます。
アプリケーションをインターネットに接続します。
詳細については、「SAE アプリケーションにインターネットアクセスを有効にするための NAT ゲートウェイの構成」をご参照ください。
次のコマンドを実行して、Arthas をダウンロードします。
sudo wget https://alibaba.github.io/arthas/arthas-boot.jar次のコマンドを実行して、Arthas を起動します。
sudo java -jar arthas-boot.jar
ログをアップロードおよびダウンロードしてアプリケーションのヘルス状態を確認する
定期的なチェックで必要な情報を取得できない場合は、コンテナーから収集されたログをクラウドにアップロードし、オンプレミス マシンにダウンロードしてアプリケーション分析を行うことができます。
ログファイルのサイズが 10 MB 以下の場合は、SAE の組み込み Webshell 機能を使用できます。詳細については、「Webshell 機能を使用してファイルをアップロードおよびダウンロードする」をご参照ください。
ログファイルのサイズが 10 MB を超える場合は、ログファイルを OSS にアップロードできます。OSS サービスは、Alibaba Cloud のすべてのネットワーク環境と互換性があります。次の手順を実行して、OSS を使用してログをアップロードおよびダウンロードできます。
コンテナーに OSS コマンドラインツール ossutil をインストールします。詳細については、「ossutil のインストール」をご参照ください。
この例では、64 ビット CentOS のユーザーがログをダウンロードします。アプリケーションがインターネットに接続されていない場合、ルートユーザーはログファイルをオンプレミス マシンにダウンロードし、ダウンロードしたファイルを OSS にアップロードしてから、VPC 内からアクセスできる内部アドレスを OSS から取得してファイルをダウンロードする必要があります。
次のコマンドを実行して、ossutil をダウンロードします。
sudo wget http://gosspublic.alicdn.com/ossutil/1.5.0/ossutil64次のコマンドを実行して、ossutil インストールパッケージの実行権限を変更します。
sudo chmod 755 ossutil64
ossutil を構成し、アプリケーションが存在するリージョン内の VPC の内部 エンドポイント を指定します。アップロードされたファイルを受信し、既存のバケットを表示し、OSS サービスが使用可能かどうかを確認するために使用するアカウントの AccessKey ペア を指定します。
説明Alibaba Cloud アカウントで OSS サービスがアクティブになっていることを確認してください。アカウントは、SAE アプリケーションの管理に使用されるアカウントではない場合があります。
バケットが作成されていることを確認してください。詳細については、「バケットの作成」をご参照ください。
次のコマンドを実行して、OSS アクセス情報を格納する構成ファイルを作成します。
画面の指示に従って、AccessKey ペアとエンドポイント情報を指定できます。セキュリティトークンサービス (STS) トークンを指定する必要はありません。
./ossutil64 config次のコマンドを実行して、すべてのバケットをリストします。
アカウントが使用できるかどうかを確認します。エラーが報告された場合、構成は無効です。
./ossutil64 ls出力例:
CreationTime Region StorageClass BucketName 2021-12-08 18:53:46 +0800 CST oss-cn-hangzhou Standard oss://test-bucket次のコマンドを実行して、sae-app.log という名前のシミュレートされたログファイルを作成します。
echo "Hello" > sae-app.log次のコマンドを実行して、ログファイルを指定のバケットにアップロードします。
./ossutil64 cp sae-app.log {bucket-address}サンプルコード:
./ossutil64 cp sae-app.log oss://test-bucket
次のいずれかの方法を使用して、結果を確認します。
方法 1: 次のコマンドを実行して、アップロードされたログファイルを表示します。
./ossutil64 ls oss://test-bucket出力例:
LastModifiedTime Size(B) StorageClass ETAG ObjectName 2021-12-08 19:26:18 +0800 CST 6 Standard 09F7E02F1290BE211DA707A266F1**** oss://cri-55md3gmii09m****-chart/sae-app.log Object Number is: 1 0.047758(s) elapsed方法 2: OSSコンソール またはツールを使用してログファイルを見つけます。次に、ファイルをオンプレミス マシンにダウンロードし、ツールを選択してアプリケーションの状態を分析します。