Cloud Foundry での Node.js アプリケーションの展開および監視

APM 管理者として、Pivotal Cloud Foundry (Cloud Foundry)に Node.js アプリケーションを展開できます。 展開時に、アプリケーションをインスツルメントする Node.js プローブ エージェントを設定できます。 Node.js プローブ エージェントは、インフラストラクチャ エージェントにアプリケーション データを送信します。 次に、インフラストラクチャ エージェントは、Enterprise Manager にメトリック データを送信します。 診断担当者および問題切り分け担当者は、Team Center、WebView、および Workstation で Node.js アプリケーションのメトリックを表示します。
apmdevops106
APM 管理者として、Pivotal Cloud Foundry (Cloud Foundry)に Node.js アプリケーションを展開できます。 展開時に、アプリケーションをインスツルメントする Node.js プローブ エージェントを設定できます。 Node.js プローブ エージェントは、インフラストラクチャ エージェントにアプリケーション データを送信します。 次に、インフラストラクチャ エージェントは、Enterprise Manager にメトリック データを送信します。 診断担当者および問題切り分け担当者は、Team Center、WebView、および Workstation で Node.js アプリケーションのメトリックを表示します。
Cloud Foundry への Node.js アプリケーションの展開は、以下の概略的な手順で実行します。
2
前提条件
Cloud Foundry に Node.js アプリケーションを展開する前に、以下のタスクを完了していることを確認します。
  • これらのアプリケーションおよびコンポーネントにアクセスできる。
    • Node.js
    • Pivotal Cloud Foundry アカウント
      • Cloud Foundry コマンド ライン インターフェース(CLI)
  • インフラストラクチャ エージェントのダウンロードインストール
  • インフラストラクチャ エージェントと Enterprise Manager が Cloud Foundry の外部のサーバ上にあることを確認する。 たとえば、Amazon Web Services 上などです。
この記事では、例として、Node.js Hello World サンプル アプリケーションを使用します。
npm からの CA APM プローブ エージェントのダウンロード
Node.js アプリケーションをインスツルメントするには、いくつかの Node.js モジュールをインストールして、依存関係を更新する必要があります。
  1. Hello World Node.js サンプル アプリケーションを含むディレクトリに移動します。
    アプリケーションをローカルで、またはパブリックまたはプライベート GitHub リポジトリで使用できるようにします。
  2. 次のコマンドを使用して Node.js モジュールをインストールします。
    $ npm install
  3. このコマンドを使用して、Node.js Hello World アプリケーションをインスツルメントする Node.js プローブ エージェントをインストールします。
    $ npm install ca-apm-probe
manifest.yml ファイルの作成
アプリケーションを Cloud Foundry にプッシュすると、Cloud Foundry がアプリケーション マニフェスト手順を使用して、Node.js アプリケーションを処理します。 Cloud Foundry コマンド ライン インターフェース(CLI)は、manifest.yml ファイルを使用して、アプリケーションを Cloud Foundry に展開します。
manifest.yml
ファイルを作成する代わりに、Cloud Foundry コマンド ライン インターフェース(CLI)を使用して、アプリケーション展開オプションを提供できます。
以下の手順に従います。
  1. hello-world-app ディレクトリに移動します。 次のコマンドを使用できます。ここで、<Path_to_Application> は、Hello World サンプル アプリケーションへのパスです。
    $ ~/<Path_to_Application>/hello-world-app/
  2. manifest.yml ファイルを作成します。
  3. ファイルには、アプリケーション名、Cloud Foundry に展開するアプリケーションのパス、および start コマンドを指定します。
    アプリケーション名は Cloud Foundry 全体で一意である必要があります。そうでないと、アプリケーションを展開できません。
    この例では、一意のアプリケーション名の値は、hello-world-node です。
    コマンド パスでのメトリック表示の URL 形式は、アプリケーションが Cloud Foundry でホストされているため、http:/<Node.js_application_name>.cfapps.io になります。 この URL で、アプリケーション名は cfapps.io の前に表示され、manifest.yml の
    applications
    値の名前値と
    正確に
    一致する必要があります。 この例で、hello-world-node.cfapps.io のプレフィックスは、アプリケーション manifest.yml 内の
    hello-world-node
    のアプリケーション名値と同じである必要があります。
    applications:
    - name: hello-world-node
    path: ./hello-world
    command: export COLLECTOR_AGENT_HOST={ip_address_here} && export COLLECTOR_AGENT_PORT={port_here} && ./node_modules/ca-apm-probe/bin/ca-apm-run.js [index.js]
Cloud Foundry へのアプリケーションのプッシュ
  1. Cloud Foundry CLI にログインします。
  2. コマンド プロンプトで、このコマンドを実行して、Hello World アプリケーションを Cloud Foundry にプッシュします。
    $ cf push
    Hello World Node.js アプリケーションをプッシュすると、hello-world ディレクトリの内容が Cloud Foundry に展開されます。 内容には、Hello World アプリケーションと、Node.js プローブ エージェントが含まれます。 Hello World アプリケーションが自動的に起動します。
    http://<Node.js_Application_Name>.cfapps.io でアプリケーションを表示できます。 たとえば、Hello World アプリケーションを http://hello-world-node.cfapps.io で表示できます。
  3. (オプション)ブラウザを使用せずに Node.js アプリケーションをサーバに展開する場合は、このコマンドを使用して
    curl
    リクエストを実行できます。
$ curl http://hello-world-node.cfapps.io
手順 2 または 3 でコマンドを実行すると、Node.js CLI のこの例では、「
Hello world of node!
」と表示されます。
インフラストラクチャ エージェントの設定
Node.js プローブ エージェントは、メトリックを収集し、インフラストラクチャ エージェントに転送します。 リモート ホストからメトリックを受信するリモート接続を受け入れるように、インフラストラクチャ エージェントを設定します。
以下の手順に従います
  1. インフラストラクチャ エージェントと Enterprise Manager の両方が Cloud Foundry の外部に展開されていることを確認します。
  2. インフラストラクチャ エージェントがメトリックを Enterprise Manager に送信できるように、Enterprise Manager IP アドレスを取得します。
  3. リモート接続を許可するようにインフラストラクチャ エージェントを設定します。
    1. <apmia>/Infrastructure_Agent-<version>/core/config
      ディレクトリに移動します。
    2. IntroscopeAgent.profile
      ファイルをテキスト エディタで開きます。
    3. agentManager.url.1=<URL> を設定します。
    4. ファイルを保存して閉じます。
    5. インフラストラクチャ エージェントを再起動します。
Node.js アプリケーション メトリックの表示
Node.js アプリケーションに対するトラフィックを生成します。 ブラウザでアプリケーションにアクセスし、Team Center、WebView、または Workstation を実行して、アプリケーション メトリックを表示します。
以下の手順に従います。
  1. アプリケーションに対して何らかのトラフィックを生成します。
    たとえば、Hello World アプリケーションにいくつかの入力データを繰り返し追加し、アプリケーションにいくつかのアクションを実行させます。
  2. ブラウザを使用して、
    <Application_Name>.cfapps.io
    URL に移動して Hello World アプリケーションにアクセスします。
  3. チーム センター、WebView、または Workstation を開き、アプリケーション メトリックを表示します。
トラブルシューティング
問題の状況
Node.js アプリケーションの展開が失敗します。 Cloud Foundry CLI には、展開が失敗したことを示すメッセージが表示されます。 Cloud Foundry 上のアプリケーションがインスツルメントされていません。
解決方法
Cloud Foundry のログを確認します。 コマンド プロンプトで、このコマンドを実行して、ログにアクセスします。
$ cf logs <Application_Name> --recent
多くの問題が展開の失敗を引き起こす可能性があり、一部の問題は正しくない設定に原因があります。 これらの条件と設定を確認して、それらが正しいことを確認します。
  • Application name and path are correct in the
    manifest.yml
    ファイル内のアプリケーション名とパスが正しい
  • Node.js プローブ エージェントがインストールされていることを確認します。
    • Hello World アプリケーション ホーム フォルダを検査します。 Node.js モジュールに ca-apm-probe ディレクトリが含まれている必要があり、さらにこのディレクトリにファイルが格納されている必要があります。 ディレクトリまたはファイルがない場合は、展開プロセスを繰り返します。 「npm からの CA APM プローブ エージェントのダウンロード」に戻ります。