OpenStack の Contrail Insights のインストールと設定
OpenStack 入門
Contrail Insights は、 OpenStack クラスター内のホストと仮想マシンのリソース制御と可視化を提供します。このトピックでは、OpenStack クラスターに Contrail Insights をインストールする方法について説明します。Contrail Insights Agent はホスト上で実行され、ホスト自体とそのホストで実行されている仮想マシンのリソース消費を監視します。 図 1 に、OpenStack を使用した Contrail Insights のアーキテクチャを示します。
Contrail Insights Agent は、コンピューティング ノードのリソース使用状況を監視します。
Contrail Insights Platform には、システムを設定するための REST API が用意されています。
Contrail Insights DataManager には、複数のエージェントからのデータが保存されます。
Contrail Insights ダッシュボードは、Web ベースのユーザー インターフェイスを提供します。
アダプターは、プラットフォーム固有のリソースを検出し、Contrail Insights プラットフォームを設定します。
OpenStack および Kubernetes 用のアダプタが存在します。
要件
Contrail Insights for OpenStack をインストールするための要件は以下の通りです。
サポートされているOpenStackバージョン:Icehouse、Juno、Kilo、Liberty、Mitaka、Newton、Ocata。
ソフトウェア要件およびハードウェア要件については 、Contrail Insightsの一般要件 をご覧ください。
OpenStack の管理者アカウント。
OpenStackサービスへのAPIアクセス:Cinder、Glance、Heat、Keystone、Neutron、Nova、SwiftContrail Insights はこれらのサービスから情報を読み取ります。管理者アカウントは、読み取り専用 API 呼び出しに対して十分なアクセス許可を提供する必要があります。さらに、Contrail Insights プラットフォームは、これらのサービスがリッスンするホストとポートへの接続を開くことができる必要があります。Contrail Insights は、
admin
、internal
、またはpublic
のサービス エンドポイントを使用するように設定できます。OS_ENDPOINT_TYPE
OpenStack 環境変数の「Contrail Insights のインストール」セクションを参照してください。-
メモ:
アップグレードのお知らせ:Contrail Insights 3.2.6 以降、ライセンス ファイルの要件はなくなりました。3.2.6 より前のバージョンをインストールする場合は、インストール前にライセンスが必要です。
ライセンス キーは 、mailto:APPFORMIX-KEY-REQUEST@juniper.net から取得できます。リクエストには、次の情報を入力してください。
Group name: Target customers or use: Cluster type: OpenStack Number of hosts: Number of instances:
3 つのステップのワークフロー
インストールは次の手順で構成されます。
OpenStack を設定します。
Ansibleインベントリを作成します。
Contrail Insights をインストールします。
OpenStack の設定
Contrail Insights の管理者アカウントを作成するには、OpenStack Horizon ダッシュボードで以下のステップを実行します。
ユーザー アカウントを作成し、 appformix という名前を付けます。
ユーザー アカウントの新しいプロジェクトを選択します。
[ 管理者としての役割] を選択します。
Ansibleインベントリの作成
Ansibleは、コンピューティングノードとプラットフォームホストにソフトウェアを展開するために使用されます。Ansibleインベントリ ファイルには、クラスタ内のホストのグループが記述されます。リリース ファイルとは別の場所にインベントリを定義して、インベントリをアップグレードに再利用できるようにします。
Contrail Insights を使用するには、2 つのグループの コンピューティング と appformix_controllerが必要です。各グループには、そのグループ内のホストが一覧表示されます。 エージェントのみがコンピューティング ホストにインストールされます。エージェントと Contrail Insights プラットフォーム サービスが appformix_controller ホストにインストールされます。
オプションで、 openstack_controller グループを定義できます。エージェントは、OpenStack コントローラサービスを実行するホストを監視するために、このグループのホストにインストールされます。(v2.3.0の新機能)
ファイルとgroup_vars/all
ファイルを含むhosts
ディレクトリinventory
(または選択した名前)を作成します。例えば:
inventory/ hosts # inventory file group_vars/ all # configuration variables
この inventory/hosts
ファイルには、各グループのホストのリストが含まれています。例えば:
[appformix_controller] appformix01 [compute] compute01 compute02 compute03 [openstack_controller] openstack_infra01 openstack_infra02
Ansibleインベントリのドキュメントを参照してください。
Ansible構成変数
Contrail Insights ソフトウェアには、Contrail Insights の設定を実行するための Ansible ロールが多数含まれています。将来のアップグレードで設定とインベントリを使用できるように、ファイル内の inventory/group_vars/all
変数の値を定義します。
inventory/group_vars/all
このファイルで、OpenStack 向け Contrail Insights をインストールするための以下の変数を設定します。
appformix_docker_images: - /path/to/contrail-insights-platform-images-<version>.tar.gz - /path/to/contrail-insights-dependencies-images<version>.tar.gz - /path/to/contrail-insights-openstack-images-<version>.tar.gz
インターネットからファイルをフェッチできないプラットフォームホストに依存関係をインストールする手順については、「 プラットフォームの依存関係 」を参照してください。
前提条件を取得するための HTTP プロキシの構成
Ansibleプレイブックは、プラットフォームホストに前提条件をインストールするためにインターネットからファイルをフェッチします。プラットフォームホストがインターネットにアクセスするために HTTP プロキシを必要とする場合は、 で inventory/group_vars/all
次の変数を構成します。
http_proxy_url: 'http://proxy.example.com:1234' prerequisites_env: http_proxy: '{{ http_proxy_url }}' https_proxy: '{{ http_proxy_url }}'
prerequisites_env
は、必須コンポーネントをインストールするコマンドを呼び出すときに使用される環境変数を定義するディクショナリです。上記の例では、単一のプロキシを使用して HTTP および HTTPS URL にアクセスできるため、 と の両方の環境変数にhttp_proxy
https_proxy
同じプロキシ URL(http://proxy.example.com:1234)が使用されています。便宜上、プロキシ URL は変数でhttp_proxy_url
一度定義されます。必要に応じて、ネットワークのプロキシ要件に合わせて調整prerequisites_env
します。
Contrail Insightsのインストール
Contrail Insights をインストールするには、次の手順に従います。
Contrail InsightsプラットフォームノードにAnsibleをインストールします。Ansibleは、プラットフォームにdockerとdocker-pyをインストールします。
#Ubuntu apt-get install python-pip python-dev #Installs Pip pip install ansible==2.3.0 #Installs Ansible 2.3 sudo apt-get install build-essential libssl-dev libffi-dev #Dependencies pip install markupsafe httplib2 requests #Dependencies #RHEL/CentOS yum install epel-release #Enable EPEL repository In case the above command does not work, manually download and install the epel-release package with one of the below commands, depending on your system’s version. yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm yum groupinstall 'Development Tools' #Install development tools yum install openssl-devel libffi libffi-devel #Dependencies yum install python-pip python-devel #Install Pip pip install ansible==2.3.0 #Install Ansible 2.3 pip install markupsafe httplib2 requests #Dependencies
メモ:RHEL の場合、ポート 9000 にアクセスするには次の IPtables ルールが必要です。
iptables -t filter -A IN_public_allow -p tcp --dport 9000 -j ACCEPT
次のコマンドを使用して、計算ノードにインストールします
libvirt
。yum -y install libvirt
これにより、KVM (カーネルベースの仮想マシン) と、計算ノードで実行されている仮想マシンからデータを収集するための関連パッケージがインストールされます。
Contrail Insights Agent が実行されているコンピューティングノードで、Python
virtualenv
がインストールされていることを確認します。#Ubuntu apt-get install -y python-pip pip install virtualenv #RHEL/CentOS yum install -y python-pip pip install virtualenv
パスワードレスログインを有効にして、AnsibleでContrail Insightsプラットフォームノードがノードにエージェントをインストールできるようにします。Ansible プレイブックが実行されているノードに SSH 公開キーを作成し、そのノードにキーをコピーします
appformix_controller
。ssh-keygen -t rsa #Creates Keys ssh-copy-id -i ~/.ssh/id_rsa.pub <target_host> #Copies key from the node to other hosts
この
Sample_Inventory
ファイルをテンプレートとして使用して、ホスト・ファイルを作成します。# Example naming schemes are as below: # hostname ansible_ssh_user='username' ansible_sudo_pass='password' # List all Compute Nodes [compute] 172.16.70.5 172.16.70.17 # appformix_controller host # # Host variables can be defined to control Contrail Insights configuration parameters # for particular host. For example, to specify the directory in which MongoDB # data is stored on hostname1 (the default is /opt/appformix/mongo/data): # # hostname1 appformix_mongo_data_dir=/var/lib/appformix/mongo # # For variables with same value for all appformix_controller hosts, set group # variables below. # [appformix_controller] 172.16.70.119 [openstack_controller] 172.16.70.120
インベントリ ファイルにリストされているすべてのホストが Contrail Insights プラットフォームから到達可能であることを確認します。
export ANSIBLE_HOST_KEY_CHECKING=False # Eliminates interactive experience prompting for Known_Hosts ansible -i inventory -m ping all # Pings all the hosts in the inventory file
ディストリビューションの最上位に、という名前の
group_vars
ディレクトリを作成します。mkdir group_vars
Contrail Insights インストール パッケージをソフトウェア ダウンロードから Contrail Insights プラットフォーム ノードにダウンロードします。次のファイルを取得します。
contrail-insights-<version>.tar.gz contrail-insights-dependencies-images-<version>.tar.gz contrail-insights-openstack-images-<version>.tar.gz contrail-insights-platform-images-<version>.tar.gz contrail-insights-network_device-images-<version>.tar.gz
3.2.6 より前のバージョンをインストールする場合は、Contrail Insights ライセンス ファイルを Contrail Insights プラットフォーム ノードにコピーします。
ディレクトリに
group_vars
、.all
という名前のファイルを作成します。以下を追加します。openstack_platform_enabled: true appformix_manager_version: <version> appformix_docker_images: - /path/to/contrail-insights-platform-images-<version>.tar.gz - /path/to/contrail-insights-dependencies-images-<version>.tar.gz - /path/to/contrail-insights-openstack-images-<version>.tar.gz
3.2.6 より前のバージョンをインストールする場合は、Contrail Insights ライセンス ファイル
group_vars/all
へのパスを に含めます。appformix_license: path/to/<contrail-insights-license-file>.sig
Contrail Insights は、OpenStack クラスターと通信するように設定する必要があります。Ansibleプレイブックでは、OpenStack環境変数を使用して、OpenStack環境の詳細とともにContrail Insightsを設定します。
OS_AUTH_URL Keystone URL (e.g., https://host:5000/) OS_ENDPOINT_TYPE endpoint type to communicate with service (default: publicURL) OS_USERNAME admin account to be used by Contrail Insights OS_PASSWORD password for admin account OS_PROJECT_NAME admin project created for Contrail Insights account OS_PROJECT_DOMAIN_NAME domain for admin project OS_USER_DOMAIN_NAME domain for admin user OS_DOMAIN_NAME (optional) use domain-scoped token for admin account
-
openrc
(手順 10) 環境変数を含むファイルをソース化し、変数が Ansible プレイブックの実行元のシェルの環境にあることを確認します。次に、プレイブックを実行してappformix_openstack.yml
Contrail Insights をインストールします。前に作成したディレクトリへのinventory
パスを指定します。 -
Contrail Insights ダッシュボードをウェブブラウザで開きます。例えば:
http://<contrail-insights-platform-node-ip>:9000
「 インストールをスキップ」 を選択すると、初期構成はステップ 10 で OpenStack 環境変数を使用して Ansible によって実行されました。OpenStack Keystone の認証情報を使用して Contrail Insights ダッシュボードにログインします。
追加のAnsible構成
追加のAnsible構成をセットアップするには:
Keystone SSL 対応クラスターにインストールするには、ファイルに以下の変数を含めます
group_vars/all
。appformix_keystone_ssl_ca: '/path/to/keystone_ca.crt'
Contrail Insights Ansible はこの Keystone CA をすべての Contrail Insights Platform ノードに配布し、SSL を有効にしたこの CA ファイルを使用して Keystone と通信するよう Contrail Insights コンポーネントに要求します。
メモ:廃止のお知らせ:
appformix_mongo_cache_size_gb
Contrail Insights 2.19.5 以降で使用可能だったパラメータは廃止され、Contrail Insights 3.2.0 以降ではサポートされなくなります。Contrail Insights バージョン 3.2.0 以降、Mongo は Contrail Insights Platform ノードで使用可能なメモリの最大 40% を使用するように設定されます。クラスターでネットワーク デバイスの監視を有効にするには、ファイルに次の情報を含めます
group_vars/all
。# For enabling pre-requisites for packdge installation. appformix_install_snmp_dependencies: true appformix_install_jti_dependencies: true # For running the appformix-network-device-adapter network_device_discovery_enabled: true appformix_plugins: '{{ appformix_network_device_factory_plugins }}' # After 3.1, SNMP Traps can be enabled also so appformix_plugins can be specified as below: # appformix_plugins: '{{ appformix_network_device_factory_plugins }} + {{ appformix_snmp_trap_factory_plugins }}'
Contrail Insights 認定プラグインをクラスターにインストールするには、ファイルに次の変数
group_vars/all
を含めます。appformix_plugins: <list of certified plugins to be installed> appformix_openstack_log_plugins: <list of OpenStack log plugins to be installed>
例えば:
appformix_plugins: - { plugin_info: 'certified_plugins/cassandra_node_usage.json' } - { plugin_info: 'certified_plugins/contrail_vrouter.json' } - { plugin_info: 'certified_plugins/zookeeper_usage.json' } - { plugin_info: 'certified_plugins/heavy_hitters.json' } appformix_openstack_log_plugins: - { plugin_info: 'certified_plugins/cinder_api_logparser.json', log_file_path: '/var/log/cinder/cinder-api.log' } - { plugin_info: 'certified_plugins/glance_logparser.json', log_file_path: '/var/log/glance/glance-api.log' } - { plugin_info: 'certified_plugins/keystone_logparser.json', log_file_path: '/var/log/apache2/keystone_access.log,/var/log/httpd/keystone_wsgi_admin_access.log,/var/log/keystone/keystone.log' }
インストール可能なすべての Contrail Insights 認定プラグインのリストについては、 ファイル
roles/appformix_defaults/defaults/main.yml
で始まるエントリplugin_info
を探します。OpenStack ログパーサープラグインは、各 OpenStack サービスの API ログファイルを解析して、API 呼び出しとレスポンスステータスコードに関するメトリクスを収集します。これらのプラグインをインストールするには、上記のように の
group_vars/all
変数appformix_openstack_log_plugins
に追加します。このリストの各プラグイン エントリでは、呼び出されlog_file_path
るパラメーターを指定する必要があります。このパラメーターは、OpenStack Controller ノード上のサービスの API ログファイルへの完全なパスに設定する必要があります。複数のコンマ区切りパスを指定できます。で
log_file_path
指定する適切なログ ファイルを特定するには、クライアント IP アドレス、REST 呼び出しの種類、応答状態コードを含む次のようなエントリを探します。2019-04-02 06:50:13.103 3465 INFO nova.osapi_compute.wsgi.server [req-d07e953a-6921-4224-a056-afb6ff69adde 953ea56a96b944b3b170a299af9e87bd 10c9e8809feb4bd1b55955d9c2ed5aba - - -] 172.18.0.6 "GET /v2/10c9e8809feb4bd1b55955d9c2ed5aba/os-hypervisors/detail HTTP/1.1" status: 200 len: 1427 time: 0.0208740 2019-04-02 06:50:13.183 3465 INFO nova.osapi_compute.wsgi.server [req-34b2f686-9eb5-4112-b3fc-e0b37798a302 953ea56a96b944b3b170a299af9e87bd 10c9e8809feb4bd1b55955d9c2ed5aba - - -] 172.18.0.6 "GET /v2/10c9e8809feb4bd1b55955d9c2ed5aba/servers/detail?all_tenants=1&status=SHELVED_OFFLOADED HTTP/1.1" status: 200 len: 211 time: 0.0754580
これらのファイルのデフォルトの場所は、 の
roles/appformix_defaults/defaults/main.yml
変数appformix_openstack_log_factory_plugins
にリストされています。Contrail Insights バージョン 2.19.8 では、OpenStack サービスに接続するためのタイムアウト値を設定できます。このタイムアウトのデフォルト値は秒で
10
、 と20
秒(両方を含む)の値5
に変更できます。値を変更するには、次の変数group_vars/all
を に追加します。appformix_openstack_session_timeout: <number of seconds>
Contrail Insights プラットフォームのインストール後にタイムアウト値を変更するには、上記の説明に従って変数
group_vars/all
をファイルに追加し、Contrail Insights インストール プレイブックを再実行します。プレイブックの完了後にappformix-openstack-adapter
Docker コンテナーを再起動します。docker restart appformix-openstack-adapter
アップグレードに関する通知
Contrail Insights バージョン 3.2.0 では、OpenStack Octavia Load Balancer サービスの検出のサポートが追加されました。Contrail Insights は、 や などのprovisioning_status
operating_status
ロード バランサーの状態情報とフレーバー情報のみを収集します。このサービス検出を有効にするには、Octavia サービスのエンドポイントをgroup_vars/all
ファイル内の変数appformix_octavia_endpoint_url
として指定します。例えば:
appformix_octavia_endpoint_url: http://10.1.1.1:9876
チャージバック コストは、Octavia ロード バランサー サービス用に構成することもできます。「 ロードバランサーのコストの設定」を参照してください。
作成したインベントリ ファイルで Ansible を実行します。
ansible-playbook -i inventory appformix_openstack.yml
Contrail Insights バージョン 3.0 では、この変数appformix_openstack_factory_plugins
は非推奨になりました。すべての OpenStack ログパーサープラグインは、変数 appformix_openstack_log_plugins
で指定する必要があります。古いバージョンからバージョン 3.0 にアップグレードする場合は、 または appformix_plugins
appformix_openstack_log_plugins
でappformix_openstack_factory_plugins
定義されているすべての OpenStack ログパーサープラグインを に移動してください。また、Contrail Insights バージョン 3.0 では、上記の手順 3 で説明したように、このリストのすべてのエントリを値でlog_file_path
指定する必要があります。
バージョン 2.18.x からバージョン 3.0 にアップグレードする場合は、ファイルに次の変更を加え group_vars/all
ます。
バージョン 2.18.x では、次のようになります。
appformix_openstack_factory_plugins: - { plugin_info: 'certified_plugins/cinder_api_logparser.json', log_file_path: '/var/log/cinder/cinder-api.log'} - { plugin_info: 'certified_plugins/glance_logparser.json',log_file_path: '/var/log/glance/api.log'} - { plugin_info: 'certified_plugins/heavy_hitters.json' } - { plugin_info: 'certified_plugins/keystone_logparser.json', log_file_path: '/var/log/keystone/keystone.log'} - { plugin_info: 'certified_plugins/neutron_logparser.json', log_file_path: '/var/log/neutron/server.log'} - { plugin_info: 'certified_plugins/nova_logparser.json', log_file_path: '/var/log/nova/nova-api.log'} appformix_plugins: {{ appformix_openstack_factory_plugins }} + ...
バージョン 3.0.x の場合:
appformix_plugins: - { plugin_info: 'certified_plugins/heavy_hitters.json' } appformix_openstack_log_plugins: - { plugin_info: 'certified_plugins/cinder_api_logparser.json', log_file_path: '/var/log/cinder/cinder-api.log'} - { plugin_info: 'certified_plugins/glance_logparser.json',log_file_path: '/var/log/glance/api.log'} - { plugin_info: 'certified_plugins/keystone_logparser.json', log_file_path: '/var/log/keystone/keystone.log'} - { plugin_info: 'certified_plugins/neutron_logparser.json', log_file_path: '/var/log/neutron/server.log'} - { plugin_info: 'certified_plugins/nova_logparser.json', log_file_path: '/var/log/nova/nova-api.log'}
openrc
OpenStack コントローラノード(/etc/contrail/openstackrc
)から Contrail Insights Platform ノードにファイルを入手し、コントローラサービスに対する管理者権限にアクセスするためのアダプタを認証します。ファイルは次のようになります。
export OS_USERNAME=admin export OS_PASSWORD=<admin-password> export OS_AUTH_URL=http://172.16.80.2:5000/v2.0/ export OS_NO_CACHE=1 export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=admin export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
作成したインベントリ ファイルで Ansible を実行します。
ansible-playbook -i inventory appformix_openstack.yml
Contrail Insights からのノードの削除
Contrail Insights からノードを削除するには、次の手順に従います。
インベントリ ファイルを編集し、Contrail Insights から削除する各ノードに追加します
appformix_state=absent
。# Example naming schemes are as below: # hostname ansible_ssh_user='username' ansible_sudo_pass='password' # List all Compute Nodes [compute] 172.16.70.5 appformix_state=absent 172.16.70.17
編集したインベントリ ファイルで Ansible を実行します。これにより、ノードとそのすべてのリソースが Contrail Insights から削除されます。
ansible-playbook -i inventory appformix_openstack.yml
OpenStack クラスター向け Contrail Insights のアップグレード
Contrail Insightsは、新しいリリースのプレイブックを実行すること appformix_openstack.yml
で簡単にアップグレードできます。インストールと同じ手順に従います。
OpenStack クラスターからの Contrail Insights のアンインストール
Contrail Insights をアンインストールしてすべてのデータを破棄するには、次のコマンドを実行します。
ansible-playbook -i <inventory_file> clean_appformix_openstack.yml