OpenStack Controller

Supported OS Linux Mac OS Windows

Integration version3.0.0

Overview

Note: This integration only applies to OpenStack v13+ (containerized OpenStack). If you are looking to collect metrics from OpenStack v12 and below (non-containerized OpenStack), use the OpenStack integration.

This check monitors OpenStack from the controller node.

Setup

Installation

The OpenStack Controller check is included in the Datadog Agent package, so you do not need to install anything else on your server.

Configuration

The OpenStack Controller integration is designed to collect information from all compute nodes and the servers running it. The integration should be run from a single Agent to monitor your OpenStack environment, and can be deployed on your controller node or an adjacent server that has access to the Keystone and Nova endpoints.

Prepare OpenStack

Create a datadog user that is used in your openstack_controller.d/conf.yaml file. This user requires admin read-only permissions across your environment so that it can be run from a single node and read high level system information about all nodes and servers.

Agent configuration

  1. Edit the openstack_controller.d/conf.yaml file, in the conf.d/ folder at the root of your Agent’s configuration directory to start collecting your OpenStack Controller performance data. See the sample openstack_controller.d/conf.yaml for all available configuration options:

    init_config:
    
    instances:
      ## @param name - string - required
      ## Unique identifier for this instance.
      #
      - name: "<INSTANCE_NAME>"
    
        ## @param user - object - required
        ## Password authentication is the only auth method supported
        ## User expects username, password, and user domain id
        ## `user` should resolve to a structure like
        ## {'password': '<PASSWORD>', 'name': '<USER_NAME>', 'domain': {'id': '<DOMAIN_ID>'}}
        ## The check uses the Unscoped token method to collect information about
        ## all available projects to the user.
        #
        user:
          password: "<PASSWORD>"
          name: "<USER_NAME>"
          domain:
            id: "<DOMAIN_ID>"
    
  2. Restart the Agent

Log collection
  1. Collecting logs is disabled by default in the Datadog Agent, you can enable it in datadog.yaml:

    logs_enabled: true
    
  2. Add this configuration block to your openstack_controller.d/conf.yaml file to start collecting your Openstack logs:

    logs:
      - type: file
        path: "<LOG_FILE_PATH>"
        source: openstack
    

    Change the path parameter value and configure them for your environment. See the sample openstack_controller.d/conf.yaml for all available configuration options.

Validation

Run the Agent’s status subcommand and look for openstack_controller under the Checks section.

Data Collected

Metrics

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

Events

OpenStack Controller does not include any events.

Service Checks

openstack.neutron.api.up
Returns CRITICAL if the Agent is unable to query the Neutron API, UNKNOWN if there is an issue with the Keystone API. Returns OK otherwise.
Statuses: ok, critical, unknown

openstack.nova.api.up
Returns CRITICAL if the Agent is unable to query the Nova API, UNKNOWN if there is an issue with the Keystone API. Returns OK otherwise.
Statuses: ok, critical, unknown

openstack.keystone.api.up
Returns CRITICAL if the Agent is unable to query the Keystone API. Returns OK otherwise.
Statuses: ok, critical

openstack.nova.hypervisor.up
Returns UNKNOWN if the Agent is unable to get the Hypervisor state, CRITICAL if the Hypervisor is down. Returns OK otherwise.
Statuses: ok, critical, unknown

openstack.neutron.network.up
Returns UNKNOWN if the Agent is unable to get the Network state, CRITICAL if the Network is down. Returns OK otherwise.
Statuses: ok, critical, unknown

Troubleshooting

Need help? Contact Datadog support.