このトピックでは、Splunk AppDynamics APM タイルによって公開されたマーケットプレイスサービスを使用して、Splunk AppDynamics エージェントで VMware Tanzu アプリケーションをインストゥルメント化するために必要な手順について説明します。Java ビルドパック以外では、マルチビルドパック アプローチが使用されます。これには、言語固有のビルドパックに加えて、タイルによって公開された Splunk AppDynamics 拡張ビルドパックの appdbuildpack が必要です。Java ビルドパックには Splunk AppDynamics エージェントのサポートが直接統合されているため、Splunk AppDynamics ビルドパックを使用する必要はありません。

ご使用になる前に

  1. Pivotal Network アカウントがない場合は作成します。
  2. Cloud Foundry Command Line Interface(cf CLI)をインストールします。「Installing the cf CLI」を参照してください。

このドキュメントには、Cloud Foundry™ のドキュメントへの参照が含まれています。Splunk AppDynamics はいかなる権利も所有しておらず、そのようなサードパーティのドキュメントの正確性または完全性について責任を負いません。

Splunk AppDynamics サービスインスタンスの作成

  1. cf CLI またはコマンド プロンプト ウィンドウを開きます。

  2. Pivotal API のエンドポイントとバージョンを特定します。次のコマンドを入力します。
    $ cf api
    次の出力が表示されます。

    api endpoint: https<scan>:</scan>//api.my.pivotal.io
    api version: 2.103.0
    CODE
  3. Pivotal エンドポイントにログインします。cf login

  4. プロンプトが表示されたら、電子メールアドレスと Pivotal パスワードを入力します。

  5. cf 環境に appdynamics サービスがあることを確認します。

    $ cf marketplace -s appdynamics
    service plan                   description                    free or paid
    pcf-appd                       pcf-appd                       free
    pcf-appd-test                  pcf-appd-test                  free
    CODE
  6. appdynamics サービスのサービスインスタンスと選択したプランを作成します。 $ cf create-service appdynamics pcf-appd appd

  7. 以下に示されているアプリケーションの対応する言語のワークフローに従います。

Splunk AppDynamics インストゥルメンテーションのワークフロー

サンプル アプリケーション

この GitHub リポジトリで、マルチビルドパック アプローチについて示すサンプルアプリケーションを見つけることができます。

.NET Framework アプリケーション(マルチビルドパック)

.Net Framework アプリケーションは、appdbuildpack ビルドパックが標準の hwc_buildpack ビルドパックと組み合わせて使用されるマルチビルドパック アプローチを使用してプッシュされます。

  1. アプリケーションの manifest.yml の次のセクションを編集します。

  2. buildpacks セクションに appdbuildpack を含めます。

  3. アプリケーション環境変数 APPD_AGENTdotnet に設定します。

  4. アプリケーションと階層の環境変数を設定します。

  5. アプリケーション マニフェストの services セクションで、アプリケーションを Splunk AppDynamics サービスインスタンスにバインドします。

    ---
    applications:
    - name: cf-net
      memory: 2G
      buildpacks:
    	- appdbuildpack
    	- hwc_buildpack
      stack: windows2016
      env:
    	APPD_AGENT: dotnet
    	APPDYNAMICS_AGENT_APPLICATION_NAME: my-cf-net-app
    	APPDYNAMICS_AGENT_TIER_NAME: cf-net-app
      services:
    	- appd
    CODE
  6. cf push コマンドを使用してアプリケーションをプッシュします。

    $ cf push
    CODE


詳細設定

appdbuildpack では、エージェントバイナリのダウンロードをカスタマイズし、エージェントの詳細設定を拡張するために、それぞれ APPD_AGENT_HTTP_URL および APPD_CONF_HTTP_URL 環境変数が用意されています。詳細については、Cisco AppDynamics 拡張ビルドパックCisco AppDynamics 拡張ビルドパックのドキュメントを参照してください。

.NET Core for Linux アプリケーション(マルチビルドパック)

.Net Core アプリケーションは、appdbuildpack ビルドパックが標準の dotnet_core_buildpack ビルドパックと組み合わせて使用されるマルチビルドパック アプローチを使用してプッシュされます。

  1. アプリケーションの manifest.yml の次のセクションを編集します。

  2. buildpacks セクションに appdbuildpack を含めます。

  3. アプリケーション環境変数 APPD_AGENTdotnet-linux に設定します。

  4. アプリケーションと階層の環境変数を設定します。

  5. アプリケーション環境変数 APPD_AGENT_HTTP_URL を、Splunk AppDynamics .NET Agent for Linux がホストされているカスタム http URL に設定します。これは、このエージェントが現在 NuGet で使用できないため必要です。詳細については、「Cisco AppDynamics 拡張ビルドパック」を参照してください。

  6. 次の内容を使用して、
    ${APPD_CONF_HTTP_URL}/dotnet-linux/AppDynamicsConfig.json の場所でエージェント構成ファイル AppDynamicsConfig.json がホストされているカスタム URL に APPD_CONF_HTTP_URL を設定します。

    {
    	"feature": [
    		"FULL_AGENT"
    	],
    	"log": [
    		{
    		"outputtype": "console"
    		}
    	]
    }
    CODE
  7. アプリケーション マニフェストのサービスセクションで、アプリケーションを Splunk AppDynamics サービスインスタンスにバインドします。

    ----
    applications:
    - name: cf-net-linux
      memory: 2G
      buildpacks:
    	- appdbuildpack
    	- dotnet_core_buildpack
      env:
    	APPD_AGENT: dotnet-linux
    	APPDYNAMICS_AGENT_APPLICATION_NAME: my-dotnet-linux-app
    	APPDYNAMICS_AGENT_TIER_NAME: cf-net-linux
    	APPD_AGENT_HTTP_URL: http://CUSTOM_REPO/AppDynamics-DotNetCore-linux-x64-VERSION.zip
    	APPD_CONF_HTTP_URL: http://CUSTOM_REPO
      services:
    	- appd
    CODE
  8. cf push コマンドを使用してアプリケーションをプッシュします。

    $ cf push
    CODE

詳細設定

appdbuildpack では、エージェントバイナリのダウンロードをカスタマイズし、エージェントの詳細設定を拡張するために、それぞれ APPD_AGENT_HTTP_URL および APPD_CONF_HTTP_URL 環境変数が用意されています。詳細については、Cisco AppDynamics マルチビルドパックのドキュメントを参照してください。

.NET Core Windows アプリケーション(マルチビルドパック)

Windows 用 .Net Core アプリケーションは、appdbuildpack ビルドパックが標準の binary_buildpack ビルドパックと組み合わせて使用されるマルチビルドパック アプローチを使用してプッシュされます。

  1. アプリケーションの manifest.yml の次のセクションを編集します。

  2. buildpacks セクションに appdbuildpack を含めます。

  3. アプリケーション環境変数 APPD_AGENTdotnet-windows に設定します。

  4. アプリケーションと階層の環境変数を設定します。

  5. アプリケーション マニフェストの services セクションで、アプリケーションを Splunk AppDynamics サービスインスタンスにバインドします。

    ---
    applications:
    - name: cf-net-windows
      random-route: true
      memory: 512M
      path: app.zip
      command: dotnetHelloWorld.exe
      stack: windows2016
      buildpacks:
    	- appdbuildpack
    	- binary_buildpack
      env:
    	APPD_AGENT: dotnet-windows
    	APPDYNAMICS_AGENT_APPLICATION_NAME: my-dotnet-windows-app
    	APPDYNAMICS_AGENT_TIER_NAME: cf-net-windows
    	DOTNET_CLI_TELEMETRY_OPTOUT: 1
    	DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
      services:
    	- appd
    CODE
  6. cf push コマンドを使用してアプリケーションをプッシュします。

    cf push
    CODE

詳細設定

appdbuildpack では、エージェントバイナリのダウンロードをカスタマイズし、エージェントの詳細設定を拡張するために、それぞれ APPD_AGENT_HTTP_URL および APPD_CONF_HTTP_URL 環境変数が用意されています。詳細については、Cisco AppDynamics マルチビルドパックのドキュメントを参照してください。

Python アプリケーション(マルチビルドパック)

Python アプリケーションは、appdbuildpack ビルドパックが標準の python_buildpack ビルドパックと組み合わせて使用されるマルチビルドパック アプローチを使用してプッシュされます。

  1. アプリケーションの manifest.yml の次のセクションを編集します。

  2. アプリケーション マニフェストの buildpacks セクションに appdbuildpack を含めます。

  3. アプリケーション環境変数 APPD_AGENTpython に設定します。

  4. アプリケーションと階層の環境変数を設定します。

  5. アプリケーション マニフェストの services セクションで、アプリケーションを Splunk AppDynamics サービスインスタンスにバインドします。

    ---
    applications:
    - name: cf-python
      memory: 500M
      buildpacks:
    	- appdbuildpack
    	- python_buildpack
      env:
    	APPD_AGENT: python
    	APPD_APP_NAME: my-python-app
    	APPD_TIER_NAME: cf-python
      services:
    	- appd
    CODE
  6. アプリケーションをプッシュします。

    $ cf push
    CODE

詳細設定

appdbuildpack では、エージェントバイナリのダウンロードをカスタマイズし、エージェントの詳細設定を拡張するために、APPD_CONF_HTTP_URL 環境変数が用意されています。詳細については、Cisco AppDynamics マルチビルドパックのドキュメントを参照してください。

GoLang アプリケーション(マルチビルドパック)

Go アプリケーションは、appdbuildpack ビルドパックが標準の go_buildpack ビルドパックと組み合わせて使用されるマルチビルドパック アプローチを使用してプッシュされます。

Splunk AppDynamics では、このようなアプリケーションをインストゥルメント化するための SDK が用意されています。SDK API を介して Go エージェントを起動するために必要な設定は、環境変数を介して使用されます。

  1. アプリケーションの manifest.yml の次のセクションを編集します。

  2. アプリケーション マニフェストの buildpacks セクションに appdbuildpack を含めます。

  3. アプリケーション環境変数 APPD_AGENTgolang に設定します。

  4. LD_LIBRARY_PATH 環境変数を、libappdynamics.so が含まれているフォルダに設定します。

  5. os.Getenv("...") を使用して、アプリケーションによって読み取られる内容に基づいて、アプリケーションと階層の環境変数を設定します。

  6. アプリケーション マニフェストの services セクションで、アプリケーションを Splunk AppDynamics サービスインスタンスにバインドします。

    ---
    applications:
    - name: cf-go
      memory: 500M
      buildpacks:
    	- appdbuildpack
    	- go_buildpack
      env:
    	APPD_AGENT: golang
    	APPD_APPLICATION_NAME: my-go-app
    	APPD_TIER_NAME: go-tier
    	LD_LIBRARY_PATH: /app/vendor/appdynamics/lib
      services:
    	- appd
    CODE
  7. 以下のスニペットをコピーして貼り付けて、Go エージェントを初期化します。

    package main
    import (
    	  ...
    	  appd "appdynamics"
    )
    
    	...
    	  cfg := appd.Config{}
    	  cfg.AppName = os.Getenv("APPD_APPLICATION_NAME")
    	  cfg.TierName = os.Getenv("APPD_TIER_NAME")
    	  cfg.NodeName = os.Getenv("APPD_NODE_NAME")
    	  cfg.NodeName = os.Getenv("APPD_NODE_NAME") + ":" + os.Getenv("CF_INSTANCE_INDEX")
    
    
    	  /* Controller Configuration */
    	  cfg.Controller.Host = os.Getenv("APPD_CONTROLLER_HOST")
    	  port, err := strconv.ParseInt(os.Getenv("APPD_CONTROLLER_HOST"), 10, 16)
    	  if err != nil {
    		return err
    	  }
    	  cfg.Controller.Port = uint16(port)
    	  cfg.Controller.Account = os.Getenv("APPD_ACCOUNT_NAME")
    	  cfg.Controller.AccessKey = os.Getenv("APPD_ACCOUNT_ACCESS_KEY")
    	  cfg.InitTimeoutMs = 1000
    
    	  err = appd.InitSDK(&cfg)
    	  if err != nil {
    		  fmt.Println(err)
    	  }
    	  ...
    CODE
  8. Splunk AppDynamics Golang エージェントを起動するために必要な設定は、環境変数 APPD_APPLICATION_NAMEAPPD_TIER_NAMEAPPD_NODE_NAMEAPPD_CONTROLLER_HOSTAPPD_ACCOUNT_NAMEAPPD_ACCOUNT_ACCESS_KEY を介して使用されます。

  9. アプリケーションをプッシュします。

    $ cf push
    CODE

詳細設定

appdbuildpack では、エージェントバイナリのダウンロードをカスタマイズし、エージェントの詳細設定を拡張するために、APPD_CONF_HTTP_URL 環境変数が用意されています。詳細については、Cisco AppDynamics マルチビルドパックのドキュメントを参照してください。

Java アプリケーション

Java アプリケーションは、標準の java_buildpack_offline ビルドパックを使用して Splunk AppDynamics によってインストゥルメント化されます。マルチビルドパック アプローチは Java ビルドパックでサポートされていないため、使用されません。

  1. アプリケーションの manifest.yml の次のセクションを編集します。

  2. アプリケーションと階層の環境変数を設定します。

  3. 必要に応じて、APPD_CONF_HTTP_URL 環境変数を、詳細なエージェント構成ファイルがホストされている URL に設定します。詳細については、エージェントの設定の拡張に関するドキュメントを参照してください。また、log4j2.xml ファイルをオーバーライドしてエージェント出力を STDOUT にリダイレクトする方法の例については、サンプル アプリケーション リポジトリの cf-java-sample および cf-configuration-static アプリケーションを参照してください。

  4. 必要に応じて、APPD_CF_NODE_PREFIX 環境変数を設定して、ビルドパックによって割り当てられたノード名の先頭に文字列を追加します。

  5. アプリケーション マニフェストの services セクションで、アプリケーションを Splunk AppDynamics サービスインスタンスにバインドします。

    ---
    applications:
    - name: cf-java-app
      memory: 1G
      random-route: true
      path: build/libs/cf-java-sample-1.0.jar
      buildpacks:
    	- java_buildpack_offline
      env:
    	APPDYNAMICS_AGENT_APPLICATION_NAME: my-java-app
    	APPDYNAMICS_AGENT_TIER_NAME: cf-java-app
    	APPD_CONF_HTTP_URL: http://custom-http-server.com
    	APPD_CF_NODE_PREFIX: my-node-prefix
      services:
    	- appd
    CODE
  6. アプリケーションをプッシュします。

    $ cf push
    CODE

詳細設定

VMware Tanzu Java アプリケーションの Splunk AppDynamics インストゥルメンテーションは appdbuildpack を使用しないため、設定は java_buildpack によって直接管理されます。

標準の java_buildpack に関するドキュメントを参照してください。

Node.js アプリケーション(マルチビルドパック)

Node.js アプリケーションは、appdbuildpack ビルドパックが標準の nodejs_buildpack ビルドパックと組み合わせて使用されるマルチビルドパック アプローチを使用してプッシュされます。

  1. アプリケーションの manifest.yml の次のセクションを編集します。

  2. buildpacks セクションに appdbuildpack を含めます。

  3. アプリケーション環境変数 APPD_AGENTnodejs に設定します。

  4. アプリケーションと階層の環境変数を設定します。

  5. 必要に応じて、環境変数 APPDYNAMICS_LOGGER_OUTPUT_TYPEconsole に設定して、エージェントログをストリーミングします。

  6. 必要に応じて、Node.js エージェントパッケージがホストされている内部リポジトリを指すように環境変数 APPD_CDN_BASE_URL を設定します。これにより、パブリックインターネットでホストされ、通常は VMware Tanzu 環境では使用できないデフォルトの Splunk AppDynamics リポジトリがオーバーライドされます。

  7. アプリケーション マニフェストの services セクションで、アプリケーションを Splunk AppDynamics サービスインスタンスにバインドします。

    applications:
    - name: cf-node
      memory: 500M
    env:
      APPD_AGENT: nodejs
      APPDYNAMICS_AGENT_APPLICATION_NAME: my-nodejs-app
      APPDYNAMICS_AGENT_TIER_NAME: cf-nodejs
      APPDYNAMICS_LOGGER_OUTPUT_TYPE: console
      APPD_CDN_BASE_URL: http://internalrepo.com
    services:
    	- appd
    CODE
  8. 必要に応じて、エージェントを設定するための環境変数を指定します。サポートされている環境変数のリストを以下に示します。

    環境変数説明
    APPDYNAMICS_AGENT_APPLICATION_NAME

    Splunk AppDynamics コントローラに報告されるアプリケーション名

    APPDYNAMICS_AGENT_TIER_NAME

    Splunk AppDynamics コントローラに報告されるアプリケーションの階層名

    APPD_AGENT_DEBUGエージェントのデバッグレベルのロギングを有効にするには、true に設定します。デフォルトはfalse。
    APPD_AGENT_LIBAGENTエージェントのプロキシなしバージョンを制御します。デフォルトは true です。Node.js エージェントのプロキシバージョンを使用する場合は、false に設定します。
    APPD_LOG_CONFIGエージェントのログ記録に関連する場所、レベル、およびその他の設定。「Node.js エージェントログ」を参照してください。
  9. アプリケーションをプッシュします。

    $ cf push
    CODE

デフォルト設定の拡張

プロキシ設定の拡張

プロキシサーバーを使用している場合、コンシューマ アプリケーションは、VMware Tanzu で実行されているアプリケーションがプロキシサーバーと通信するための環境変数として、http_proxy または https_proxy を指定する必要があります。次の手順を実行します。

  1. アプリケーションとコントローラの環境変数を設定します。

    • HTTP プロキシの場合:cf set-env http_proxy http://user@password:myproxy....:8080/

    • HTTPS プロキシの場合:cf set-env https_proxy https://user@password:myproxy....:8080/

  2. アプリケーションを再ステージングします。cf restage <app-name>

  3. コントローラ Web UI にログインし、メトリックブラウザに移動して、アプリケーションが検出およびモニターされていることを確認します。

Splunk AppDynamics のユーザー提供サービスの使用

サービスブローカータイルを使用する上記の手順に加えて、オペレータは appdynamics という名前のユーザー提供サービスを使用して、Splunk AppDynamics でアプリケーションをインストゥルメント化することもできます。

  1. JSON フィールドを指定して、以下の cf cups コマンドを使用します。

  2. ユーザー提供サービスの名前は appdynamics にする必要があり、その JSON クレデンシャルには、account-access-keyaccount-namehost-nameport、および ssl-enabled フィールドが必要です。

    $ cf cups appdynamics -p '{"account-access-key":"acce$$key", "account-name":"customer1", "host-name":"demo.appdynamics.com", "port":"8090", "ssl-enabled":false}'
    CODE

VMware Tanzu でのマシンエージェントの展開

このトピックは、VMware Tanzu(VMware Tanzu)プラットフォームにマシンエージェントを展開するために役立ちます。

ご使用になる前に

  • アプリケーションを展開、実行、および管理するために、Cloud Foundry での管理者またはスペース開発者のアクセス権を取得します。アクセス権の詳細については、Cloud Foundry のドキュメントを参照してください。
  • マシンエージェントをダウンロードします。

マシンエージェントのセットアップ

  1. GitHub リポジトリをセットアップします。

    git clone https://github.com/Appdynamics/cloudfoundry-apps
    cd cloudfoundry-apps/cf-machine-agent
    CODE
  2. マシンエージェントが、ダウンロードポータルから現在のディレクトリにダウンロードされていることを確認します。

    MachineAgent-4.5.11.2163.zip
    cd MachineAgent-4.5.11.2163
    (master)$ ls
    bin			local-scripts		monitorsLibs
    conf		machineagent.jar	readme.txt
    extensions	machineagent.jar.asc	readme.txt.asc
    lib			monitors		scripts
    CODE


  3. マシンエージェントの拡張機能がある場合は、cloudfoundry-apps/cf-machine-agent 拡張ディレクトリにコピーします。拡張機能は、extension_folder/{.jar, *.monitor.xml} を含む .zip 形式である必要があることに注意してください。低下要因になっています。

    $ cp ~/Downloads/rabbitmqmonitor-2.0.2.zip extensions/
    CODE
  4. manifest.ymlJAVA_OPTS セクションを編集して、コントローラ情報を追加します。たとえば、詳細を入力した後の manifest.yml は次のようになります。

    ---
    applications:
    - name: appdynamics-machine-agent
    memory: 1G
    health-check-type: process
    no-route: true
    buildpack: java_buildpack_offline
    path: MachineAgent.zip
    env:
      JAVA_OPTS: '-Dappdynamics.agent.accountAccessKey=accessKey -Dappdynamics.agent.accountName=customer1 -Dappdynamics.controller.hostName=mycontroller.com -Dappdynamics.controller.port=<port> -Dappdynamics.agent.applicationName=myAppName -Dappdynamics.agent.uniqueHostId=myUniqueHostId -Dappdynamics.controller.ssl.enabled=false'
    CODE
  5. package.shの実行

    このスクリプトは、拡張機能の zip ファイルをマシンエージェントのモニターディレクトリにパッケージ化し、マシンエージェントをクリーンアップして、VMware Tanzu の要件ごとにファイルの権限を調整します。

    $ ./package.sh
    Creating workdir tmp
    Moving MachineAgent to tmp dir
    Unzipping MachineAgent
    Unzipping Extensions from ../extensions to ./monitors Directory
    Cleaning MachineAgent - removing *.asc files
    Adjusting permissions as per requirement from CloudFoundry
    Packaging MachineAgent
    CODE
  6. cf push を使用してマシンエージェントを展開します。

    $ cf push
    CODE
  7. cf apps を使用してアプリケーションが実行されていることを確認し、コンテナ(home/vcap/app)のアプリケーションログを確認して、拡張機能が機能していることを検証します。

    $ cf apps
    Getting apps in org appdynamics-org / space appdynamics-space as admin...
    OK
    appdynamics-machine-agent   started           1/1         1G       1G
    CODE

    MachineAgent.zip 内の conf/logging/log4j.xml ファイルで、コンソールにログを記録するように設定できます(デフォルトでは、ファイルシステムにログを記録します)。