In order to support vm_workload_consolidation, workload_balance and workload_stabilization strategis some instance metrics are required. This patch is adding support for them. Implementation is based on a prometheus store populated using sg-core from ceilometer metrics with Pollster source. - instance_ram_usage: rely on ceilometer_memory_usage metrics created from ceilometer memory.usage meter. - instance_ram_allocated: rely on the memory value provided by the inventory created from nova and placement APIs. - instance_cpu_usage: rely on ceilometer_cpu metric created from ceilometer cpu meter. A max value of 100 is set in the query. - instance_root_disk_size: rely on the `disk` value provided by the inventory created from nova and placement APIs. A new parameterer `instance_uuid_label` has been added to the prometheus datasource configuration to identify the label used to store the value of the OpenStack instance uuid for eache instance metric in prometheus. Default value is `resource`. Change-Id: I2f2b56aa002014e511a5e48398ef1da43fc4f5e2
63 lines
2.6 KiB
Python
63 lines
2.6 KiB
Python
# Copyright 2024 Red Hat, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
|
|
from oslo_config import cfg
|
|
|
|
prometheus_client = cfg.OptGroup(name='prometheus_client',
|
|
title='Configuration Options for Prometheus',
|
|
help="See https://docs.openstack.org/watcher/"
|
|
"latest/datasources/prometheus.html for "
|
|
"details on how these options are used.")
|
|
|
|
PROMETHEUS_CLIENT_OPTS = [
|
|
cfg.StrOpt('host',
|
|
help="The hostname or IP address for the prometheus server."),
|
|
cfg.StrOpt('port',
|
|
help="The port number used by the prometheus server."),
|
|
cfg.StrOpt('fqdn_label',
|
|
default="fqdn",
|
|
help="The label that Prometheus uses to store the fqdn of "
|
|
"exporters. Defaults to 'fqdn'."),
|
|
cfg.StrOpt('instance_uuid_label',
|
|
default="resource",
|
|
help="The label that Prometheus uses to store the uuid of "
|
|
"OpenStack instances. Defaults to 'resource'."),
|
|
cfg.StrOpt('username',
|
|
help="The basic_auth username to use to authenticate with the "
|
|
"Prometheus server."),
|
|
cfg.StrOpt('password',
|
|
secret=True,
|
|
help="The basic_auth password to use to authenticate with the "
|
|
"Prometheus server."),
|
|
cfg.StrOpt('cafile',
|
|
help="Path to the CA certificate for establishing a TLS "
|
|
"connection with the Prometheus server."),
|
|
cfg.StrOpt('certfile',
|
|
help="Path to the client certificate for establishing a TLS "
|
|
"connection with the Prometheus server."),
|
|
cfg.StrOpt('keyfile',
|
|
help="Path to the client key for establishing a TLS "
|
|
"connection with the Prometheus server."),
|
|
]
|
|
|
|
|
|
def register_opts(conf):
|
|
conf.register_group(prometheus_client)
|
|
conf.register_opts(PROMETHEUS_CLIENT_OPTS, group=prometheus_client)
|
|
|
|
|
|
def list_opts():
|
|
return [(prometheus_client, PROMETHEUS_CLIENT_OPTS)]
|