Notre intégration de contrôleur OpenStack est conçue pour collecter des informations à partir de tous les nœuds Calculer et des serveurs qui l'exécutent. Toutes les métriques collectées à partir de ces services OpenStack sont ingérées dans vos comptes New Relic informations détaillées (NRDB) à des fins d'analyse, de visualisation et d'alerte. Vous pouvez ainsi visualiser toutes vos données les plus importantes, en un seul endroit.

Après avoir configuré notre contrôleur Openstack, vous pouvez installer un dashboard pour les métriques de votre contrôleur Openstack.
Installer l' agent d'infrastructure
Pour intégrer des données dans New Relic, installez notre agent d'infrastructure. Notre agent d'infrastructure collecte et ingère des données afin que vous puissiez suivre les performances de votre application. La version doit être 1.10.7 ou supérieure pour prendre en charge l'intégration NRI-Flex.
Vous pouvez installer l' agent d'infrastructure de deux manières différentes :
- Notre guide d'installation est un outil CLI qui inspecte votre système et installe l'agent d'infrastructure aux côtés de l'agent de monitoring d'application qui fonctionne le mieux pour votre système. Pour en savoir plus sur le fonctionnement de notre guide d'installation, consultez notre aperçu du guide d'installation.
- Si vous préférez installer notre agent d'infrastructure manuellement, vous pouvez suivre un tutoriel d' installation manuelle pour Linux, Windows ou macOS.
Configurer nr1-openstack
Cloner le référentiel
git clone https://github.com/newrelic-experimental/nr1-openstackUtilisez cette commande pour ouvrir le répertoire
openstack-agent
présent dans le référentiel cloné.bash$cd nr1-openstack/openstack-agent/Renommez le fichier
config/os-config.json.template
enconfig/os-config.json
et modifiez le fichier comme indiqué ci-dessousMise à jour
nr_agent_home
, vous devez entrer le répertoire parent du dossier config/ de votre référentiel cloné.Exécutez la commande ci-dessous pour voir les détails des URL de point de terminaison.
bash$openstack catalog listPour obtenir la valeur de
keystone_url
, copiez l’URL du point de terminaison pourname: keystone
ettype: identity
.Pour trouver le
keystone_api_version
, exécutez la commande ci-dessous.bash$curl -i http://<HOST_IP>/identifyPour trouver le
glance_api_version
, exécutez la commande ci-dessous.bash$curl -i http://<HOST_IP>/imageMettez à jour
ADMIN_PASSWORD
dans le fichier de configuration ci-dessous, en utilisant votre mot de passe de connexion openstack.
Une fois votre fichier json mis à jour, il ressemblera à ceci :
{"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"}}}Utilisez la commande ci-dessous pour accorder l'autorisation d'exécution pour le dossier scripts (scripts/flex-osmetrics.sh sera invoqué par New Relic Infrastructure Agent)
bash$chmod +x scripts/flex-osmetrics.shVous pouvez désactiver la capture de toutes les ressources en définissant enabled sur false pour cette ressource dans config/os-config.json.
Configuration de nri-flex pour openstack
Une fois que vous avez installé l'agent d'infrastructure sur votre hôte. Le binaire nri-flex
est également installé avec.
Pour créer un fichier de configuration flexible, suivez ces étapes :
Transférer le log du contrôleur Openstack vers New Relic
Vous pouvez utiliser notre transfert de log pour transférer le log du contrôleur Openstack vers New Relic.
Sur les machines Linux, votre fichier de log nommé logging.yml
doit être présent dans ce chemin :
$cd /etc/newrelic-infra/logging.d/
Ajoutez le script ci-dessous au fichier logging.yml
pour envoyer le log du contrôleur Openstack à New Relic.
logs: - name: openstack.log file: <nr1-openstack-DIRECTORY>/openstack-agent/logs/nr_openstack_agent.log attributes: logtype: openstack_log
Redémarrez l'agent New Relic Infrastructure
Avant de pouvoir commencer à lire vos données, utilisez les instructions de notre documentation suragent d'infrastructure pour redémarrer votre agent d'infrastructure.
$sudo systemctl restart newrelic-infra.service
Monitorer votre application
Vous pouvez choisir notre modèle dashboard prédéfini nommé Openstack Controller
pour monitorer les métriques de votre application Openstack.
- Allez à one.newrelic.com et cliquez sur + Integrations & Agents.
- Cliquez sur l'onglet Dashboards .
- Dans le champ de recherche, tapez
Openstack Controller
. - Lorsque vous voyez notre dashboard pré-construit, cliquez dessus pour l'installer sur votre compte.
Une fois votre application intégrée en suivant les étapes ci-dessus, le dashboard devrait afficher des métriques.
Pour intrumenter le quickstart d'OpenStack et voir les métriques et les alertes, vous pouvez également suivre notre page quickstart d'OpenStack Controller qui comporte un bouton Install now.
Voici quelques exemples de requêtes :
Example: voir le nombre de types d'événements
select count(*) from OSBlockStorageSample, OSLimitSample, OSNetworkSample, OSResourceProviderSample, OSImageSample, OSKeystoneSample, OSNovaSample since 10 minutes ago facet eventType() timeseries
Quelle est la prochaine étape ?
Pour en savoir plus sur la création de requêtes NRQL et la génération de dashboards, consultez ces documents :
- Introduction au générateur de requêtes pour créer des requêtes basiques et avancées.
- Introduction au dashboard pour personnaliser votre dashboard et effectuer différentes actions.
- Gérez votre dashboard pour ajuster votre mode d'affichage ou pour ajouter plus de contenu à votre dashboard.