IBM Cloud Docs
アプリのデバッグ

アプリのデバッグ

トラブルシューティングのヒントを使用して、IBM Cloud® Code Engine アプリケーションをトラブルシューティングする方法を確認します。

アプリが予期したとおりに機能していない場合は、ログおよびシステム・イベントを確認すると、問題のデバッグに役立つ情報が得られる可能性があります。

考慮すべきアプリ制限

1つのプロジェクトで作成できるアプリの最大数は40です。 プロジェクトごとに、すべてのアプリで合計120リビジョンに制限されます。Code Engineは、アクティブなアプリのリビジョンに加え、アプリケーションの最新の非アクティブなリビジョンだけを保持します。 古いリビジョンは削除されます。 アプリの更新を参照してください。

メモリやCPUを含むアプリの制限についての詳細は、Code Engineの制限とクォータ を参照してください。

CLI では、 ibmcloud ce project get コマンドを使用して、制限および現在の使用状況に関する情報を表示できます。 以下に例を示します。

ibmcloud ce project create --name myproject

出力例

Getting project 'myproject'...
OK

Name:                                      myproject
ID:                         abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
Status:                                    active
Enabled:                                   true
Application Private Visibility Supported:  true
Selected:                                  true
Region:                                    us-south
Resource Group:             default
Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
Age:                        52d
Created:                                   Tue, 28 Sep 2021 05:12:16 -0500
Updated:                                   Tue, 28 Sep 2021 05:12:19 -0500

Quotas:
Category                                  Used  Limit
App revisions                             2    120
Apps                                      1     40
Build runs                                1     100
Builds                                    2     100
Configmaps                                2     100
CPU                                       0     128
Ephemeral storage                         0     512G
Functions                                 0     20
Instances (active)                        0     250
Instances (total)                         0     2500
Job runs                                 13     100
Jobs                                      2     100
Memory                                    0     512G
Secrets                                   6     100
Subscriptions (cron)                      0     100
Subscriptions (IBM Cloud Object Storage)  0     100
Subscriptions (Kafka)                     0     100

ポート値の確認

Code Engine では、 Code Engine がアプリの正常性を検査するために使用する HTTP エンドポイントが必要です。

デフォルトでは、Code Engine は、アプリが着信接続をポート 8080 で listen することを想定します。 さらに、Code Engineは環境変数'PORT に、アプリケーションがリッスンすると予想されるポート値を設定する。 アプリが「8080 以外のポートをリッスンする必要がある場合は、コンソールからアプリをデプロイして正しいポートを指定するか、「app create コマンドの「--port オプションを使用する。 Code Engine が設定する環境変数について詳しくは、環境変数の自動注入を参照してください。 ポート 80228008801290909091、および 15090 は、 Code Engineによって予約されています。 listen ポートとして公開できるポートは 1 つのみです。

アプリのログの取得

ログは、アプリの実行時の問題をトラブルシューティングするために役立ちます。 アプリのログはコンソールでも CLI でも表示できます。

コンソールでログを表示する場合は、IBM Cloud Logs プロジェクトと同じリージョンに Code Engine インスタンスを作成する必要があります。 Code Engineアプリを処理する前にこのインスタンスを作成する必要はありません。 Code Engineを使用すると、アプリのロギングを簡単に有効にできます。 ロギング機能を追加すると、アプリ・ログを表示できるようになります。 詳しくは、コンソールからのアプリ・ログの表示を参照してください。

CLIを使用すると、アプリのすべてのインスタンスのログを表示したり、アプリの特定のインスタンスのログを表示したりできます。

  1. ibmcloud ce app listコマンドを使用して、プロジェクト内のすべての定義済みアプリをリストします。以下に例を示します。

    ibmcloud ce app list  
    
  2. ibmcloud ce app get コマンドを使用して、アプリのインスタンスの名前など、アプリの詳細を取得します。例えば、次のようにします。

    ibmcloud ce app get --name myapp  
    

    出力例

    Run 'ibmcloud ce application events -n myapp' to get the system events of the application instances.
    Run 'ibmcloud ce application logs -f -n myapp' to follow the logs of the application instances.
    OK
    
    Name:          myapp
    [...]
    
    Created:       2021-02-23T07:32:16-05:00
    URL:           https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    
    Status Summary:  Application deployed successfully
    
    Image:                icr.io/codeengine/hello
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    
    Revisions:
        myapp-atfte-2:
        Age:                51s
        Traffic:            100%
        Image:              icr.io/codeengine/hello (pinned to e69c88)
        Running Instances:  2
    
    Runtime:
        Concurrency:    100
        Maximum Scale:  10
        Minimum Scale:  2
        Timeout:        300
    
    Conditions:
        Type                 OK    Age  Reason
        ConfigurationsReady  true  36s
        Ready                true  10s
        RoutesReady          true  10s
    
    Instances:
        Name                                       Revision       Running  Status   Restarts  Age
        myapp-atfte-2-deployment-7cb45cdf67-qc7sb  myapp-atfte-2  2/2      Running  0         52s
        myapp-atfte-2-deployment-7cb45cdf67-sp9fr  myapp-atfte-2  2/2      Running  0         52s
    

    アプリに関するより詳細な詳細情報が必要な場合は、**app get**コマンドで--o yamlオプションを使用します (例: ibmcloud ce app get --name myapp --o yaml)。 このオプションは、アプリの CLI でより詳細な情報を表示するのに役立ちます。

  3. アプリのインスタンスのログを表示します。

    • アプリの特定のインスタンスのログを表示するには、ibmcloud ce app logs --instance INSTANCE_NAME コマンドを使用します。例えば、次のようにします。

      ibmcloud ce app logs --instance myapp-atfte-2-deployment-7cb45cdf67-qc7sb
      

      出力例

      Getting logs for application instance 'myapp-atfte-2-deployment-7cb45cdf67-qc7sb'...
      OK
      
      myapp-atfte-2-deployment-7cb45cdf67-qc7sb/user-container:
      Server running at http://0.0.0.0:8080/
      
    • アプリのすべてのインスタンスのログを表示するには、app logs --application APP_NAME コマンドを使用します。以下に例を示します。

      ibmcloud ce app logs --app myapp
      

      出力例

      Getting logs for all instances of application 'myapp'...
      OK
      
      myapp-atfte-2-deployment-7cb45cdf67-qc7sb/user-container:
      Server running at http://0.0.0.0:8080/
      
      myapp-atfte-2-deployment-7cb45cdf67-sp9fr/user-container:
      Server running at http://0.0.0.0:8080/
      

詳しくは、CLI を使用したアプリケーション・ログの表示を参照してください。

アプリ・インスタンスに関する詳細の取得

Code Engine コンソールで、すべてのアプリ・インスタンスの詳細を表示できます。 アプリ・インスタンスの詳細は、アプリのインスタンスに関する警告メッセージを受け取る場合に役立ちます。 あるいは、アプリが準備完了状況であっても、要求にサービスを提供していないため、アプリが正しく動作していない可能性があります。

アプリ・インスタンスの詳細については、アプリケーション・ページに移動してください。 アプリケーション・ページから、 「インスタンス」 タブに移動して、アプリケーションの現在のインスタンスを確認できます。 インスタンスのセットは、 スケーリング構成 に基づいて、アプリケーションがスケールアップおよびスケールダウンされると変更されます。 アプリ・インスタンスに関する情報を使用して、アプリのトラブルシューティングに役立てます。

再始動カウントは、特定のインスタンスが作成されてからユーザー・コンテナーが再始動された回数です。 インスタンスが作成されてからのユーザー・コンテナー再始動の平均回数が 1 日あたり 3 回以上である場合、再始動率の値は高いと見なされます。

必要に応じてフィルターを使用すると、アプリ・インスタンスの結果を絞り込むことができます。 アプリ・リビジョンの名前またはアプリ・インスタンスの状況をフィルターに掛けることを選択できます。

特定のアプリ・インスタンスの詳細を確認して、さらに詳しく調べることができます。 特定のインスタンスのインスタンス詳細ページを開くには、以下のいずれかのアクションを実行します。

  • 目的のインスタンスの行をクリックします。
  • 指定したインスタンスの詳細を表示するには、 「アクション」 アイコン 「アクション」 > 「インスタンスの詳細」 をクリックします。

インスタンスの詳細ページの追加情報を使用して、アプリケーションのトラブルシューティングに役立ててください。 開始時刻と再始動時刻、終了コードと理由コードの情報、コンテナー状況、および最後のログ・メッセージに関する情報を使用して、アプリのデバッグに役立てることができます。 ユーザー・コンテナーには、実行コード (アプリの作成時に指定したイメージ) が含まれます。 一方、システム・コンテナーは、ユーザー・コンテナーへの要求の転送やメトリックの収集などのシステム・タスクを処理します。

以下のシナリオは、アプリのトラブルシューティングに役立てるために特定のアプリ・インスタンスの詳細を使用する場合の例です。

  • アプリが作動可能状況にあるが、アプリが HTTP 要求にサービスを提供していない場合は、特定のアプリ・インスタンスの詳細を表示して、アプリ・インスタンスが HTTP 要求にサービスを提供していない理由を確認します。
  • failed 状況のインスタンスがある場合、アプリケーションのイメージが無効であるか、使用できない可能性があります。
  • インスタンスの再始動カウントが高い場合は、プログラミング・エラーのためにアプリケーションが失敗したか、一時ストレージ制限に達したか、メモリー不足状態が発生した可能性があります。 このシナリオが発生すると、インスタンスは継続的に停止され、再始動されます。 最終再始動時刻情報は、アプリケーション・インスタンスに再始動の原因となる進行中の問題があるかどうか、または問題がまれであるかどうかを判別するのに役立ちます。

アプリのシステム・イベント情報の取得

システム・イベント情報は、アプリの実行時の問題をトラブルシューティングするために役立ちます。 CLI を使用してシステム・イベント情報を表示できます。

アプリのすべてのインスタンスのシステム・イベントを表示したり、アプリの特定のインスタンスのシステム・イベントを表示したりできます。

  1. ibmcloud ce app listコマンドを使用して、定義済みのすべてのアプリをリストします。以下に例を示します。

    ibmcloud ce app list  
    
  2. ibmcloud ce app get コマンドを使用して、アプリのインスタンスの名前など、アプリの詳細を取得します。例えば、次のようにします。

    ibmcloud ce app get --name myapp  
    

    出力例

    Run 'ibmcloud ce application events -n myapp' to get the system events of the application instances.
    Run 'ibmcloud ce application logs -f -n myapp' to follow the logs of the application instances.
    OK
    
    Name:          myapp
    [...]
    
    Created:       2021-02-23T07:32:16-05:00
    URL:           https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    Cluster Local URL:  http://myapp.4svg40kna19.svc.cluster.local
    Console URL:   https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
    
    Status Summary:  Application deployed successfully
    
    Image:                icr.io/codeengine/hello
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    
    Revisions:
        myapp-atfte-2:
        Age:                51s
        Traffic:            100%
        Image:              icr.io/codeengine/hello (pinned to e69c88)
        Running Instances:  2
    
    Runtime:
        Concurrency:    100
        Maximum Scale:  10
        Minimum Scale:  2
        Timeout:        300
    
    Conditions:
        Type                 OK    Age  Reason
        ConfigurationsReady  true  36s
        Ready                true  10s
        RoutesReady          true  10s
    
    Events:
        Type    Reason   Age    Source              Messages
        Normal  Created  3m55s  service-controller  Created Configuration "myapp"
        Normal  Created  3m54s  service-controller  Created Route "myapp"
    
    Instances:
        Name                                       Revision       Running  Status   Restarts  Age
        myapp-atfte-2-deployment-7cb45cdf67-qc7sb  myapp-atfte-2  2/2      Running  0         52s
        myapp-atfte-2-deployment-7cb45cdf67-sp9fr  myapp-atfte-2  2/2      Running  0         52s
    

    アプリに関するより詳細な詳細情報が必要な場合は、**app get**コマンドで--o yamlオプションを使用します (例: ibmcloud ce app get --name myapp --o yaml)。 このオプションは、アプリの CLI でより詳細な情報を表示するのに役立ちます。

  3. アプリのインスタンスのシステム・イベントを表示します。

    • アプリの特定のインスタンスのイベントを表示するには、ibmcloud ce app events --instance INSTANCE_NAME コマンドを使用します。例えば、次のようにします。

      ibmcloud ce app events --instance myapp-atfte-2-deployment-7cb45cdf67-qc7sb
      

      出力例

      Getting events for application instance 'myapp-atfte-2-deployment-7cb45cdf67-qc7sb'...
      OK
      
      myapp-atfte-2-deployment-7cb45cdf67-qc7sb:
      Type    Reason     Age  Source                 Messages
      Normal  Scheduled  46m  default-scheduler      Successfully assigned 4svg40kna19/myapp-atfte-2-deployment-7cb45cdf67-qc7sb to 10.240.64.20
      Normal  Pulling    45m  kubelet, 10.240.64.20  Pulling image "index.icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980"
      Normal  Pulled     45m  kubelet, 10.240.64.20  Successfully pulled image "index.icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980" in 3.64261536s
      Normal  Created    45m  kubelet, 10.240.64.20  Created container user-container
      [...]
      
    • アプリのすべてのインスタンスのイベントを表示するには、ibmcloud ce app events --application APP_NAMEコマンドを使用します。以下に例を示します。

      ibmcloud ce app events --app myapp
      

      出力例

      Getting events for all instances of application 'myapp'...
      OK
      
      myapp-atfte-2-deployment-7cb45cdf67-qc7sb:
      Type    Reason     Age  Source                 Messages
      Normal  Scheduled  47m  default-scheduler      Successfully assigned 4svg40kna19/myapp-atfte-2-deployment-7cb45cdf67-qc7sb to 10.240.64.20
      Normal  Pulling    47m  kubelet, 10.240.64.20  Pulling image "icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980"
      Normal  Pulled     47m  kubelet, 10.240.64.20  Successfully pulled image "icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980" in 3.64261536s
      Normal  Created    46m  kubelet, 10.240.64.20  Created container user-container
      Normal  Started    46m  kubelet, 10.240.64.20  Started container user-container
      [...]
      
      myapp-atfte-2-deployment-7cb45cdf67-sp9fr:
      Type    Reason     Age  Source                Messages
      Normal  Scheduled  47m  default-scheduler     Successfully assigned 4svg40kna19/myapp-atfte-2-deployment-7cb45cdf67-sp9fr to 10.240.0.24
      Normal  Pulling    47m  kubelet, 10.240.0.24  Pulling image "icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980"
      Normal  Pulled     47m  kubelet, 10.240.0.24  Successfully pulled image "icr.io/codeengine/hello@sha256:e69c88d7f33778b8266cd480b79522f13968c72aca1287f47603ab711208c980" in 3.682464554s
      Normal  Created    46m  kubelet, 10.240.0.24  Created container user-container
      Normal  Started    46m  kubelet, 10.240.0.24  Started container user-container
      [...]
      

アプリのコンテナー・イメージ参照の検証

Code Engine アプリで作業する場合、イメージにアクセスするためのコンテナー・イメージ参照とレジストリー・シークレットを指定する必要があります。 アプリが正しく機能するためには、アプリの存続期間中、イメージ参照とそのアクセス・プロパティーが有効なままでなければなりません。

イメージ参照を確認するにはどうすればよいですか? を参照してください。