Infrastructure Integration

Configuration

  1. First configure a Netsil role and user with your identity server

    1. openstack role create netsil_monitoring
    2. openstack user create netsil --password my_password --project my_project_name
    3. openstack role add netsil_monitoring --project my_project_name --user netsil
    
  2. Update your policy.json files to grant the needed permissions. role:netsil_monitoring requires access to the following operations:

    Nova

    - "compute_extension:aggregates",
    - "compute_extension:hypervisors",
    - "compute_extension:server_diagnostics",
    - "compute_extension:v3:os-hypervisors",
    - "compute_extension:v3:os-server-diagnostics",
    - "compute_extension:availability_zone:detail",
    - "compute_extension:v3:availability_zone:detail",
    - "compute_extension:used_limits_for_admin",
    - "os_compute_api:os-aggregates:index",
    - "os_compute_api:os-aggregates:show",
    - "os_compute_api:os-hypervisors",
    - "os_compute_api:os-hypervisors:discoverable",
    - "os_compute_api:os-server-diagnostics",
    - "os_compute_api:os-used-limits"
    


    Neutron

    - "get_network"
    


    Keystone

    - "identity:get_project"
    - "identity:list_projects"
    

    You may need to restart your Keystone, Neutron and Nova API services to ensure that the policy changes take place.

  3. Configure the agent by editing /etc/netsil-dd-agent/conf.d/openstack.yamlin the collectors.

Example:

    init_config:
          # All directives prefixed with a '#' sign are optional and will default to sane values when omitted

          # Where your identity server lives. Note that the server must support Identity API v3
          keystone_server_url: "https://my-keystone-server.com:<port>/"

          # The hostname of this machine registered with Nova. Defaults to socket.gethostname()
          # os_host: my_hostname

          # Nova API version to use - this check supports v2 and v2.1 (default)
          # nova_api_version: 'v2.1'

          # IDs of Nova Hypervisors to monitor
          # Required for OpenStack Kilo or `nova_api_version` v2 -indexing hypervisors is restricted
          # to `admin`s in Compute API v2-.
          # On more recent versions, the check automatically discovers the locally running hypervisor,
          # based on the `hypervisor_hostname`.

          # hypervisor_ids:
          #    - 1

          # IDs of servers to exclude from monitoring. (by default the agent will collect metrics from all guest servers that are running on the host)
          # Regex expressions for the server IDs are supported.
          # exclude_server_ids:
          #    - server_1
          #    - other_.*

          # IDs of networks to exclude from monitoring (by default the agent will collect metrics from networks returned by the neutron:get_networks operation)
          # Regex expressions for the network IDs to exclude are supported.
          # exclude_network_ids:
          #    - network_1
          #    - other_.*

          # Whether to enable SSL certificate verification for HTTP requests. Defaults to true, you may
          # need to set to false when using self-signed certs
          # ssl_verify: true

         # Whether the dd-agent proxy should also be used for openstack API requests (if set)
         # use_agent_proxy: true

    instances:
        - name: instance_1 # A required unique identifier for this instance

          # The authorization scope that will be used to request a token from Identity API v3
          # The auth scope must resolve to 1 of the following structures:
          # {'project': {'name': 'my_project', 'domain': 'my_domain} OR {'project': {'id': 'my_project_id'}}
          auth_scope:
          project:
              id: my_project_id

          # Alternately

          # project:
          #     name: my_project_name
          #     domain:
          #         id: default


          # User credentials
          # Password authentication is the only auth method supported right now
          # User expects username, password, and user domain id
          # `user` should resolve to a structure like {'password': 'my_password', 'name': 'my_name', 'domain': {'id': 'my_domain_id'}}
          user:
          password: my_password
          name: netsil
          domain:
              id: default

          # In some cases, the nova url is returned without the tenant id suffixed
          # e.g. http://172.0.0.1:8774 rather than http://172.0.0.1:8774/<tenant_id>
          # Setting append_tenant_id to true manually adds this suffix for downstream requests
          # append_tenant_id: false
  1. Check and make sure that all yaml files are valid with following command:

    /etc/init.d/netsil-collectors configcheck
    
  2. Restart the Agent using the following command:

    /etc/init.d/netsil-collectors restart
    
  3. Execute the info command to verify that the integration check has passed:

    /etc/init.d/netsil-collectors info
    

The output of the command should contain a section similar to the following:

    Checks
    ======

      [...]

      openstack
      ---------
          - instance #0 [OK]
          - Collected 8 metrics & 0 events

Infrastructure Datasources

Datasource Available Aggregations Unit Description
openstack.nova.current_workload avg max min sum Current workload on the Nova hypervisor
openstack.nova.disk_available_least avg max min sum gibibyte Disk available for the Nova hypervisor
openstack.nova.free_disk_gb avg max min sum gibibyte Free disk on the Nova hypervisor
openstack.nova.free_ram_mb avg max min sum mebibyte Free RAM on the Nova hypervisor
openstack.nova.hypervisor_load.1 avg max min sum The average hypervisor load over one minute.
openstack.nova.hypervisor_load.5 avg max min sum The average hypervisor load over five minutes.
openstack.nova.hypervisor_load.15 avg max min sum The average hypervisor load over fifteen minutes.
openstack.nova.limits.max_image_meta avg max min sum The maximum allowed image metadata definitions for this tenant
openstack.nova.limits.max_personality avg max min sum The maximum allowed personalities for this tenant
openstack.nova.limits.max_personality_size avg max min sum The maximum size of a single personality allowed for this tenant
openstack.nova.limits.max_security_group_rules avg max min sum The maximum number of security group rules allowed for this tenant
openstack.nova.limits.max_security_groups avg max min sum The maximum number of security groups allowed for this tenant
openstack.nova.limits.max_server_meta avg max min sum The maximum allowed service metadata definitions for this tenant
openstack.nova.limits.max_total_cores avg max min sum The maximum allowed cores for this tenant
openstack.nova.limits.max_total_floating_ips avg max min sum The maximum allowed floating IPs for this tenant
openstack.nova.limits.max_total_instances avg max min sum The maximum number of instances allowed for this tenant
openstack.nova.limits.max_total_keypairs avg max min sum The maximum allowed keypairs allowed for this tenant
openstack.nova.limits.total_cores_used avg max min sum The total cores used by this tenant
openstack.nova.limits.total_floating_ips_used avg max min sum The total floating IPs used by this tenant
openstack.nova.limits.total_instances_used avg max min sum The total instances used by this tenant
openstack.nova.limits.total_security_groups_used avg max min sum The total number of security groups used by this tenant
openstack.nova.running_vms avg max min sum Number of running VMs on this hypervisor host
openstack.nova.vcpus avg max min sum Number of vCPUs available on this hypervisor host
openstack.nova.vcpus_used avg max min sum Number of vCPUS used on this hypervisor host
openstack.nova.server.hdd_errors avg max min sum The number of errors seen by the server when accessing an HDD device
openstack.nova.server.hdd_read_req avg max min sum The number of read requests made to an HDD device by this server
openstack.nova.server.hdd_write_req avg max min sum The number of write requests made to an HDD device by this server
openstack.nova.server.vda_errors avg max min sum The number of errors seen by the server when accessing a VDA device
openstack.nova.server.vda_read_req avg max min sum The number of read requests made to a VDA device by this server
openstack.nova.server.vda_write_req avg max min sum The number of write requests made to a VDA device by this server
openstack.nova.limits.max_total_ram_size avg max min sum gibibyte The max allowed RAM size for this tenant
openstack.nova.limits.total_ram_used avg max min sum gibibyte The current RAM used by this tenant
openstack.nova.local_gb avg max min sum gibibyte The size in GB of the ephemeral disk present on this hypervisor host
openstack.nova.local_gb_used avg max min sum gibibyte The size in GB of disk used on this hypervisor host
openstack.nova.memory_mb avg max min sum mebibyte The size in MB of RAM present on this hypervisor host
openstack.nova.memory_mb_used avg max min sum mebibyte The size in MB of RAM used on this hypervisor host
openstack.nova.server.hdd_read avg max min sum byte Number of bytes read from an HDD device by this server
openstack.nova.server.hdd_write avg max min sum byte Number of bytes written to an HDD device by this server
openstack.nova.server.vda_read avg max min sum byte Number of bytes read from a VDA device by this server
openstack.nova.server.vda_write avg max min sum byte Number of bytes written to a VDA device by this server
openstack.nova.server.memory avg max min sum mebibyte The amount of memory in MB provisioned for this server
openstack.nova.server.memory_actual avg max min sum mebibyte The amount of memory in MB provisioned for this server
openstack.nova.server.memory_rss avg max min sum mebibyte The amount of memory used by the processes of this server that is not associated with disk pages - such as stack and heap memory
openstack.nova.server.cpu0_time avg max min sum nanosecond CPU time in nanoseconds of this virtual CPU