VMware Tanzu 用 AppDynamics アプリケーション パフォーマンス モニタリングのワークフロー

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

はじめる前に 

次の手順を実行します。
  1. Broadcom アカウントがない場合は作成します。
  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
  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
  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
  6. コマンドを使用してアプリケーションをプッシュします。
    $ cf push
詳細設定の場合:

appdbuildpack では、エージェントバイナリのダウンロードをカスタマイズし、エージェントの詳細設定を拡張するために、それぞれ APPD_AGENT_HTTP_URL および APPD_CONF_HTTP_URL 環境変数が用意されています。詳細については、Splunk 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 を、エージェント設定ファイル AppDynamicsConfig.json がロケーション ${APPD_CONF_HTTP_URL}/dotnet-linux/AppDynamicsConfig.json でホストされているカスタム URL に設定します。
    {
    "feature": [
    "FULL_AGENT"
    ],
    "log": [
    {
    "outputtype": "console"
    }
    ]
    }
  7. アプリケーションマニフェストの services セクションで、アプリケーションを 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
  8. コマンドを使用してアプリケーションをプッシュします。
    $ cf push
詳細設定の場合:

appdbuildpack では、エージェントバイナリのダウンロードをカスタマイズし、エージェントの詳細設定を拡張するために、それぞれ APPD_AGENT_HTTP_URL および APPD_CONF_HTTP_URL 環境変数が用意されています。詳細については、Splunk 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
  6. cf push を使用してアプリケーションをプッシュします。
    cf push
詳細設定の場合:

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

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

Python アプリケーションは、 ビルドパックが標準の ビルドパックと組み合わせて使用されるマルチビルドパック アプローチを使用してプッシュされます。
  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
  6. アプリケーションをプッシュします。
    $ cf push
詳細設定の場合:

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

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

Go アプリケーションは、appdbuildpack ビルドパックが標準の go_buildpack ビルドパックと組み合わせて使用されるマルチビルドパック アプローチを使用してプッシュされます。Splunk AppDynamicsSDK 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
  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)
    }
    ...
    Splunk AppDynamics Golang エージェントを起動するために必要な設定は、環境変数 APPD_APPLICATION_NAMEAPPD_TIER_NAMEAPPD_NODE_NAMEAPPD_CONTROLLER_HOSTAPPD_ACCOUNT_NAMEAPPD_ACCOUNT_ACCESS_KEY を介して使用されます。
  8. アプリケーションをプッシュします。
    $ cf push
詳細設定の場合:

appdbuildpack では、エージェントバイナリのダウンロードをカスタマイズし、エージェントの詳細設定を拡張するために、それぞれ APPD_CONF_HTTP_URL 環境変数が用意されています。詳細については、Splunk 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 アプリケーションを参照してください。cf-java-samplecf-configuration-statichttps://github.com/CiscoDevNet/cloudfoundry-appslog4j2.xmlSTDOUT.
  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
  6. アプリケーションをプッシュします。
    $ cf push

VMware Tanzu Java アプリケーションの Splunk AppDynamics インストゥルメンテーションは appdbuildpack を使用しないため、設定は java_buildpack によって直接管理されます。標準の https://github.com/cloudfoundry/java-buildpack/blob/main/docs/framework-app_dynamics_agent.md に関するドキュメントを参照してください。

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
  8. オプション: 必要に応じて、エージェントを設定するための環境変数を指定します。
    サポートされている環境変数のリストを以下に示します。
    環境変数 説明
    APPDYNAMICS_AGENT_APPLICATION_NAME

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

    APPDYNAMICS_AGENT_TIER_NAME

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

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

デフォルト設定の拡張

プロキシサーバーを使用している場合、コンシューマ アプリケーションは、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 でアプリケーションをインストゥルメント化することもできます。

JSON フィールドを指定して、以下の cf cups コマンドを使用します。cf cups
ユーザー提供サービスの名前は 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}'
詳細については、「Cloud Foundry CLI リファレンス」を参照してください。

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
  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
  3. マシンエージェントの拡張機能がある場合は、cloudfoundry-apps/cf-machine-agent 拡張ディレクトリにコピーします。
    拡張機能は、extension_folder/{.jar, *.monitor.xml} を含む .zip 形式である必要があることに注意してください。例:
    $ cp ~/Downloads/rabbitmqmonitor-2.0.2.zip extensions/
  4. manifest.yml の JAVA_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'
  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
  6. を使用してマシンエージェントを展開します。
    $ cf push
  7. home/vcap/app を使用してアプリケーションが実行されていることを確認し、コンテナ(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
    注: MachineAgent.zip 内の conf/logging/log4j.xml ファイルで、コンソールにログを記録するように設定できます(デフォルトでは、ファイルシステムにログを記録します)。