Cloud Foundry へのホスト・エージェントのインストール

Cloud Foundry に Instana ホストエージェントをインストールして設定するには、 Instana エージェントのBOSHリリースをダウンロードし、そのリリースをBOSHディレクターにアップロードし、 Instana UAAクライアントを作成し、BOSHアドオンを設定します。

BOSHリリースを使用して Instana エージェントをデプロイする

注: このページは、Pivotal Platform(旧称:Pivotal Cloud Foundry )やBOSHを使用して Cloud Foundry 以外のソフトウェアをデプロイする場合ではなく、オープンソース版の Cloud Foundry を使用している場合にのみ該当します。 Pivotal Platform および Pivotal Ops Manager をご利用の場合は、「 Instana Microservices Application Monitoring for Pivotal Platform 」タイルのご利用を強くお勧めします。

Instana エージェントのBOSHリリースのダウンロード

注:Instana は、BOSHのリリースを当社の公開リポジトリ Artifactory で公開しています。 このリポジトリーにログインするには基本 HTTP 認証が必要です。ユーザー名には _ を、パスワードには有効なエージェント・キーを使用してください。 Instana のUIにあるダウンロードリンクには、ユーザー名とエージェントキーが事前に入力されていますので、そのままご利用いただけます。

Instana エージェントのBOSHリリースをダウンロードするには、以下の手順に従ってください:

  1. Instana UIのホームページで、 「エージェントとコレクター」 をクリックします。 [ Instana ] の [エージェント] タブで、 [エージェントのインストール] を選択します。

    注:Instana の新しい試用インスタンスを起動する場合、エージェントカタログが表示され、インストールするホストエージェントを選択するよう求められます。
  2. タイル Cloud Foundry および BOSH をクリックします。

  3. 手順 1: ダウンロードしたい Instana エージェントのBOSHリリースを入力してください。

    利用可能なBOSHのリリースを確認するには、 Artifactory の公開リポジトリにログインし、リリースディレクトリをご覧ください。

  4. ステップ 2: 「instana-agent」リリース・アーカイブをダウンロードします。

BOSH Director への Instana エージェント BOSH リリースのアップロード

エージェント・リリース・アーカイブがダウンロードされたら、以下のコマンドを実行して、それらを BOSH Director にアップロードします。

bosh upload-release <path/to/agent-bosh-xyz.tar.gz>
 

Instana エージェントのランタイム構成の適用

Instana エージェントのBOSHリリースを組織全体に展開するには、BOSH ランタイム構成を使用してください。

Instana エージェントのBOSHリリースをすべてのデプロイメントに展開するには、以下の手順に従ってください:

  1. 以下のように、 yml 文書で、ユース・ケースに適合する (REQUIRED) および (Optional) のマークが付いたフィールドの値を入力します。

  2. ランタイム構成を BOSH Director にアップロードするために、bosh update-runtime-config コマンドを実行します。 ランタイム構成が更新されると、すべてのデプロイメントが古いものと見なされます。

  3. 各デプロイメントに対して次回 bosh deploy を実行したときに、Director によってランタイム構成の変更がそのデプロイメントに適用されます。

    releases:
      - name: instana-agent
        version:
          # (REQUIRED) Fill in the value with the actual release version.
          # For example, if you downloaded the file
          # agent-bosh-1.157.31.tar.gz, the right value is: 1.157.31
    
    addons:
      - name: instana-agent-infrastructure
        jobs:
          - name: instana-agent
            release: instana-agent
            properties:
              tanzu:
                foundation:
                  id: # (REQUIRED) A technical ID to identify this foundation
                  name: # (REQUIRED) A name to identify this foundation
              instana:
                agent: &agent-configuration
                  mode: INFRASTRUCTURE
                  endpoint: # (REQUIRED) Instana ingress endpoint, e.g., ingress-red-saas.instana.io
                  endpoint_port: # (Optional) Instana ingress endpoint port, default is 443
                  key: # (REQUIRED) Fill this with the agent key for your Instana tenant unit
                  download_key: # (Optional) Download key for downloading agent updates.
                    # This is necessary only in special cases, like running a private update repository.
                    # If not specified, the agent will fall back to the value 'instana.agent.key'.
                  zone: # (Optional, not advised) the name of the zone of the host.
                    # If unspecified, the value of `tanzu.foundation.name` will be used instead.
    
                  # (Optional) Add further configurations for the Agent's configuration.yaml files.
                  # Activate support for the JREs used in the latest Java buildpacks
                  custom_configuration: |
    
                  # (Optional) Add more environment variables to be passed to the Instana agent.
                  # Experimental flags of the Instana agent are activated using environment variables.
                  # It is not advised to use these settings unless instructed by Instana's support.
                  # Each environment variable must be entered in a text line.
                  # This entire stanza can be omitted if there is no proxy between the Instana agents and the Instana backend
                  environment: |
                    USE_ATTACH_TOOLS=true
                  proxy:
                    type: # (Optional) Type of proxy to be used by the agent to connect to the Instana backend.
                    # Valid values are 'http' (works also for HTTPS proxies), 'socks4' and 'socks5'.
                    # Default is to use no proxy.
                    host: # (Optional) Hostname of the proxy server, e.g., 'my.proxy' (without protocol).
                      # This property is required if a value is set for 'instana.agent.proxy.type', and ignored otherwise.
                    port: # (Optional) Port of the proxy server.
                      # This property is required if a value is set for 'instana.agent.proxy.type', and ignored otherwise.
                    user: # (Optional) User to be used to authenticate against the proxy server.
                      # Default is not to use authentication.
                      # This property is ignored if 'instana.agent.proxy.type' has no value set.
                    password: # (Optional) Password to be used to authenticate against the proxy server.
                      # Default is not to use authentication.
                      # This property is ignored if 'instana.agent.proxy.type' or 'instana.agent.proxy.user' have no value set.
                    dns: # (Optional) If set to 'true', DNS will be used to resolve the proxy address.
                      # Default is 'true'.
                      # This property is ignored if 'instana.agent.proxy.type' has no value set.
                    updates:
                      mode:
                        dynamic # Whether the agent should update itself dynamically ("dynamic") or not ("static", default).
                        # Default is dynamic.
                      dynamic:
                        repository:
                          hostname:
                            artifact-public.instana.io # The hostname of the repository to tap for updates to agent and sensors.
                            # The agent will connect to the repository on port 80 and 443.
                          version: # (Optional) Which version of the updates pack to use without further updates (version pinning).
                            # This setting overrides 'instana.agent.updates.dynamic.frequency' and 'instana.agent.updates.dynamic.time'.
                          frequency:# (Optional) How often to update the agent.
                            # Valid values are "DAY" (default, means daily updates), "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" and "SUNDAY".
                            # Default is 'DAY'.
                          time: # Time of day when the update is executed, expected in hh:mm format in UTC.
                            # Default is '04:30'.
        include:
          stemcell: &supported-linux-stemcells
            - alias: ubuntu-trusty
              os: ubuntu-trusty
            - alias: ubuntu-xenial
              os: ubuntu-xenial
            - alias: ubuntu-bionic
              os: ubuntu-bionic
            - alias: centos-7
              os: centos-7
        exclude:
          jobs:
            - name: garden
              release: garden-runc
      - name: instana-agent-apm
        jobs:
          - name: instana-agent
            release: instana-agent
            properties:
              instana:
                agent:
                  <<: *agent-configuration
                  mode: APM
        include:
          jobs:
            - name: garden
              release: garden-runc
          stemcell: *supported-linux-stemcells
     

エージェントの更新に関するポリシーの詳細については、「 エージェントのバージョン管理と更新管理 」のドキュメントページをご覧ください。

Cloud Foundry センサーの構成

Instana エージェントは、 Cloud Foundry ( API )から、 Cloud Foundry のアプリケーション、スペース、および組織に関するデータを取得することができます。 Instana は、この情報を使用して以下のような Cloud Foundry 関連機能を強化します。

構成されていれば、どの Instana エージェントも Cloud Foundry API から必要なデータを収集できます。 ただし、 いつでもデータを収集するために推奨されるのは 1 つのエージェントのみですです。 タイルを使用すると、自動的に 1 つの Instana エージェントが収集を行います。これは、複数の Instana エージェントをホット・スタンバイ状態にして Cloud Foundry API データを収集できるようにするリーダーシップ選出メカニズムによって透過的に実現しています。これにより、例えば BOSH デプロイメントのローリング更新などでデータが継続的に取得されるようになります。 ただし、BOSH を使用して Instana エージェントを直接デプロイする場合は、Cloud Foundry センサーのセットアップを明示的に構成する必要があります。これは以下の方法で実行できます。

  1. 推奨: Cloud Controller 仮想マシン上で実行中の Instana エージェントに、BOSHランタイム設定を通じて Cloud Foundry ( API )のデータを収集させる
  2. Cloud Foundry API からデータを収集するように特別に構成された Instana エージェントを実行する専用の instance_group BOSH インスタンスを起動する

クラウドコントローラーマシンへの共置

以下の実行時設定により、Cloud Controllerの各インスタンス上で実行されている Instana エージェントが、 Cloud Foundry API のデータを収集できるようになります。また、 この ZooKeeper リリースで提供されるリーダーシップ選出メカニズムを通じて、どの Instana エージェントがどのタイミングでデータを収集するかを調整します:

releases:
  - name: instana-agent
    version:# (REQUIRED) Fill in the value with the actual release version.
      # For example, if you downloaded the file
      # agent-bosh-1.157.31.tar.gz, the right value is: 1.157.31
  - name: zookeeper
    version: "0.0.10"
    url: "https://bosh.io/d/github.com/cppforlife/zookeeper-release?v=0.0.10"
    sha1: "a6d227abceebf1e3e68ce4a3cabf68b0b93165d2"

addons:
  - name: instana-cf-sensor
    jobs:
      - name: instana-agent-configuration-cf-sensor
        release: instana-agent
        properties:
          tanzu:
            foundation:
              id: # (REQUIRED) A technical ID to identify this foundation
              name: # (REQUIRED) A name to identify this foundation
          cf:
            uaa:
              client: # (REQUIRED) A UAA client that has the 'cloud_controller.admin_read_only' authorities
              client_secret: # (REQUIRED) Client secret matching the above client
      - name: zookeeper
        release: zookeeper
        properties:
          leader_serves: "yes"
          # 42600 is the legacy leadership election port and we wanna avoid incompatibilities over update
          leader_election_port: 42601
          quorum_port: 42602
    include:
      jobs:
        - name: cloud_controller_ng
          release: capi
 

この実行時設定によると、 Instana エージェントには、 Cloud Foundry のユーザーアカウントおよび認証(UAA) に対して cloud_controller.admin_read_only 権限を持つクライアントが必要です。このクライアントは、以下のいずれかの方法で作成できます:

  • Cloud Foundry のドキュメントにある 「UAA CLI(UAAC)を使用したユーザーの作成と管理」 のページに示されている手順に従い、手動で行います。
  • 推奨: instana-agent BOSH リリースの instana-ensure-uaa-client ジョブを使用して自動的に作成する。この場合、以下の BOSH ランタイム構成を追加で使用します。
releases:
  - name: instana-agent
    version:# (REQUIRED) Fill in the value with the actual release version.
      # For example, if you downloaded the file
      # agent-bosh-1.157.31.tar.gz, the right value is: 1.157.31

addons:
  - name: instana-ensure-uaa-client
    jobs:
      - name: instana-ensure-uaa-client
        release: instana-agent
        properties:
          cf:
            uaa:
              client: # (REQUIRED) This entry must match the one of the `cf.uaa.client` property of the `instana-cf-sensor` runtime configuration
              client_secret: # (REQUIRED) This entry must match the one of the `cf.uaa.client_secret` property of the `instana-cf-sensor` runtime configuration
    include:
      jobs:
        - name: uaa
          release: uaa
 

instana-ensure-uaa-client ジョブを使用する推奨の方法には、UAA client を誤って削除しても自動的に再作成されるという追加の利点があります。 注意点として、instana-ensure-uaa-clientuaa ジョブが実行される仮想マシンに配置して、この仮想マシンで利用可能な資格情報を使用できるようにする必要があります。

専用のインスタンス・グループ

専用の BOSH インスタンス・グループを作成して、Cloud Foundry センサーを実行するように構成された専用の Instana エージェントをデプロイすることが可能です。 ただし、コンピューティング・リソースがかなり無駄になるため、これはお勧めできません。センサーの作業は軽量であり、そのために専用の仮想マシンを割り当てるのは過剰です。 いずれにしても、以下のランタイム構成では、専用の仮想マシンが 1 つ含まれたインスタンス・グループを生成します。

---
name: instana-cf-sensor

stemcells:
  - alias: &stemcell_name bosh-aws-xen-hvm-ubuntu-xenial-go_agent
    os: ubuntu-xenial
    version: "621.29"

releases:
  - name: instana-agent
    version: <instana-agent-bosh-release-version>

instance_groups:
  - name: instana-cf-sensor
    azs: ...
    instances: 1
    jobs:
      - name: instana-agent-configuration-cf-sensor
        release: instana-agent
        properties:
          cf:
            api:
              url: <TODO> # e.g., https://api.sys.mypcf.qainfra.instana.io
            uaa:
              url: <TODO> # e.g., https://uaa.sys.mypcf.qainfra.instana.io
              client: <TODO>
              client_secret: <TODO>
    vm_type: t3.micro
    stemcell: *stemcell_name
    networks:
      # Your network setup may look different
      - default:
          - dns
          - gateway
        name: instana-cf-sensor

update:
  canaries: 1
  canary_watch_time: 30000-300000
  max_errors: 2
  max_in_flight: 1
  serial: false
  update_watch_time: 30000-300000
 

注:

  1. このインスタンス・グループには 1個のインスタンスが含まれています。 グループ内のインスタンスを複数に増やしてローリング更新間の回復力を確保するには、ZooKeeper ジョブを同じ名前の ZooKeeper リリースからマシンに追加でデプロイする必要があります。 instana-agent-configuration-cf-sensor は、( BOSH リンクを介して) リーダーシップ選択メカニズムの存在を自動的に検出し、それを透過的に採用します。
  2. UAA API と Cloud Foundry API の URI を手動で構成する必要があります。 つまり、技術的にはこのデプロイメントを Cloud Foundry デプロイメントが使用するものとはまったく別のネットワーク、さらにはアベイラビリティー・ゾーンで実行できます。
  3. Cloud Foundry のドキュメントにある 「UAA CLI (UAAC) を使用したユーザーの作成と管理 」のページに示されているように、権限 cloud_controller.admin_read_only 発行機関(AIA)でUAAクライアントとそれに対応するクライアントシークレットを作成する必要があります。

Instana エージェント・ランタイム構成の削除

Instana ランタイム構成を削除するには、bosh update-runtime-config コマンドを実行して以下をアップロードします。

releases: []
addons: []
 

ランタイム構成を更新すると、各デプロイメントで次回 bosh deploy を実行したときに Instana エージェントの BOSH リリースが削除されます。 すべてのデプロイメントが更新されて Instana エージェントの BOSH ジョブが削除されたら、bosh clean-up コマンドを実行して、不要になったリリースとその成果物を BOSH Director から削除することをお勧めします。

エージェントの展開に関するトラブルシューティング

エージェントのインストールに失敗した場合は、ログメッセージやトラブルシューティングのヒントを確認してください。 このトラブルシューティングの手順で問題が解決しない場合は、 IBM ( Instana )のサポートチームに、発生した状況の詳細をお知らせください。 この情報は、お客様へのサポートやドキュメントの改善に役立てられます。

すべてのホストエージェントに共通するトラブルシューティングに関する情報については、 「トラブルシューティング」 を参照してください。