OpenStack コントローラーの統合は、すべての計算ノードとそれを実行しているサーバーから情報を収集するように設計されています。これらの OpenStack サービスから収集されたすべてのメトリクスは、分析、視覚化、アラートのために New Relic アカウント インサイト (NRDB) に取り込まれます。そのため、最も重要なデータをすべて 1 か所で確認できます。
Openstack コントローラーをセットアップした後、Openstack コントローラーのメトリクス用のダッシュボードをインストールできます。
インフラストラクチャエージェントをインストールします
データを New Relic に取り込むには、インフラストラクチャ エージェントをインストールします。当社のインフラストラクチャ エージェントはデータを収集して取り込むので、アプリのパフォーマンスを追跡できます。NRI-Flex 統合をサポートするには、バージョンが 1.10.7 以降である必要があります。
インフラストラクチャ エージェントは、次の 2 つの方法でインストールできます。
- ガイド付きインストールは、システムを検査し、システムに最適なアプリケーション監視エージェントとともにインフラストラクチャ エージェントをインストールする CLI ツールです。ガイド付きインストールの仕組みの詳細については、ガイド付きインストールの概要をご覧ください。
- インフラストラクチャ エージェントを手動でインストールする場合は、 Linux、 Windows、または macOSの手動インストールのチュートリアルに従うことができます。
nr1-openstack を構成する
リポジトリのクローンを作成する
git clone https://github.com/newrelic-experimental/nr1-openstackこのコマンドを使用して、クローンされたリポジトリにある
openstack-agent
ディレクトリを開きます。bash$cd nr1-openstack/openstack-agent/ファイル名
config/os-config.json.template
をconfig/os-config.json
に変更し、以下のようにファイルを編集します。nr_agent_home
を更新するには、複製したリポジトリからconfig/フォルダーの親ディレクトリを入力する必要があります。以下のコマンドを実行して、エンドポイント URL の詳細を表示します。
bash$openstack catalog listkeystone_url
の値を取得するには、name: keystone
とtype: identity
のエンドポイント URL をコピーします。keystone_api_version
を見つけるには、以下のコマンドを実行します。bash$curl -i http://<HOST_IP>/identifyglance_api_version
を見つけるには、以下のコマンドを実行します。bash$curl -i http://<HOST_IP>/imageopenstack ログイン パスワードを使用して、以下の構成ファイルの
ADMIN_PASSWORD
を更新します。
json ファイルが更新されると、次のようになります。
{"config": {"nr_agent_home": "nr_agent_home","keystone_url": "http://HOST_IP/identity","keystone_api_version": "v3","nova_api_version": "v2.1","cinder_api_version": "v3","neutron_api_version": "v2.0","glance_api_version": "v2.16","ssl_verify": false,"add_lists": true,"user": {"password": "ADMIN_PASSWORD","name": "admin","domain": {"id": "default"}},"service_types": {"keystone": {"enabled": true,"component_name": "identity","metrics": ["openstack.identity.credentials_count","openstack.identity.domains_count","openstack.identity.groups_count","openstack.identity.policies_count","openstack.identity.projects_count","openstack.identity.regions_count","openstack.identity.roles_count","openstack.identity.services_count","openstack.identity.users_count","openstack.identity.floatingips_count","openstack.identity.routers_count","openstack.identity.security_groups_count","openstack.identity.subnets_count"]},"hypervisors": {"enabled": true,"component_name": "nova","metrics": ["openstack.nova.hypervisor.current_workload","openstack.nova.hypervisor.disk_available_least","openstack.nova.hypervisor.free_disk_gb","openstack.nova.hypervisor.free_ram_mb","openstack.nova.hypervisor.host_ip","openstack.nova.hypervisor.hypervisor_hostname","openstack.nova.hypervisor.hypervisor_type","openstack.nova.hypervisor.hypervisor_version","openstack.nova.hypervisor.id","openstack.nova.hypervisor.load_average_1","openstack.nova.hypervisor.load_average_15","openstack.nova.hypervisor.load_average_5","openstack.nova.hypervisor.local_gb","openstack.nova.hypervisor.local_gb_used","openstack.nova.hypervisor.memory_mb","openstack.nova.hypervisor.memory_mb_used","openstack.nova.hypervisor.running_vms","openstack.nova.hypervisor.service.disabled_reason","openstack.nova.hypervisor.service.host","openstack.nova.hypervisor.service.id","openstack.nova.hypervisor.state","openstack.nova.hypervisor.status","openstack.nova.hypervisor.uptime","openstack.nova.hypervisor.user_count","openstack.nova.hypervisor.vcpus","openstack.nova.hypervisor.vcpus_used"]},"resource_providers": {"enabled": true,"component_name": "placement","metrics": ["openstack.placement.inventories.DISK_GB.allocation_ratio","openstack.placement.inventories.DISK_GB.max_unit","openstack.placement.inventories.DISK_GB.min_unit","openstack.placement.inventories.DISK_GB.reserved","openstack.placement.inventories.DISK_GB.step_size","openstack.placement.inventories.DISK_GB.total","openstack.placement.inventories.MEMORY_MB.allocation_ratio","openstack.placement.inventories.MEMORY_MB.max_unit","openstack.placement.inventories.MEMORY_MB.min_unit","openstack.placement.inventories.MEMORY_MB.reserved","openstack.placement.inventories.MEMORY_MB.step_size","openstack.placement.inventories.MEMORY_MB.total","openstack.placement.inventories.VCPU.allocation_ratio","openstack.placement.inventories.VCPU.max_unit","openstack.placement.inventories.VCPU.min_unit","openstack.placement.inventories.VCPU.reserved","openstack.placement.inventories.VCPU.step_size","openstack.placement.inventories.VCPU.total","openstack.placement.resource.name","openstack.placement.resource.uuid","openstack.placement.resource_provider_generation","openstack.placement.usages.DISK_GB","openstack.placement.usages.MEMORY_MB","openstack.placement.usages.VCPU"]},"images": {"enabled": true,"component_name": "glance","metrics": ["openstack.glance.image.AppCode","openstack.glance.image.Name","openstack.glance.image.ServiceName","openstack.glance.image.ServiceOwner","openstack.glance.image.signature_verified","openstack.glance.image.image_type","openstack.glance.image.checksum","openstack.glance.image.container_format","openstack.glance.image.created_at","openstack.glance.image.disk_format","openstack.glance.image.file","openstack.glance.image.hw_rng_model","openstack.glance.image.id","openstack.glance.image.min_disk","openstack.glance.image.min_ram","openstack.glance.image.name","openstack.glance.image.os_hash_algo","openstack.glance.image.os_hash_value","openstack.glance.image.os_hidden","openstack.glance.image.owner","openstack.glance.image.owner_specified.openstack.md5","openstack.glance.image.owner_specified.openstack.object","openstack.glance.image.owner_specified.openstack.sha256","openstack.glance.image.protected","openstack.glance.image.schema","openstack.glance.image.self","openstack.glance.image.size","openstack.glance.image.status","openstack.glance.image.tags","openstack.glance.image.updated_at","openstack.glance.image.virtual_size","openstack.glance.image.visibility"]},"nova": {"enabled": true,"component_name": "compute","metrics": ["openstack.compute.agents_count","openstack.compute.aggregates_count","openstack.compute.flavors_count","openstack.compute.keypairs_count","openstack.compute.services_count"]},"block_storage": {"enabled": true,"component_name": "cinder","metrics": ["openstack.cinder.limits.maxTotalBackupGigabytes","openstack.cinder.limits.maxTotalBackups","openstack.cinder.limits.maxTotalSnapshots","openstack.cinder.limits.maxTotalVolumeGigabytes","openstack.cinder.limits.maxTotalVolumes","openstack.cinder.limits.totalBackupGigabytesUsed","openstack.cinder.limits.totalBackupsUsed","openstack.cinder.limits.totalGigabytesUsed","openstack.cinder.limits.totalSnapshotsUsed","openstack.cinder.limits.totalVolumesUsed","openstack.cinder.snapshots.count","openstack.cinder.snapshots.size","openstack.cinder.volumes.count","openstack.cinder.volumes.size"]},"limits": {"enabled": true,"component_name": "nova","metrics": ["openstack.nova.limits.maxImageMeta","openstack.nova.limits.maxPersonality","openstack.nova.limits.maxPersonalitySize","openstack.nova.limits.maxSecurityGroupRules","openstack.nova.limits.maxSecurityGroups","openstack.nova.limits.maxServerGroupMembers","openstack.nova.limits.maxServerGroups","openstack.nova.limits.maxServerMeta","openstack.nova.limits.maxTotalCores","openstack.nova.limits.maxTotalFloatingIps","openstack.nova.limits.maxTotalInstances","openstack.nova.limits.maxTotalKeypairs","openstack.nova.limits.maxTotalRAMSize","openstack.nova.limits.totalCoresUsed","openstack.nova.limits.totalFloatingIpsUsed","openstack.nova.limits.totalInstancesUsed","openstack.nova.limits.totalRAMUsed","openstack.nova.limits.totalSecurityGroupsUsed","openstack.nova.limits.totalServerGroupsUsed"]},"servers": {"enabled": true,"component_name": "nova","metrics": ["openstack.nova.server.cpu0_time","openstack.nova.server.cpu1_time","openstack.nova.server.cpu2_time","openstack.nova.server.cpu3_time","openstack.nova.server.cpu4_time","openstack.nova.server.cpu5_time","openstack.nova.server.cpu6_time","openstack.nova.server.cpu7_time","openstack.nova.server.hypervisor_name","openstack.nova.server.id","openstack.nova.server.memory","openstack.nova.server.memory-actual","openstack.nova.server.memory-available","openstack.nova.server.memory-disk_caches","openstack.nova.server.memory-hugetlb_pgalloc","openstack.nova.server.memory-hugetlb_pgfail","openstack.nova.server.memory-last_update","openstack.nova.server.memory-major_fault","openstack.nova.server.memory-minor_fault","openstack.nova.server.memory-rss","openstack.nova.server.memory-swap_in","openstack.nova.server.memory-swap_out","openstack.nova.server.memory-unused","openstack.nova.server.memory-usable","openstack.nova.server.name","openstack.nova.server.rx","openstack.nova.server.rx_drop","openstack.nova.server.rx_errors","openstack.nova.server.rx_packets","openstack.nova.server.tx","openstack.nova.server.tx_drop","openstack.nova.server.tx_errors","openstack.nova.server.tx_packets","openstack.nova.server.memory-hugetlb_pgfail","openstack.nova.server.vda_errors","openstack.nova.server.vda_read","openstack.nova.server.vda_read_req","openstack.nova.server.vda_write","openstack.nova.server.vda_write_req","openstack.nova.server.vdb_errors","openstack.nova.server.vdb_read","openstack.nova.server.vdb_read_req","openstack.nova.server.vdb_write","openstack.nova.server.vdb_write_req","openstack.nova.server.vdc_errors","openstack.nova.server.vdc_read","openstack.nova.server.vdc_read_req","openstack.nova.server.vdc_write","openstack.nova.server.vdc_write_req","openstack.nova.server.vdd_errors","openstack.nova.server.vdd_read","openstack.nova.server.vdd_read_req","openstack.nova.server.vdd_write","openstack.nova.server.vdd_write_req","openstack.nova.server.vde_errors","openstack.nova.server.vde_read","openstack.nova.server.vde_read_req","openstack.nova.server.vde_write","openstack.nova.server.vde_write_req"]},"networks": {"enabled": true,"component_name": "neutron","metrics": ["openstack.neutron.network.admin_state_up","openstack.neutron.network.created_at","openstack.neutron.network.description","openstack.neutron.network.floatingips_count","openstack.neutron.network.id","openstack.neutron.network.ipv4_address_scope","openstack.neutron.network.ipv6_address_scope","openstack.neutron.network.is_default","openstack.neutron.network.l2_adjacency","openstack.neutron.network.mtu","openstack.neutron.network.name","openstack.neutron.network.port_security_enabled","openstack.neutron.network.project_id","openstack.neutron.network.provider:network_type","openstack.neutron.network.provider:physical_network","openstack.neutron.network.provider:segmentation_id","openstack.neutron.network.qos_policy_id","openstack.neutron.network.revision_number","openstack.neutron.network.router:external","openstack.neutron.network.routers_count","openstack.neutron.network.security_groups_count","openstack.neutron.network.shared","openstack.neutron.network.status","openstack.neutron.network.subnets_count","openstack.neutron.network.tenant_id","openstack.neutron.network.updated_at"]}},"logging": {"logger_name": "nr.os.mon","log_file_name": "nr_openstack_agent.log","log_level": "WARNING","formatter": "%(asctime)-15s | %(name)-18s | %(process)d | %(levelname)-8s | %(threadName)s | %(funcName)-27s | %(lineno)04d | %(message)s"}}}以下のコマンドを使用して、scripts フォルダーの実行権限を付与します (scripts/flex-osmetrics.sh はNew Relic Infrastructureエージェントによって呼び出されます)
bash$chmod +x scripts/flex-osmetrics.shconfig/os-config.jsonでそのリソースのenabledをfalseに設定すると、リソースのキャプチャを無効にできます。
OpenStack 用の nri-flex の構成
インフラストラクチャ エージェントをホストにインストールしたら。nri-flex
バイナリも一緒にインストールされます。
フレックス構成ファイルを作成するには、次の手順に従います。
Openstack コントローラーのログを New Relic に転送する
ログ転送を使用して、Openstack コントローラーのログを New Relic に転送できます。
Linux マシンでは、 logging.yml
という名前のログ ファイルが次のパスに存在する必要があります。
$cd /etc/newrelic-infra/logging.d/
以下のスクリプトをlogging.yml
ファイルに追加して、Openstack コントローラーのログを New Relic に送信します。
logs: - name: openstack.log file: <nr1-openstack-DIRECTORY>/openstack-agent/logs/nr_openstack_agent.log attributes: logtype: openstack_log
New Relic インフラストラクチャ エージェントを再起動します
データの読み取りを開始する前に、 インフラストラクチャ エージェントのドキュメント の手順に従ってインフラストラクチャ エージェントを再起動します。
$sudo systemctl restart newrelic-infra.service
アプリケーションを監視する
Openstack Controller
という名前の事前に構築されたダッシュボード テンプレートを選択して、OpenStack アプリケーションのメトリクスを監視できます。
に移動し、
+ Integrations & Agents
をクリックします。
Dashboards
タブをクリックします。
検索ボックスに
Openstack Controller
と入力します。事前構築ダッシュボードが表示されたら、それをクリックしてアカウントにインストールします。
上記の手順に従ってアプリケーションが統合されると、ダッシュボードにメトリクスが表示されるはずです。
OpenStack クイックスタートを計測し、メトリクスとアラートを確認するには、 Install nowボタンがあるOpenStack コントローラー クイックスタート ページにアクセスすることもできます。
以下に、クエリの例を示します。
Example: イベントタイプの数を表示する
select count(*) from OSBlockStorageSample, OSLimitSample, OSNetworkSample, OSResourceProviderSample, OSImageSample, OSKeystoneSample, OSNovaSample since 10 minutes ago facet eventType() timeseries
次は何ですか?
NRQL クエリの作成とダッシュボードの生成の詳細については、次のドキュメントをご覧ください。
基本的なクエリと高度なクエリを作成するためのクエリ ビルダーの概要。
表示モードを調整したり、ダッシュボードにコンテンツを追加したりできます。