• EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

OpenStack 컨트롤러 통합

OpenStack 컨트롤러 통합은 모든 컴퓨팅 노드와 이를 실행하는 서버에서 정보를 수집하도록 설계되었습니다. 이러한 OpenStack 서비스에서 수집된 모든 지표는 분석, 시각화 및 경고를 위해 New Relic Account Insights(NRDB)로 수집됩니다. 따라서 가장 중요한 데이터를 모두 한 곳에서 볼 수 있습니다.

Openstack Controller를 설정한 후 Openstack Controller 지표에 대한 대시보드를 설치할 수 있습니다.

인프라 에이전트 설치

데이터를 New Relic으로 가져오려면 인프라 에이전트를 설치하십시오. 당사의 인프라 에이전트는 데이터를 수집하고 수집하므로 앱의 성능을 추적할 수 있습니다. NRI-Flex 통합을 지원하려면 버전이 1.10.7 이상이어야 합니다.

두 가지 방법으로 인프라 에이전트를 설치할 수 있습니다.

nr1-openstack 구성

  1. 저장소 복제

    git clone https://github.com/newrelic-experimental/nr1-openstack
  2. 복제된 저장소에 있는 openstack-agent 디렉터리를 열려면 이 명령을 사용합니다.

    bash
    $
    cd nr1-openstack/openstack-agent/
  3. 파일 이름을 config/os-config.json.template 에서 config/os-config.json 로 바꾸고 아래에 설명된 대로 파일을 편집합니다.

    • nr_agent_home 를) 업데이트하려면 복제된 저장소에서 config/ 폴더의 상위 디렉터리를 입력해야 합니다.

    • 엔드포인트 URL의 세부정보를 보려면 아래 명령을 실행하세요.

      bash
      $
      openstack catalog list
    • keystone_url 값을 얻으려면 name: keystonetype: identity 에 대한 엔드포인트 URL을 복사하세요.

    • keystone_api_version 을 찾으려면 아래 명령을 실행하세요.

      bash
      $
      curl -i http://<HOST_IP>/identify
    • glance_api_version 을 찾으려면 아래 명령을 실행하세요.

      bash
      $
      curl -i http://<HOST_IP>/image
    • OpenStack 로그인 비밀번호를 사용하여 아래 구성 파일에서 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"
    }
    }
    }
  4. 아래 명령을 사용하여 scripts 폴더에 대한 실행 권한을 부여합니다(scripts/flex-osmetrics.sh 은 뉴렐릭 인프라 에이전트에 의해 호출됩니다).

    bash
    $
    chmod +x scripts/flex-osmetrics.sh
  5. config/os-config.json 에서 해당 리소스에 대해 enabled false 로 설정하여 리소스 캡처를 비활성화할 수 있습니다.

OpenStack을 위한 nri-flex 구성

호스트에 인프라 에이전트를 설치한 후. nri-flex 바이너리도 함께 설치됩니다.

Flex 구성 파일을 만들려면 다음 단계를 따르세요.

Openstack Controller 로그를 New Relic으로 전달

로그 전달을 사용하여 Openstack Controller 로그를 New Relic으로 전달할 수 있습니다.

Linux 시스템에서는 logging.yml 라는 로그 파일이 다음 경로에 있어야 합니다.

bash
$
cd /etc/newrelic-infra/logging.d/

Openstack Controller 로그를 New Relic으로 보내려면 아래 스크립트를 logging.yml 파일에 추가하세요.

logs:
- name: openstack.log
file: <nr1-openstack-DIRECTORY>/openstack-agent/logs/nr_openstack_agent.log
attributes:
logtype: openstack_log

New Relic 인프라 에이전트 다시 시작

데이터 읽기를 시작하기 전에 인프라 에이전트 문서 의 지침을 사용하여 인프라 에이전트를 다시 시작하십시오.

bash
$
sudo systemctl restart newrelic-infra.service

애플리케이션 모니터링

Openstack Controller 이라는 사전 구축된 대시보드 템플릿을 선택하여 Openstack 애플리케이션 측정항목을 모니터링할 수 있습니다.

  1. one.newrelic.com

    으로 이동하여

    + Add data

    를) 클릭합니다.

  2. Dashboards

    탭을 클릭합니다.

  3. 검색 상자에 Openstack Controller입력합니다.

  4. 미리 빌드된 대시보드가 표시되면 클릭하여 계정에 설치하십시오.

위의 단계에 따라 애플리케이션이 통합되면 대시보드에 메트릭이 표시되어야 합니다.

OpenStack 퀵스타트를 다운로드하고 지표 및 알림을 보려면 Install now 버튼이 있는 OpenStack Controller 퀵스타트 페이지를 팔로우할 수도 있습니다.

다음은 몇 가지 예시 쿼리입니다.

Example: 이벤트 유형 수 보기

select count(*) from OSBlockStorageSample, OSLimitSample, OSNetworkSample, OSResourceProviderSample, OSImageSample, OSKeystoneSample, OSNovaSample since 10 minutes ago facet eventType() timeseries

다음은 뭐지?

NRQL 쿼리 작성 및 대시보드 생성에 대해 자세히 알아보려면 다음 문서를 확인하세요.

  • 기본 및 고급 쿼리를 생성 하기 위한 쿼리 빌더 소개

  • 대시보드를 사용자 지정하고 다양한 작업을 수행하기 위한 대시보드 소개

  • 대시보드를 관리하여

    디스플레이 모드를 조정하거나 대시보드에 더 많은 콘텐츠를 추가하세요.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.