Linuxにおけるイベントサービスのインストール

このページでは、CLIを使用してLinuxシステムでイベントサービスをインストールおよび管理する方法について説明します。Enterprise Consoleを使用して埋め込みイベントサービスをスケールアップする手順についても説明します。

Enterprise Console では、GUI または CLI のいずれかを使用するイベントサービスデプロイのインストールおよび管理のタスクが自動化されます。Enterprise Console を使用したイベントサービスのインストールについては、「カスタムインストール」を参照してください。

警告: イベントサービスのインストールでインストールディレクトリやデータディレクトリを指定する必要はありません。指定する場合は、プラットフォームディレクトリ以外のディレクトリを指定します。

イベントサービスホストの要件

始める前に、イベントサービスと Enterprise Console の使用に関する既知の問題と最新情報について、「リリースノートNo Content found for /db/organizations/splunk/repositories/portal-production/content/documents/AppDynamics/on_premises/c_release_notes.dita」で必ず確認してください。また、以下の要件についても確認してください。

  • イベントサービスは、単一のノード、または 3 つ以上のノードのマルチノードクラスタとしてデプロイできます。

  • コントローラのための Linux の準備」に記載されているように、サポートされている Linux バージョンには、コントローラでサポートされているフレーバやバージョンが含まれています。
  • イベントサービスは専用マシンで実行する必要があります。そのマシンでは、イベントサービスに関連しない他のアプリケーションまたはプロセスを実行しないでください。

  • イベントサービスマシン用に適切にサイズ指定されたハードウェアを使用します。Enterprise Consoleは、ターゲットシステムが最小ハードウェア要件に適合しているかどうかをチェックします。これらの要件の詳細については、「イベントサービスクラスターのインストール」にある、イベントサービスのインストールコマンドの profile 引数の説明を参照してください。
  • コントローラとイベントサービスは、同じローカルネットワーク上に配置されていて、内部ネットワークで通信できる必要があります。互いに関連していても、Enterprise Console が実行されているコントローラに関連していても、別のネットワークにあるノードにクラスタをデプロイしないでください。構成でクラスタホストを特定する場合は、そのホストの外部ルーティング対応の DNS 名ではなく、ホストの内部 DNS 名または IP アドレスを使用する必要があります。たとえば、AWS デプロイメントの場合は、ec2-34-201-129-89.us-west-2.compute.amazonaws.com のようなパブリック DNS ホスト名ではなく、172.31.2.19 のようなプライベート IP アドレスを使用します。
  • 各イベントサービスホストで適切なポートが開いていることを確認します。詳細については、「ポート設定」を参照してください。

  • Enterprise ConsoleはSSHキーを使用してイベントサービスホストにアクセスします。そのキーの作成については次のセクションを参照してください。

  • イベントサービスのノードは、通常はロードバランサの内側で運用されます。イベントサービスのノードのインストール時に、Enterprise Consoleはコントローラからそのノードへの直接接続を自動的に構成します。クラスタを展開すると、最初のプライマリノードはコントローラ内の接続ポイントとして自動的に構成されます。インストール後に、以下に説明している手順に従って、ロードバランサのVIPを介して接続するようにコントローラを再構成する必要があります。構成例については、「ロード バランス イベント サービス トラフィック」を参照してください。

注: /tmp ディレクトリに実行権限を付与することをお勧めします。付与しない場合、インストールはエラーで失敗します。ただし、このエラーをトラブルシューティングするには、次を参照してください。

/tmp ディレクトリに実行権限がない場合のエラー

.

ポート設定

外部(クラスター外)の通信にアクセスできる以下のポートが各マシンに必要です。

  • イベントサービスAPIストアのポート:9080
  • イベントサービスAPIストアの管理ポート:9081

クラスタについては、以下のポートがクラスタ内のマシン間の通信に対してオープンな状態であることを確認します。通常、以下のポートを開くには、各マシンで iptables または OS レベルのファイアウォール ソフトウェアを構成する必要があります。

  • 9300 ~ 9400

以下に、iptables の例を示します。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9081 -j ACCEPT
-A INPUT -m state --state NEW -m multiport -p tcp --dports 9300:9400 -j ACCEPT

イベントサービスノードでポートがブロックされている場合、そのノードに対するイベントサービスのインストールコマンドは失敗し、Enterprise Console のコマンド出力とログに次のようなエラーメッセージが含まれます。

failed on host: <ip_address> with message: Uri [http://localhost:9080/_ping] is un-pingable.

このエラーが発生した場合は、このセクションで示しているポートが他のクラスタノードで利用可能であることを確認します。

SSHキーの作成

イベントサービスのインストール時に、Enterprise Console がリモートでイベントサービスホストにアクセスするために使用できる SSH キーを指定する必要があります。始める前に、公開鍵と秘密鍵の PEM ファイルを RSA 形式で作成します。キーファイルにはパスワード保護を使用しないでください。

たとえば、ssh-keygen を使用する場合は、次のコマンドでキーを作成できます。

ssh-keygen -t rsa -b 2048 -v -m pem

パスワード不要のSSHログインの構成

Enterprise Console は、パスワード不要の SSH を使用して各クラスタマシンにアクセスできる必要があります。始める前に、鍵ベースの SSH アクセスを有効にします。

このセットアップでは、Enterprise Console ホストでキーペアを生成し、クラスタノードで Enterprise Console の公開鍵を認証キーとして追加することも必要です。以下の手順では、この例のシナリオに合わせた構成手順を示しています。そのため、使用している環境に合わせて手順を調整する必要があります。

AWS で EC2 インスタンスを使用している場合は、以下の手順に従って、EC2 ホストをプロビジョニングする場合に対応できるようにします。そのときに、PEM ファイルが要求され、その PEM ファイルの公開キーが authorized_keys にコピーされます。

Enterprise Consoleマシンで以下の手順に従います。

  1. Enterprise Consoleマシンにログインするか、またはデプロイの実行に使用するユーザーに切り替えます。
    su - $USER
  2. SSHアーティファクトのディレクトリを作成し(存在しない場合)、次のようにディレクトリで権限を設定する。
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
  3. そのディレクトリに移動します。
    cd .ssh
  4. 公開鍵と秘密鍵の PEM ファイルを RSA 形式で生成します。
    ssh-keygen -t rsa -b 2048 -v -m pem
    キーファイルにはパスワード保護を使用しないでください。
  5. 要求されたときに、鍵を保存するファイルの名前を入力します(例:appd-analytics)。
  6. .pem 拡張子を追加してキーファイルの名前を変更します。
    mv appd-analytics appd-analytics.pem
    このファイルのパスは、「イベントサービスクラスターのデプロイ」で説明しているように、Enterprise Console の構成ファイルの sshKeyFile 設定として後で構成します。
  7. 公開鍵をクラスタマシンにコピーします。たとえば、次のように scp を使用して転送を実行できます。
    scp ~/.ssh/myserver.pub host1:/tmp
    scp ~/.ssh/myserver.pub host2:/tmp
    scp ~/.ssh/myserver.pub host3:/tmp
    例のとおりの名前を使用している場合、myserver は appd-analytics です。初めて接続するときに、接続を確認して、そのクラスタマシンを known_hosts のリストに追加し、ユーザのパスワードを入力する必要があることがあります。
  8. 各クラスターノード(host1、host2、host3)で、ユーザーのホームディレクトリに .ssh ディレクトリがなければ作成し、コピーした公開キーを認証キーとして追加します。
    cat /tmp/appd-analytics.pub >> .ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
  9. コントローラマシンから ssh を使用してクラスターノードへのログインを試すことによって、構成をテストします。
    ssh host1
    注: 接続できない場合は、クラスタマシンに openssh-server パッケージがインストールされていて、SSH 接続を受け入れるようにオペレーティングシステムのファイアウォールルールを変更していることを確認します。正常に接続できれば、次のセクションで説明しているように、コントローラホストで Enterprise Console を使用してイベントサービスクラスターをデプロイできます。
Enterprise Console が、パスワード不要の SSH が適切に構成されていないノードにイベントサービスをインストールしようとすると、次のようなエラーメッセージが表示されます。
./bin/platform-admin.sh add-hosts --hosts <es_host_1> <es_host_2> <es_host_3> --credential <credential name> --platform-name <name of platform>
...
Failed to connect to the remote host. Please verify that the host name and credentials you provided are correct.
For more information, consult the documentation: https://docs.appdynamics.com/display/PRO45/Administer+the+Enterprise+Console#AdministertheEnterpriseConsole-manage-hostsManageHosts

このエラーが発生した場合は、このセクションの手順に従って、パスワード不要の SSH 構成を再度チェックしてください。また、最初に add-hosts を追加してから event-service をインストールする必要があります。SSH 構成が正しくセットアップされていない場合、add-hosts コマンドは失敗します。

警告: add-hosts コマンドは、プラットフォームにホスト名を追加する際に使用します。events-service のインストール中、ホストはプラットフォームホストから取得され、events-service で使用されます。

実稼働クラスタノードのオペレーティングシステムの調整

イベントサービスクラスタをインストールする前に、以下で説明するいくつかの手動での変更を実行する必要があります。これらは、実稼働イベントサービスの展開に特に関連します。クラスター内の各ノードで、次の設定を変更します。

  1. テキストエディタで /etc/sysctl.conf を開いて、以下の項目を追加します。
    vm.max_map_count=262144
  2. /etc/security/limits.conf で、オープンファイル記述子の上限を次のように引き上げます。
    <username_running_eventsservice>     soft    nofile          96000
    <username_running_eventsservice>     hard    nofile          96000
    <username_running_eventsservice>     soft    memlock         unlimited
    <username_running_eventsservice>     hard    memlock         unlimited
  3. 次のコマンドを実行して、スワップメモリを無効にします。スワップマウントポイントを削除するには、swap という単語を含む /etc/fstab 内の行を削除またはコメント化します。
    swapoff -a

GUIを使用したイベントサービスのインストール

GUI で、[Express Install] オプションを使用すると、コントローラと同じホストにイベントサービスが自動的にインストールされます。[Custom Install] オプションを選択すると、埋め込みまたはスケールアップされたイベントサービスをインストールできます。埋め込みイベントサービスをインストールした後に、スケールアップされたイベントサービスに切り替える場合は、「埋め込みイベントサービスのスケールアップ」で説明している手順を実行します。

CLIを使用したイベントサービスのインストール

  1. ロードバランスをセットアップします。ロードバランサの構成については、「ロード バランス イベント サービス トラフィック」を参照してください。
  2. コマンドラインで、Enterprise Console のインストール時に作成された platform-admin ディレクトリに移動します。「Enterprise Console のインストールNo Content found for /db/organizations/splunk/repositories/portal-production/content/documents/AppDynamics/on_premises/c_install_the_enterprise_console.dita」を参照してください。
  3. 最後のセッションから1日以上経った場合には、以下のコマンドを使用してログインする必要があります。
    bin/platform-admin.sh login --user-name <admin_username> --password <admin_password>
  4. 次のコマンドを使用してプラットフォームを作成します。
    bin/platform-admin.sh create-platform --name <platform_name> --installation-dir <platform_installation_directory>
    インストールディレクトリは、Enterprise Consoleによってすべてのプラットフォームコンポーネントがインストールされるディレクトリです。
    注: 同じインストールディレクトリが存在していて、すべてのリモートノードで使用されています。異なるノード間で構成の等質性を維持するために、このようになっています。
  5. Enterprise Console がイベントサービスホストにリモートでアクセスおよび管理するために使用する SSH キーを追加します(詳細については、「SSH キーの作成」を参照してください)。
    bin/platform-admin.sh add-credential --credential-name <name> --type ssh --user-name <username> --ssh-key-file <file path to the key file> --platform-name <name of platform>
    <file path to the key file> は Enterprise Console マシンの秘密キーです。インストールプロセスで、鍵を使用してイベントサービスホストに接続します。キーはデプロイされず、代わりに暗号化され、Enterprise Console データベースに保存されます。platform-nameパラメータはオプションです。
  6. プラットフォームに追加した認証情報を渡して、プラットフォームにホストを追加します。
    bin/platform-admin.sh add-hosts --hosts es_host_1 es_host_2 es_host_3 --credential <credential name> --platform-name <name of platform>
    platform-nameパラメータはオプションです。
  7. クラスタ内の各イベントサービス宛先ノードで、イベントサービスのインストールディレクトリを作成します。これは、ステップ(2)でプラットフォームの作成中に installation-dir 引数で指定したディレクトリです。
  8. もう一度 Enterprise Console マシンのコマンドラインで、platform-admin ディレクトリから次のコマンドを実行します。クラスター構成設定をコマンドの引数として渡します。コマンドの形式は次のとおりです。
    bin/platform-admin.sh submit-job --platform-name <platform-name> --service events-service --job install --target-version <latest> --args profile=<dev> serviceActionHost=<es_host_1> serviceActionHost=<es_host_2> serviceActionHost=<es_host_3>

    platform-name パラメータと jvmTempDir パラメータはオプションです。

    引数は以下のとおりです。

    • jvmTempDir:Linux インストールでデフォルトの JVM 一時 /tmp ディレクトリをオーバーライドするには、この引数を使用します。

    • hosts:この引数または host-file を使用して、デプロイメント内のクラスターホストの内部 DNS ホスト名または IP アドレスを指定します。この引数では、ホスト名またはアドレスをパラメータとして渡します。例:

      --hosts 192.168.32.105 192.168.32.106 192.168.32.107
    • host-file:--hosts 引数としてホストを指定する代わりに、この引数で指定するテキストファイル内のリストとして渡します。プレーンテキストファイル内の別々の行として、各クラスターホストの内部 DNS ホスト名または IP アドレスを指定します。

      192.168.32.105
      192.168.32.106
      192.168.32.107
    • profile:デフォルト(プロファイルの指定なし)では、インストールは実稼働インストールと見なされます。開発者プロファイル(profile dev)を指定すると、非実稼働環境のみに適した、軽減されたハードウェアプロファイル要件を使用するように Enterprise Console に指示されます。Enterprise Consoleでは以下のリソースがチェックされます。

      • dev プロファイルの場合は、1 コア CPU、1 GB の RAM、2 GB のディスク領域。

      • それ以外の場合は、4 コア CPU、12 GB の RAM、128 GB のディスク領域。

    例:
    bin/platform-admin.sh add-hosts --hosts ip-172-31-20-21.us-west-2.compute.internal ip-172-31-20-22.us-west-2.compute.internal ip-172-31-20-23.us-west-2.compute.internal
    hosts テキストファイルを使用している場合は、次のコマンドを使用します。
    bin/platform-admin.sh add-hosts --hosts --host-file=/home/appduser/hosts.txt
  9. 各イベントサービスノードマシンにログインし、環境をセットアップするためのスクリプトを次のように実行します。
    注:
    • tune-system.sh スクリプトは、ユーザーの環境を最適化するために使用されます。それは任意になります。
    • 次のプロパティを有効にします。
    INSTALL_BOOTSTRAP_MASTER_ES8=true
    1. tune-system.sh スクリプトに実行権限を付与します。
      chmod +x tune-system.sh
      ./tune-system.sh
    2. スクリプトを実行します。
      sudo <installation_dir>/events-service/processor/bin/tool/tune-system.sh
  10. ロードバランサを使用している場合は、ロードバランサで提示されるイベントサービスの仮想IPを使用します。イベントサービスへのコントローラ接続を次のように構成します。
    1. 管理コンソールを開きます。
    2. コントローラの設定ペインで、appdynamics.on.premise.event.service.url を見つけて、その値をロードバランサでのイベントサービスの仮想 IP の URL に変更します。
    コンソールで接続設定を変更した後に、コントローラとイベントサービスがアカウント情報を同期するのに数分かかることがあります。
完了すると、イベントサービスの管理機能で Enterprise Console を使用できます。クラスタノードマシンをデプロイした後は、それらのマシンに直接アクセスする必要はなくなります。特に、イベントサービスノードのホームディレクトリに含まれるスクリプトの使用は控えてください。Enterprise Console では、インストール後にコントローラの構成が自動的に更新されます。

埋め込みイベントサービスのスケールアップ

以下の手順では、コントローラと共有しているホストにあるイベントサービスをスケールアップする方法について説明しています。スケールアップすることによって、埋め込みイベントサービスを個別のホストで実行できるようになります。カスタムインストールを使用することで、イベントサービスを個別のホストに直接インストールすることもできます。

  1. ロードバランスをセットアップします。ロードバランサの構成については、「ロード バランス イベント サービス トラフィック」を参照してください。
  2. Enterprise Console GUI を開きます。
  3. 使用する認証情報およびホストが、Splunk AppDynamics プラットフォームに追加されていることを確認します。詳細については、「Enterprise Console の管理」を参照してください。
    1. [Credential] ページで、イベントサービスをインストールするホストの SSH 認証情報を追加します。
    2. [Hosts] ページで、ホストを追加します。Enterprise Console はイベントサービスのスケールアップにこれらのホストを使用します。少なくとも 1 つのホスト、または 3 つ以上のホストが必要です。
  4. [Events Service] ページで、[More link] に移動して [Events Service] を選択し、[More] にある [Scale Up Events Service] をクリックし、ウィザードに従って完了します。スケールアップ後のイベントサービスで使用するホストを入力する際に、コントローラホストは含めないでください。
    注: コントローラはスケールアップジョブによって自動的に再起動されるため、ユーザが再起動する必要はありません。
  5. 各ノードマシンにログインし、環境をセットアップするためのスクリプトを次のように実行します。
    sudo <installation_dir>/events-service/latest/bin/tool/tune-system.sh
  6. [Controller] ページに移動します。
  7. Enterprise Console はデフォルトでは、クラスタで定義されている最初のプライマリノードを参照するように、コントローラでイベントサービス接続を構成します。ロードバランサを使用している場合(推奨)は、代わりに以下の手順に従って、ロードバランサで提示されているイベントサービスの VIP を指すように、このコントローラ設定を変更する必要があります。
    1. 管理コンソールを開きます。
    2. [Controller settings] ペインで、appdynamics.on.premise.event.service.url を見つけます。
    3. URL の設定値を、ロードバランサでのイベントサービスの VIP に変更します。
  8. デフォルトでは、データベースモニタリングはコントローラに埋め込まれているイベントサービスにイベントデータを保存します。デプロイしたばかりのイベントサービスを使用するように変更するには、appdynamics.on.premise.event.service.key 値が events-service-api-store.properties ファイル内の ad.accountmanager.key.controller 値と一致することを確認します。
    注: このイベントサービスに保存されるのは、データベースモニタリングの新たに生成されたデータのみであることに注意してください。以前に収集されたデータは、そのデータが新しいイベントサービスに移行されていない限り、埋め込みイベントサービスのインスタンスに残ります。ビジネスインサイトの

    イベントサービスへの接続

    .
  9. Enterprise Console で接続設定を変更した後に、コントローラとイベントサービスがアカウント情報を同期するのに数分かかることがあります。

インストールのトラブルシューティング

イベントサービスのインストール中に Enterprise Console がクラッシュまたはシャットダウンした場合、GUI にインストールが進行中であることが表示されることがあります。この問題を解決するには、CLI を使用してイベントサービスをアンインストールします。次に、CLI を使用してイベントサービスをインストールします。

ClusterFormationFailureHelper エラーの処理

単一ノードのイベントサービスクラスタで新しいイベントサービス 23.2.0 を実行すると、次のエラーが表示される場合があります。

[WARN ][o.e.c.c.ClusterFormationFailureHelper] [ip] マスターはまだ検出されておらず、このノードは以前にブートストラップされたクラスタに参加していません。このノードの [cluster.initial_master_nodes] は空です。

この問題を解決する手順は、次のとおりです。

  1. Enterprise Console からイベントサービスをアンインストールします。
  2. このセクションで定義されているように、クラスタノード用にオペレーティングシステムを調整したことを確認します。
  3. イベントサービスを再インストールします。

/tmp ディレクトリに実行権限がない場合のエラー

/tmp ディレクトリに実行権限がない場合、イベントサービスのインストールまたはアップグレードは次のエラーで失敗します。

failed to map segment from shared object or
failed to allocate closure
  1. 次のコマンドを実行して、フォルダの実行権限を確認します。

    mount | grep '/tmp'
    /dev/sda1 on /tmp type ext4 (rw,noexec)
  2. 次のフォルダの権限を確認します。

    mount | grep '/var/tmp'
    mount | grep 'home'

次の方法でエラーをトラブルシューティングできます。

  • イベント サービス ディレクトリへのファイルのエクスポート。
  • 必要なディレクトリの noexec マウントオプションの削除。

イベント サービス ディレクトリへのファイルのエクスポート

  1. インストールの失敗時に追加されたイベントサービスファイルを削除します。
  2. 次のパスでイベントサービスのバイナリを見つけます。

    cd /opt/appdynamics/platform/platform-admin/archives/events-service/<version>cd /opt/appdynamics/platform/platform-admin/archives/events-service/<version>
  3. events-service.zip の解凍

    unzip events-service.zip
  4. events-service.zip の名前を events-services.zip.original に変更します。

    mv events-service.zip events-service.zip.original
  5. extracted events-service ディレクトリで、events-service.vmoptions ファイルと events-service-elasticsearch.vmoptions ファイルの両方に次の行を追加します。

    -Djna.tmpdir=/opt/appdynamics/platform/product/events-service/tmp
    -Djansi.tmpdir=/opt/appdynamics/platform/product/events-service/tmp
  6. 変更された .vmoptions ファイルを含む events-service フォルダをアーカイブします。

    zip -r events-service.zip events-service
  7. .vmoptions ファイルが指定されている events-service フォルダに一時ディレクトリを作成します。

    mkdir -p /opt/appdynamics/platform/product/events-service/tmp
  8. 次のコマンドを使用して、一時ディレクトリをエクスポートします。

    export TMPDIR=<path/to/es_tmp>
  9. Enterprise Console を使用してイベントサービスをインストールします。

必要なディレクトリの noexec マウントオプションの削除

必要なディレクトリの noexec マウントオプションを削除します。
sudo umount /tmp
sudo mount -o remount,rw /tmp