Telemetry services

TechPreview

The Telemetry services are part of OpenStack services available in Mirantis OpenStack for Kubernetes (MOSK). The Telemetry services monitor OpenStack components, collect and store the telemetry data from them, and perform responsive actions upon this data. See OpenStack cluster for details about OpenStack services in MOSK.

OpenStack Ceilometer is a service that collects data from various OpenStack components. The service can also collect and process notifications from different OpenStack services. Ceilometer stores the data in the Gnocchi database. The service is specified as metering in the OpenStackDeployment custom resource (CR).

Gnocchi is an open-source time series database. One of the advantages of this database is the ability to pre-aggregate the telemetry data while storing it. Gnocchi is specified as metric in the OpenStackDeployment CR.

OpenStack Aodh is part of the Telemetry project. Aodh provides a service that creates alarms based on various metric values or specific events and triggers response actions. The service uses data collected and stored by Ceilometer and Gnocchi. Aodh is specified as alarming in the OpenStackDeployment CR.

Enabling Telemetry services

The Telemetry feature in MOSK has a single mode. The autoscaling mode provides settings for telemetry data collection and storing. The OpenStackDeployment CR should have this mode specified for the correct work of the OpenStack Telemetry services. The autoscaling mode has the following notable configurations:

  • Gnocchi stores cache and data using the Redis storage driver.

  • Metric stores data for one hour with a resolution of 1 minute.

The Telemetry services are disabled by default in MOSK. You have to enable them in the openstackdeployment.yaml file (the OpenStackDeployment CR). The following code block provides an example of deploying the Telemetry services as part of MOSK:

kind: OpenStackDeployment
spec:
  features:
    services:
    - alarming
    - metering
    - metric
    telemetry:
      mode: autoscaling

Advanced configuration

Gnocchi

Gnocchi is not an OpenStack service, so the settings related to its functioning should be included in the spec:common:infra section of the OpenStackDeployment CR.

Ceilometer

The Ceilometer configuration files contain many list structures. Overriding list elements in YAML files is context-dependent and error-prone. Therefore, to override these configuration files, define the spec:services structure in the OpenStackDeployment CR. The spec:services structure provides the ability to use a complete file as text and not as YAML data structure.

Overriding through the spec:services structure is possible for the following files:

  • pipeline.yaml

  • polling.yaml

  • meters.yaml

  • gnocchi_resources.yaml

  • event_pipeline.yaml

  • event_definitions.yaml

An example of overriding through the OpenStackDeployment CR

By default, the autoscaling mode collects the data related to CPU, disk, and memory every minute. The autoscaling mode collects the rest of the available metrics every hour.

The following example shows the overriding of the polling.yaml configuration file through the spec:services structure of the OpenStackDeployment CR.

  1. Get the current configuration file:

    kubectl -n openstack get secret ceilometer-etc -ojsonpath="{.data['polling\.yaml']}" | base64 -d
    sources:
    - interval: 60
      meters:
      - cpu
      - disk*
      - memory*
      name: ascale_pollsters
    - interval: 3600
      meters:
      - '*'
      name: all_pollsters
    
  2. Add the network parameter to the file.

  3. Copy and paste the edited polling.yaml file content to the spec:services:metering section of the OpenStackDeployment CR:

    spec:
      services:
        metering:
          ceilometer:
            conf:
              polling: | # Obligatory. The "|" indicator denotes the literal style. See https://yaml.org/spec/1.2-old/spec.html#id2795688 for details.
                sources:
                - interval: 60
                  meters:
                  - cpu
                  - disk*
                  - memory*
                  - network*
                  name: ascale_pollsters
                - interval: 3600
                  meters:
                  - '*'
                  name: all_pollsters