# Vitrage Configuration Options

## Vitrage Sample Configuration File

Configure Vitrage by editing /etc/vitrage/vitrage.conf.

No config file is provided with the source code, it will be created during the installation. In case where no configuration file was installed, one can be easily created by running:

    oslo-config-generator \
        --config-file=/etc/vitrage/vitrage-config-generator.conf \
        --output-file=/etc/vitrage/vitrage.conf

The following is a sample Vitrage configuration for adaptation and use. It is auto-generated from Vitrage when this documentation is built, and can also be viewed in file form.

    [DEFAULT]

    #
    # From oslo.log
    #

    # If set to true, the logging level will be set to DEBUG instead of the default
    # INFO level. (boolean value)
    # Note: This option can be changed without restarting.
    #debug = false

    # The name of a logging configuration file. This file is appended to any
    # existing logging configuration files. For details about logging configuration
    # files, see the Python logging module documentation. Note that when logging
    # configuration files are used then all logging configuration is set in the
    # configuration file and other logging configuration options are ignored (for
    # example, log-date-format). (string value)
    # Note: This option can be changed without restarting.
    # Deprecated group/name - [DEFAULT]/log_config
    #log_config_append = <None>

    # Defines the format string for %%(asctime)s in log records. Default:
    # %(default)s . This option is ignored if log_config_append is set. (string
    # value)
    #log_date_format = %Y-%m-%d %H:%M:%S

    # (Optional) Name of log file to send logging output to. If no default is set,
    # logging will go to stderr as defined by use_stderr. This option is ignored if
    # log_config_append is set. (string value)
    # Deprecated group/name - [DEFAULT]/logfile
    #log_file = <None>

    # (Optional) The base directory used for relative log_file  paths. This option
    # is ignored if log_config_append is set. (string value)
    # Deprecated group/name - [DEFAULT]/logdir
    #log_dir = <None>

    # Use syslog for logging. Existing syslog format is DEPRECATED and will be
    # changed later to honor RFC5424. This option is ignored if log_config_append
    # is set. (boolean value)
    #use_syslog = false

    # Enable journald for logging. If running in a systemd environment you may wish
    # to enable journal support. Doing so will use the journal native protocol
    # which includes structured metadata in addition to log messages.This option is
    # ignored if log_config_append is set. (boolean value)
    #use_journal = false

    # Syslog facility to receive log lines. This option is ignored if
    # log_config_append is set. (string value)
    #syslog_log_facility = LOG_USER

    # Use JSON formatting for logging. This option is ignored if log_config_append
    # is set. (boolean value)
    #use_json = false

    # Log output to standard error. This option is ignored if log_config_append is
    # set. (boolean value)
    #use_stderr = false

    # (Optional) Set the 'color' key according to log levels. This option takes
    # effect only when logging to stderr or stdout is used. This option is ignored
    # if log_config_append is set. (boolean value)
    #log_color = false

    # The amount of time before the log files are rotated. This option is ignored
    # unless log_rotation_type is set to "interval". (integer value)
    #log_rotate_interval = 1

    # Rotation interval type. The time of the last file change (or the time when
    # the service was started) is used when scheduling the next rotation. (string
    # value)
    # Possible values:
    # Seconds - <No description provided>
    # Minutes - <No description provided>
    # Hours - <No description provided>
    # Days - <No description provided>
    # Weekday - <No description provided>
    # Midnight - <No description provided>
    #log_rotate_interval_type = days

    # Maximum number of rotated log files. (integer value)
    #max_logfile_count = 30

    # Log file maximum size in MB. This option is ignored if "log_rotation_type" is
    # not set to "size". (integer value)
    #max_logfile_size_mb = 200

    # Log rotation type. (string value)
    # Possible values:
    # interval - Rotate logs at predefined time intervals.
    # size - Rotate logs once they reach a predefined size.
    # none - Do not rotate log files.
    #log_rotation_type = none

    # Format string to use for log messages with context. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s

    # Format string to use for log messages when context is undefined. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s

    # Additional data to append to log message when logging level for the message
    # is DEBUG. Used by oslo_log.formatters.ContextFormatter (string value)
    #logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d

    # Prefix each line of exception output with this format. Used by
    # oslo_log.formatters.ContextFormatter (string value)
    #logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s

    # Defines the format string for %(user_identity)s that is used in
    # logging_context_format_string. Used by oslo_log.formatters.ContextFormatter
    # (string value)
    #logging_user_identity_format = %(user)s %(project)s %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s

    # List of package logging levels in logger=LEVEL pairs. This option is ignored
    # if log_config_append is set. (list value)
    #default_log_levels = amqp=WARN,boto=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,oslo_messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,oslo_policy=INFO,dogpile.core.dogpile=INFO

    # Enables or disables publication of error events. (boolean value)
    #publish_errors = false

    # The format for an instance that is passed with the log message. (string
    # value)
    #instance_format = "[instance: %(uuid)s] "

    # The format for an instance UUID that is passed with the log message. (string
    # value)
    #instance_uuid_format = "[instance: %(uuid)s] "

    # Interval, number of seconds, of log rate limiting. (integer value)
    #rate_limit_interval = 0

    # Maximum number of logged messages per rate_limit_interval. (integer value)
    #rate_limit_burst = 0

    # Log level name used by rate limiting. Logs with level greater or equal to
    # rate_limit_except_level are not filtered. An empty string means that all
    # levels are filtered. (string value)
    # Possible values:
    # CRITICAL - <No description provided>
    # ERROR - <No description provided>
    # INFO - <No description provided>
    # WARNING - <No description provided>
    # DEBUG - <No description provided>
    # '' - <No description provided>
    #rate_limit_except_level = CRITICAL

    # Enables or disables fatal status of deprecations. (boolean value)
    #fatal_deprecations = false

    #
    # From oslo.messaging
    #

    # Size of executor thread pool when executor is threading or eventlet. (integer
    # value)
    # Deprecated group/name - [DEFAULT]/rpc_thread_pool_size
    #executor_thread_pool_size = 64

    # Seconds to wait for a response from a call. (integer value)
    #rpc_response_timeout = 60

    # The network address and optional user credentials for connecting to the
    # messaging backend, in URL format. The expected format is:
    #
    # driver://[user:pass@]host:port[,[userN:passN@]hostN:portN]/virtual_host?query
    #
    # Example: rabbit://rabbitmq:password@127.0.0.1:5672//
    #
    # For full details on the fields in the URL see the documentation of
    # oslo_messaging.TransportURL at
    # https://docs.openstack.org/oslo.messaging/latest/reference/transport.html
    # (string value)
    #transport_url = rabbit://

    # The default exchange under which topics are scoped. May be overridden by an
    # exchange name specified in the transport_url option. (string value)
    #control_exchange = openstack

    # Add an endpoint to answer to ping calls. Endpoint is named
    # oslo_rpc_server_ping (boolean value)
    #rpc_ping_enabled = false

    #
    # From vitrage
    #

    # Aodh version (string value)
    #aodh_version = 2

    # Nova version (string value)
    #nova_version = 2.11

    # Cinder version (string value)
    #cinder_version = 3

    # Glance version (string value)
    #glance_version = 2

    # Heat version (string value)
    #heat_version = 1

    # Mistral version (string value)
    #mistral_version = 2

    # Gnocchi version (string value)
    #gnocchi_version = 1

    # Trove version (string value)
    #trove_version = 1

    # Monasca version (string value)
    #monasca_version = 2_0

    # Indicates whether to use Nova versioned notifications.The default is True. If
    # False, the deprecated Nova legacy notifications will be used.This flag must
    # be set to False if notification_format is set to "unversioned" in nova.conf
    # (boolean value)
    #use_nova_versioned_notifications = true

    # The topic vitrage listens on (string value)
    #rpc_topic = rpcapiv1

    # Names of enabled notifiers (example: nova, snmp, mistral) (list value)
    #notifiers = <None>

    # list of base path for notifiers (list value)
    #notifiers_path = vitrage.notifier.plugins

    [api]

    #
    # From vitrage
    #

    # The port for the vitrage API server. (port value)
    # Minimum value: 0
    # Maximum value: 65535
    #port = 8999

    # The listen IP for the vitrage API server. (string value)
    #host = 0.0.0.0

    # Configuration file for WSGI definition of API. (string value)
    #paste_config = api-paste.ini

    # Number of workers for vitrage API server. (integer value)
    # Minimum value: 1
    #workers = 1

    # Authentication mode to use. (string value)
    # Possible values:
    # keystone - <No description provided>
    # noauth - <No description provided>
    # keycloak - <No description provided>
    #auth_mode = keystone

    # Check that backend is ready before an api call (boolean value)
    #check_backend = true

    [consistency]

    #
    # From vitrage
    #

    # minimum time until deleting entity (in seconds) (integer value)
    # Minimum value: 60
    #min_time_to_delete = 60

    # DEPRECATED: interval between consistency initialization checks for finding if
    # all end messages from datasources were received (in seconds) (integer value)
    # Minimum value: 1
    # This option is deprecated for removal since Stein.
    # Its value may be silently ignored in the future.
    # Reason: This config option is no longer used.
    #initialization_interval = 1

    # DEPRECATED: maximum retries for consistency initialization for finding if all
    # end messages from datasources were received (in seconds) (integer value)
    # Minimum value: 1
    # This option is deprecated for removal since Stein.
    # Its value may be silently ignored in the future.
    # Reason: This config option is no longer used.
    #initialization_max_retries = 30

    [coordination]

    #
    # From vitrage
    #

    # The backend URL to use for the coordination service. If left empty,
    # membership api will not work (string value)
    #backend_url = <None>

    [cors]

    #
    # From oslo.middleware
    #

    # Indicate whether this resource may be shared with the domain received in the
    # requests "origin" header. Format: "<protocol>://<host>[:<port>]", no trailing
    # slash. Example: https://horizon.example.com (list value)
    #allowed_origin = <None>

    # Indicate that the actual request can include user credentials (boolean value)
    #allow_credentials = true

    # Indicate which headers are safe to expose to the API. Defaults to HTTP Simple
    # Headers. (list value)
    #expose_headers =

    # Maximum cache age of CORS preflight requests. (integer value)
    #max_age = 3600

    # Indicate which methods can be used during the actual request. (list value)
    #allow_methods = OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,PATCH

    # Indicate which header field names may be used during the actual request.
    # (list value)
    #allow_headers =

    [database]

    #
    # From oslo.db
    #

    # If True, SQLite uses synchronous mode. (boolean value)
    #sqlite_synchronous = true

    # The back end to use for the database. (string value)
    #backend = sqlalchemy

    # The SQLAlchemy connection string to use to connect to the database. (string
    # value)
    #connection = <None>

    # The SQLAlchemy connection string to use to connect to the slave database.
    # (string value)
    #slave_connection = <None>

    # The SQLAlchemy asyncio connection string to use to connect to the database.
    # (string value)
    #asyncio_connection = <None>

    # The SQLAlchemy asyncio connection string to use to connect to the slave
    # database. (string value)
    #asyncio_slave_connection = <None>

    # Whether or not to assume a reader context needs to guarantee it can read data
    # committed by a writer assuming replication lag is present; defaults to True.
    # When False, a reader context works the same as async_reader and will select
    # the slave database if present. When using a galera cluster, this can be set
    # to False only if you set mysql_wsrep_sync_wait to 1 (this will guarantee that
    # the reader will wait until writesets are committed).Note that this may incur
    # a performance degradation within the galera cluster. Note also that this
    # parameter has no effect if you do not set any slave_connection. (boolean
    # value)
    #synchronous_reader = true

    # The SQL mode to be used for MySQL sessions. This option, including the
    # default, overrides any server-set SQL mode. To use whatever SQL mode is set
    # by the server configuration, set this to no value. Example: mysql_sql_mode=
    # (string value)
    #mysql_sql_mode = TRADITIONAL

    # For Galera only, configure wsrep_sync_wait causality checks on new
    # connections.  Default is None, meaning don't configure any setting. (integer
    # value)
    #mysql_wsrep_sync_wait = <None>

    # Connections which have been present in the connection pool longer than this
    # number of seconds will be replaced with a new one the next time they are
    # checked out from the pool. (integer value)
    #connection_recycle_time = 3600

    # Maximum number of SQL connections to keep open in a pool. Setting a value of
    # 0 indicates no limit. (integer value)
    #max_pool_size = 5

    # Maximum number of database connection retries during startup. Set to -1 to
    # specify an infinite retry count. (integer value)
    #max_retries = 10

    # Interval between retries of opening a SQL connection. (integer value)
    #retry_interval = 10

    # If set, use this value for max_overflow with SQLAlchemy. (integer value)
    #max_overflow = 50

    # Verbosity of SQL debugging information: 0=None, 100=Everything. (integer
    # value)
    # Minimum value: 0
    # Maximum value: 100
    #connection_debug = 0

    # Add Python stack traces to SQL as comment strings. (boolean value)
    #connection_trace = false

    # If set, use this value for pool_timeout with SQLAlchemy. (integer value)
    #pool_timeout = <None>

    # Enable the experimental use of database reconnect on connection lost.
    # (boolean value)
    #use_db_reconnect = false

    # Seconds between retries of a database transaction. (integer value)
    #db_retry_interval = 1

    # If True, increases the interval between retries of a database operation up to
    # db_max_retry_interval. (boolean value)
    #db_inc_retry_interval = true

    # If db_inc_retry_interval is set, the maximum seconds between retries of a
    # database operation. (integer value)
    #db_max_retry_interval = 10

    # Maximum retries in case of connection error or deadlock error before error is
    # raised. Set to -1 to specify an infinite retry count. (integer value)
    #db_max_retries = 20

    # Optional URL parameters to append onto the connection URL at connect time;
    # specify as param1=value1&param2=value2&... (string value)
    #connection_parameters =

    [datasources]

    #
    # From vitrage
    #

    # Names of supported data sources (list value)
    #types = nova.host,nova.instance,nova.zone,cinder.volume,neutron.port,neutron.network

    # base path for data sources (list value)
    #path = vitrage.datasources

    # Time to wait between subsequent datasource snapshots (integer value)
    # Minimum value: 10
    #snapshots_interval = 600

    # Time to wait until retrying to snapshot the datasource in case of fault
    # (integer value)
    # Minimum value: 1
    #snapshot_interval_on_fault = 20

    # Vitrage configured notifications topic (list value)
    # Deprecated group/name - [datasources]/notification_topic
    #notification_topics = vitrage_notifications

    # Exchange that is used for notifications. (string value)
    #notification_exchange = <None>

    [entity_graph]

    #
    # From vitrage
    #

    # A path for the configuration files of the data sources values (string value)
    #datasources_values_dir = /etc/vitrage/datasources_values

    # The topic that vitrage-graph uses for graph notification messages. (string
    # value)
    #notifier_topic = vitrage.graph

    # graph driver implementation class (string value)
    #graph_driver = networkx

    [evaluator]

    #
    # From vitrage
    #

    # Number of workers for template evaluator. (integer value)
    # Minimum value: 1
    # Maximum value: 32
    #workers = 1

    [evaluator_actions]

    #
    # From vitrage
    #

    # A prefix of the topic on which events will be sent from the evaluator to the
    # specific notifiers (string value)
    #evaluator_notification_topic_prefix = vitrage_evaluator_notifications

    [healthcheck]

    #
    # From oslo.middleware
    #

    # Show more detailed information as part of the response. Security note:
    # Enabling this option may expose sensitive details about the service being
    # monitored. Be sure to verify that it will not violate your security policies.
    # (boolean value)
    #detailed = false

    # Additional backends that can perform health checks and report that
    # information back as part of a request. (list value)
    #backends =

    # A list of network addresses to limit source ip allowed to access healthcheck
    # information. Any request from ip outside of these network addresses are
    # ignored. (list value)
    #allowed_source_ranges =

    # Ignore requests with proxy headers. (boolean value)
    #ignore_proxied_requests = false

    # Check the presence of a file to determine if an application is running on a
    # port. Used by DisableByFileHealthcheck plugin. (string value)
    #disable_by_file_path = <None>

    # Check the presence of a file based on a port to determine if an application
    # is running on a port. Expects a "port:path" list of strings. Used by
    # DisableByFilesPortsHealthcheck plugin. (list value)
    #disable_by_file_paths =

    # Check the presence of files. Used by EnableByFilesHealthcheck plugin. (list
    # value)
    #enable_by_file_paths =

    #
    # From oslo.middleware.healthcheck
    #

    # Show more detailed information as part of the response. Security note:
    # Enabling this option may expose sensitive details about the service being
    # monitored. Be sure to verify that it will not violate your security policies.
    # (boolean value)
    #detailed = false

    # Additional backends that can perform health checks and report that
    # information back as part of a request. (list value)
    #backends =

    # A list of network addresses to limit source ip allowed to access healthcheck
    # information. Any request from ip outside of these network addresses are
    # ignored. (list value)
    #allowed_source_ranges =

    # Ignore requests with proxy headers. (boolean value)
    #ignore_proxied_requests = false

    # Check the presence of a file to determine if an application is running on a
    # port. Used by DisableByFileHealthcheck plugin. (string value)
    #disable_by_file_path = <None>

    # Check the presence of a file based on a port to determine if an application
    # is running on a port. Expects a "port:path" list of strings. Used by
    # DisableByFilesPortsHealthcheck plugin. (list value)
    #disable_by_file_paths =

    # Check the presence of files. Used by EnableByFilesHealthcheck plugin. (list
    # value)
    #enable_by_file_paths =

    [jaccard_correlation]

    #
    # From vitrage
    #

    # jaccard_correlation class path (string value)
    #plugin_path = vitrage.machine_learning.plugins.jaccard_correlation.alarm_processor.AlarmDataProcessor

    # the amount of events flushes (integer value)
    #num_of_events_to_flush = 1000

    # folder to write all reports to (string value)
    #output_folder = /tmp

    # threshold of interesting correlations (floating point value)
    #correlation_threshold = 0

    # high correlation lower limit (floating point value)
    #high_corr_score = 0.9

    # medium correlation lower limit (floating point value)
    #med_corr_score = 0.5

    [keystone_authtoken]

    #
    # From keystonemiddleware.auth_token
    #

    # Complete "public" Identity API endpoint. This endpoint should not be an
    # "admin" endpoint, as it should be accessible by all end users.
    # Unauthenticated clients are redirected to this endpoint to authenticate.
    # Although this endpoint should ideally be unversioned, client support in the
    # wild varies. If you're using a versioned v2 endpoint here, then this should
    # *not* be the same endpoint the service user utilizes for validating tokens,
    # because normal end users may not be able to reach that endpoint. (string
    # value)
    # Deprecated group/name - [keystone_authtoken]/auth_uri
    #www_authenticate_uri = <None>

    # DEPRECATED: Complete "public" Identity API endpoint. This endpoint should not
    # be an "admin" endpoint, as it should be accessible by all end users.
    # Unauthenticated clients are redirected to this endpoint to authenticate.
    # Although this endpoint should ideally be unversioned, client support in the
    # wild varies. If you're using a versioned v2 endpoint here, then this should
    # *not* be the same endpoint the service user utilizes for validating tokens,
    # because normal end users may not be able to reach that endpoint. This option
    # is deprecated in favor of www_authenticate_uri and will be removed in the S
    # release. (string value)
    # This option is deprecated for removal since Queens.
    # Its value may be silently ignored in the future.
    # Reason: The auth_uri option is deprecated in favor of www_authenticate_uri
    # and will be removed in the S  release.
    #auth_uri = <None>

    # API version of the Identity API endpoint. (string value)
    #auth_version = <None>

    # Interface to use for the Identity API endpoint. Valid values are "public",
    # "internal" (default) or "admin". (string value)
    #interface = internal

    # Do not handle authorization requests within the middleware, but delegate the
    # authorization decision to downstream WSGI components. (boolean value)
    #delay_auth_decision = false

    # Request timeout value for communicating with Identity API server. (integer
    # value)
    #http_connect_timeout = <None>

    # How many times are we trying to reconnect when communicating with Identity
    # API Server. (integer value)
    #http_request_max_retries = 3

    # Request environment key where the Swift cache object is stored. When
    # auth_token middleware is deployed with a Swift cache, use this option to have
    # the middleware share a caching backend with swift. Otherwise, use the
    # ``memcached_servers`` option instead. (string value)
    #cache = <None>

    # Required if identity server requires client certificate (string value)
    #certfile = <None>

    # Required if identity server requires client certificate (string value)
    #keyfile = <None>

    # A PEM encoded Certificate Authority to use when verifying HTTPs connections.
    # Defaults to system CAs. (string value)
    #cafile = <None>

    # Verify HTTPS connections. (boolean value)
    #insecure = false

    # The region in which the identity server can be found. (string value)
    #region_name = <None>

    # Optionally specify a list of memcached server(s) to use for caching. If left
    # undefined, tokens will instead be cached in-process. (list value)
    # Deprecated group/name - [keystone_authtoken]/memcache_servers
    #memcached_servers = <None>

    # In order to prevent excessive effort spent validating tokens, the middleware
    # caches previously-seen tokens for a configurable duration (in seconds). Set
    # to -1 to disable caching completely. (integer value)
    #token_cache_time = 300

    # (Optional) If defined, indicate whether token data should be authenticated or
    # authenticated and encrypted. If MAC, token data is authenticated (with HMAC)
    # in the cache. If ENCRYPT, token data is encrypted and authenticated in the
    # cache. If the value is not one of these options or empty, auth_token will
    # raise an exception on initialization. (string value)
    # Possible values:
    # None - <No description provided>
    # MAC - <No description provided>
    # ENCRYPT - <No description provided>
    #memcache_security_strategy = None

    # (Optional, mandatory if memcache_security_strategy is defined) This string is
    # used for key derivation. (string value)
    #memcache_secret_key = <None>

    # (Optional) Global toggle for TLS usage when comunicating with the caching
    # servers. (boolean value)
    #memcache_tls_enabled = false

    # (Optional) Path to a file of concatenated CA certificates in PEM format
    # necessary to establish the caching server's authenticity. If tls_enabled is
    # False, this option is ignored. (string value)
    #memcache_tls_cafile = <None>

    # (Optional) Path to a single file in PEM format containing the client's
    # certificate as well as any number of CA certificates needed to establish the
    # certificate's authenticity. This file is only required when client side
    # authentication is necessary. If tls_enabled is False, this option is ignored.
    # (string value)
    #memcache_tls_certfile = <None>

    # (Optional) Path to a single file containing the client's private key in.
    # Otherwhise the private key will be taken from the file specified in
    # tls_certfile. If tls_enabled is False, this option is ignored. (string value)
    #memcache_tls_keyfile = <None>

    # (Optional) Set the available ciphers for sockets created with the TLS
    # context. It should be a string in the OpenSSL cipher list format. If not
    # specified, all OpenSSL enabled ciphers will be available. (string value)
    #memcache_tls_allowed_ciphers = <None>

    # (Optional) Number of seconds memcached server is considered dead before it is
    # tried again. (integer value)
    #memcache_pool_dead_retry = 300

    # (Optional) Maximum total number of open connections to every memcached
    # server. (integer value)
    #memcache_pool_maxsize = 10

    # (Optional) Socket timeout in seconds for communicating with a memcached
    # server. (integer value)
    #memcache_pool_socket_timeout = 3

    # (Optional) Number of seconds a connection to memcached is held unused in the
    # pool before it is closed. (integer value)
    #memcache_pool_unused_timeout = 60

    # (Optional) Number of seconds that an operation will wait to get a memcached
    # client connection from the pool. (integer value)
    #memcache_pool_conn_get_timeout = 10

    # (Optional) Use the advanced (eventlet safe) memcached client pool. (boolean
    # value)
    #memcache_use_advanced_pool = true

    # (Optional) Indicate whether to set the X-Service-Catalog header. If False,
    # middleware will not ask for service catalog on token validation and will not
    # set the X-Service-Catalog header. (boolean value)
    #include_service_catalog = true

    # Used to control the use and type of token binding. Can be set to: "disabled"
    # to not check token binding. "permissive" (default) to validate binding
    # information if the bind type is of a form known to the server and ignore it
    # if not. "strict" like "permissive" but if the bind type is unknown the token
    # will be rejected. "required" any form of token binding is needed to be
    # allowed. Finally the name of a binding method that must be present in tokens.
    # (string value)
    #enforce_token_bind = permissive

    # A choice of roles that must be present in a service token. Service tokens are
    # allowed to request that an expired token can be used and so this check should
    # tightly control that only actual services should be sending this token. Roles
    # here are applied as an ANY check so any role in this list must be present.
    # For backwards compatibility reasons this currently only affects the
    # allow_expired check. (list value)
    #service_token_roles = service

    # For backwards compatibility reasons we must let valid service tokens pass
    # that don't pass the service_token_roles check as valid. Setting this true
    # will become the default in a future release and should be enabled if
    # possible. (boolean value)
    #service_token_roles_required = false

    # The name or type of the service as it appears in the service catalog. This is
    # used to validate tokens that have restricted access rules. (string value)
    #service_type = <None>

    # Enable the SASL(Simple Authentication and Security Layer) if the SASL_enable
    # is true, else disable. (boolean value)
    #memcache_sasl_enabled = false

    # the user name for the SASL (string value)
    #memcache_username =

    # the username password for SASL (string value)
    #memcache_password =

    # Authentication type to load (string value)
    # Deprecated group/name - [keystone_authtoken]/auth_plugin
    #auth_type = <None>

    # Config Section from which to load plugin specific options (string value)
    #auth_section = <None>

    [machine_learning]

    #
    # From vitrage
    #

    # Names of enabled machine learning plugins (example jaccard_correlation) (list
    # value)
    #plugins = <None>

    # list of base path for notifiers (list value)
    #plugins_path = vitrage.machine_learning.plugins

    # The topic that vitrage-graph uses for graph machine learning messages.
    # (string value)
    #machine_learning_topic = vitrage.machine_learning

    [oslo_concurrency]

    #
    # From oslo.concurrency
    #

    # Enables or disables inter-process locks. (boolean value)
    #disable_process_locking = false

    # Directory to use for lock files.  For security, the specified directory
    # should only be writable by the user running the processes that need locking.
    # Defaults to environment variable OSLO_LOCK_PATH. If external locks are used,
    # a lock path must be set. (string value)
    #lock_path = <None>

    [oslo_messaging_kafka]

    #
    # From oslo.messaging
    #

    # Max fetch bytes of Kafka consumer (integer value)
    #kafka_max_fetch_bytes = 1048576

    # Default timeout(s) for Kafka consumers (floating point value)
    #kafka_consumer_timeout = 1.0

    # Group id for Kafka consumer. Consumers in one group will coordinate message
    # consumption (string value)
    #consumer_group = oslo_messaging_consumer

    # Upper bound on the delay for KafkaProducer batching in seconds (floating
    # point value)
    #producer_batch_timeout = 0.0

    # Size of batch for the producer async send (integer value)
    #producer_batch_size = 16384

    # The compression codec for all data generated by the producer. If not set,
    # compression will not be used. Note that the allowed values of this depend on
    # the kafka version (string value)
    # Possible values:
    # none - <No description provided>
    # gzip - <No description provided>
    # snappy - <No description provided>
    # lz4 - <No description provided>
    # zstd - <No description provided>
    #compression_codec = none

    # Enable asynchronous consumer commits (boolean value)
    #enable_auto_commit = false

    # The maximum number of records returned in a poll call (integer value)
    #max_poll_records = 500

    # Protocol used to communicate with brokers (string value)
    # Possible values:
    # PLAINTEXT - <No description provided>
    # SASL_PLAINTEXT - <No description provided>
    # SSL - <No description provided>
    # SASL_SSL - <No description provided>
    #security_protocol = PLAINTEXT

    # Mechanism when security protocol is SASL (string value)
    #sasl_mechanism = PLAIN

    # CA certificate PEM file used to verify the server certificate (string value)
    #ssl_cafile =

    # Client certificate PEM file used for authentication. (string value)
    #ssl_client_cert_file =

    # Client key PEM file used for authentication. (string value)
    #ssl_client_key_file =

    # Client key password file used for authentication. (string value)
    #ssl_client_key_password =

    [oslo_messaging_notifications]

    #
    # From oslo.messaging
    #

    # The Drivers(s) to handle sending notifications. Possible values are
    # messaging, messagingv2, routing, log, test, noop (multi valued)
    #driver =

    # A URL representing the messaging driver to use for notifications. If not set,
    # we fall back to the same configuration used for RPC. (string value)
    #transport_url = <None>

    # AMQP topic used for OpenStack notifications. (list value)
    #topics = notifications

    # The maximum number of attempts to re-send a notification message which failed
    # to be delivered due to a recoverable error. 0 - No retry, -1 - indefinite
    # (integer value)
    #retry = -1

    [oslo_messaging_rabbit]

    #
    # From oslo.messaging
    #

    # Use durable queues in AMQP. If rabbit_quorum_queue is enabled, queues will be
    # durable and this value will be ignored. (boolean value)
    #amqp_durable_queues = false

    # Auto-delete queues in AMQP. (boolean value)
    #amqp_auto_delete = false

    # Size of RPC connection pool. (integer value)
    # Minimum value: 1
    #rpc_conn_pool_size = 30

    # The pool size limit for connections expiration policy (integer value)
    #conn_pool_min_size = 2

    # The time-to-live in sec of idle connections in the pool (integer value)
    #conn_pool_ttl = 1200

    # Connect over SSL. (boolean value)
    #ssl = false

    # SSL version to use (valid only if SSL enabled). Valid values are TLSv1 and
    # SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be available on some
    # distributions. (string value)
    #ssl_version =

    # SSL key file (valid only if SSL enabled). (string value)
    #ssl_key_file =

    # SSL cert file (valid only if SSL enabled). (string value)
    #ssl_cert_file =

    # SSL certification authority file (valid only if SSL enabled). (string value)
    #ssl_ca_file =

    # Global toggle for enforcing the OpenSSL FIPS mode. This feature requires
    # Python support. This is available in Python 3.9 in all environments and may
    # have been backported to older Python versions on select environments. If the
    # Python executable used does not support OpenSSL FIPS mode, an exception will
    # be raised. (boolean value)
    #ssl_enforce_fips_mode = false

    # DEPRECATED: (DEPRECATED) It is recommend not to use this option anymore. Run
    # the health check heartbeat thread through a native python thread by default.
    # If this option is equal to False then the health check heartbeat will inherit
    # the execution model from the parent process. For example if the parent
    # process has monkey patched the stdlib by using eventlet/greenlet then the
    # heartbeat will be run through a green thread. This option should be set to
    # True only for the wsgi services. (boolean value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: The option is related to Eventlet which will be removed. In addition
    # this has never worked as expected with services using eventlet for core
    # service framework.
    #heartbeat_in_pthread = false

    # How long to wait (in seconds) before reconnecting in response to an AMQP
    # consumer cancel notification. (floating point value)
    # Minimum value: 0.0
    # Maximum value: 4.5
    #kombu_reconnect_delay = 1.0

    # Random time to wait for when reconnecting in response to an AMQP consumer
    # cancel notification. (floating point value)
    # Minimum value: 0.0
    #kombu_reconnect_splay = 0.0

    # EXPERIMENTAL: Possible values are: gzip, bz2. If not set compression will not
    # be used. This option may not be available in future versions. (string value)
    #kombu_compression = <None>

    # How long to wait a missing client before abandoning to send it its replies.
    # This value should not be longer than rpc_response_timeout. (integer value)
    # Deprecated group/name - [oslo_messaging_rabbit]/kombu_reconnect_timeout
    #kombu_missing_consumer_retry_timeout = 60

    # Determines how the next RabbitMQ node is chosen in case the one we are
    # currently connected to becomes unavailable. Takes effect only if more than
    # one RabbitMQ node is provided in config. (string value)
    # Possible values:
    # round-robin - <No description provided>
    # shuffle - <No description provided>
    #kombu_failover_strategy = round-robin

    # The RabbitMQ login method. (string value)
    # Possible values:
    # PLAIN - <No description provided>
    # AMQPLAIN - <No description provided>
    # EXTERNAL - <No description provided>
    # RABBIT-CR-DEMO - <No description provided>
    #rabbit_login_method = AMQPLAIN

    # How frequently to retry connecting with RabbitMQ. (integer value)
    # Minimum value: 1
    #rabbit_retry_interval = 1

    # How long to backoff for between retries when connecting to RabbitMQ. (integer
    # value)
    # Minimum value: 0
    #rabbit_retry_backoff = 2

    # Maximum interval of RabbitMQ connection retries. (integer value)
    # Minimum value: 1
    #rabbit_interval_max = 30

    # Try to use HA queues in RabbitMQ (x-ha-policy: all). If you change this
    # option, you must wipe the RabbitMQ database. In RabbitMQ 3.0, queue mirroring
    # is no longer controlled by the x-ha-policy argument when declaring a queue.
    # If you just want to make sure that all queues (except those with auto-
    # generated names) are mirrored across all nodes, run: "rabbitmqctl set_policy
    # HA '^(?!amq\.).*' '{"ha-mode": "all"}' " (boolean value)
    #rabbit_ha_queues = false

    # Use quorum queues in RabbitMQ (x-queue-type: quorum). The quorum queue is a
    # modern queue type for RabbitMQ implementing a durable, replicated FIFO queue
    # based on the Raft consensus algorithm. It is available as of RabbitMQ 3.8.0.
    # If set this option will conflict with the HA queues (``rabbit_ha_queues``)
    # aka mirrored queues, in other words the HA queues should be disabled. Quorum
    # queues are also durable by default so the amqp_durable_queues option is
    # ignored when this option is enabled. (boolean value)
    #rabbit_quorum_queue = false

    # Use quorum queues for transients queues in RabbitMQ. Enabling this option
    # will then make sure those queues are also using quorum kind of rabbit queues,
    # which are HA by default. (boolean value)
    #rabbit_transient_quorum_queue = false

    # Each time a message is redelivered to a consumer, a counter is incremented.
    # Once the redelivery count exceeds the delivery limit the message gets dropped
    # or dead-lettered (if a DLX exchange has been configured) Used only when
    # rabbit_quorum_queue is enabled, Default 0 which means dont set a limit.
    # (integer value)
    #rabbit_quorum_delivery_limit = 0

    # By default all messages are maintained in memory if a quorum queue grows in
    # length it can put memory pressure on a cluster. This option can limit the
    # number of messages in the quorum queue. Used only when rabbit_quorum_queue is
    # enabled, Default 0 which means dont set a limit. (integer value)
    #rabbit_quorum_max_memory_length = 0

    # By default all messages are maintained in memory if a quorum queue grows in
    # length it can put memory pressure on a cluster. This option can limit the
    # number of memory bytes used by the quorum queue. Used only when
    # rabbit_quorum_queue is enabled, Default 0 which means dont set a limit.
    # (integer value)
    #rabbit_quorum_max_memory_bytes = 0

    # Positive integer representing duration in seconds for queue TTL (x-expires).
    # Queues which are unused for the duration of the TTL are automatically
    # deleted. The parameter affects only reply and fanout queues. Setting 0 as
    # value will disable the x-expires. If doing so, make sure you have a rabbitmq
    # policy to delete the queues or you deployment will create an infinite number
    # of queue over time.In case rabbit_stream_fanout is set to True, this option
    # will control data retention policy (x-max-age) for messages in the fanout
    # queue rather then the queue duration itself. So the oldest data in the stream
    # queue will be discarded from it once reaching TTL Setting to 0 will disable
    # x-max-age for stream which make stream grow indefinitely filling up the
    # diskspace (integer value)
    # Minimum value: 0
    #rabbit_transient_queues_ttl = 1800

    # Specifies the number of messages to prefetch. Setting to zero allows
    # unlimited messages. (integer value)
    #rabbit_qos_prefetch_count = 0

    # Number of seconds after which the Rabbit broker is considered down if
    # heartbeat's keep-alive fails (0 disables heartbeat). (integer value)
    #heartbeat_timeout_threshold = 60

    # How often times during the heartbeat_timeout_threshold we check the
    # heartbeat. (integer value)
    #heartbeat_rate = 3

    # DEPRECATED: (DEPRECATED) Enable/Disable the RabbitMQ mandatory flag for
    # direct send. The direct send is used as reply, so the MessageUndeliverable
    # exception is raised in case the client queue does not
    # exist.MessageUndeliverable exception will be used to loop for a timeout to
    # lets a chance to sender to recover.This flag is deprecated and it will not be
    # possible to deactivate this functionality anymore (boolean value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: Mandatory flag no longer deactivable.
    #direct_mandatory_flag = true

    # Enable x-cancel-on-ha-failover flag so that rabbitmq server will cancel and
    # notify consumerswhen queue is down (boolean value)
    #enable_cancel_on_failover = false

    # Should we use consistant queue names or random ones (boolean value)
    #use_queue_manager = false

    # Hostname used by queue manager. Defaults to the value returned by
    # socket.gethostname(). (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #hostname = node1.example.com

    # Process name used by queue manager (string value)
    #
    # This option has a sample default set, which means that
    # its actual default value may vary from the one documented
    # below.
    #processname = nova-api

    # Use stream queues in RabbitMQ (x-queue-type: stream). Streams are a new
    # persistent and replicated data structure ("queue type") in RabbitMQ which
    # models an append-only log with non-destructive consumer semantics. It is
    # available as of RabbitMQ 3.9.0. If set this option will replace all fanout
    # queues with only one stream queue. (boolean value)
    #rabbit_stream_fanout = false

    [oslo_middleware]

    #
    # From oslo.middleware
    #

    # The maximum body size for each request, in bytes. (integer value)
    #max_request_body_size = 114688

    # Whether the application is behind a proxy or not. This determines if the
    # middleware should parse the headers or not. (boolean value)
    #enable_proxy_headers_parsing = false

    # HTTP basic auth password file. (string value)
    #http_basic_auth_user_file = /etc/htpasswd

    [oslo_policy]

    #
    # From oslo.policy
    #

    # DEPRECATED: This option controls whether or not to enforce scope when
    # evaluating policies. If ``True``, the scope of the token used in the request
    # is compared to the ``scope_types`` of the policy being enforced. If the
    # scopes do not match, an ``InvalidScope`` exception will be raised. If
    # ``False``, a message will be logged informing operators that policies are
    # being invoked with mismatching scope. (boolean value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: This configuration was added temporarily to facilitate a smooth
    # transition to the new RBAC. OpenStack will always enforce scope checks. This
    # configuration option is deprecated and will be removed in the 2025.2 cycle.
    #enforce_scope = true

    # This option controls whether or not to use old deprecated defaults when
    # evaluating policies. If ``True``, the old deprecated defaults are not going
    # to be evaluated. This means if any existing token is allowed for old defaults
    # but is disallowed for new defaults, it will be disallowed. It is encouraged
    # to enable this flag along with the ``enforce_scope`` flag so that you can get
    # the benefits of new defaults and ``scope_type`` together. If ``False``, the
    # deprecated policy check string is logically OR'd with the new policy check
    # string, allowing for a graceful upgrade experience between releases with new
    # policies, which is the default behavior. (boolean value)
    #enforce_new_defaults = true

    # The relative or absolute path of a file that maps roles to permissions for a
    # given service. Relative paths must be specified in relation to the
    # configuration file setting this option. (string value)
    #policy_file = policy.yaml

    # Default rule. Enforced when a requested rule is not found. (string value)
    #policy_default_rule = default

    # Directories where policy configuration files are stored. They can be relative
    # to any directory in the search path defined by the config_dir option, or
    # absolute paths. The file defined by policy_file must exist for these
    # directories to be searched.  Missing or empty directories are ignored. (multi
    # valued)
    #policy_dirs = policy.d

    # Content Type to send and receive data for REST based policy check (string
    # value)
    # Possible values:
    # application/x-www-form-urlencoded - <No description provided>
    # application/json - <No description provided>
    #remote_content_type = application/x-www-form-urlencoded

    # server identity verification for REST based policy check (boolean value)
    #remote_ssl_verify_server_crt = false

    # Absolute path to ca cert file for REST based policy check (string value)
    #remote_ssl_ca_crt_file = <None>

    # Absolute path to client cert for REST based policy check (string value)
    #remote_ssl_client_crt_file = <None>

    # Absolute path client key file REST based policy check (string value)
    #remote_ssl_client_key_file = <None>

    # Timeout in seconds for REST based policy check (floating point value)
    # Minimum value: 0
    #remote_timeout = 60

    [persistency]

    #
    # From vitrage
    #

    # persistor will listen on this topic for events to store (string value)
    #persistor_topic = vitrage_persistor

    # The number of days inactive alarms history is kept (integer value)
    #alarm_history_ttl = 30

    [profiler]

    #
    # From osprofiler
    #

    #
    # Enable the profiling for all services on this node.
    #
    # Default value is False (fully disable the profiling feature).
    #
    # Possible values:
    #
    # * True: Enables the feature
    # * False: Disables the feature. The profiling cannot be started via this
    # project
    #   operations. If the profiling is triggered by another project, this project
    #   part will be empty.
    #  (boolean value)
    # Deprecated group/name - [profiler]/profiler_enabled
    #enabled = false

    #
    # Enable SQL requests profiling in services.
    #
    # Default value is False (SQL requests won't be traced).
    #
    # Possible values:
    #
    # * True: Enables SQL requests profiling. Each SQL query will be part of the
    #   trace and can the be analyzed by how much time was spent for that.
    # * False: Disables SQL requests profiling. The spent time is only shown on a
    #   higher level of operations. Single SQL queries cannot be analyzed this way.
    #  (boolean value)
    #trace_sqlalchemy = false

    #
    # Enable python requests package profiling.
    #
    # Supported drivers: jaeger+otlp
    #
    # Default value is False.
    #
    # Possible values:
    #
    # * True: Enables requests profiling.
    # * False: Disables requests profiling.
    #  (boolean value)
    #trace_requests = false

    #
    # Secret key(s) to use for encrypting context data for performance profiling.
    #
    # This string value should have the following format:
    # <key1>[,<key2>,...<keyn>],
    # where each key is some random string. A user who triggers the profiling via
    # the REST API has to set one of these keys in the headers of the REST API call
    # to include profiling results of this node for this particular project.
    #
    # Both "enabled" flag and "hmac_keys" config options should be set to enable
    # profiling. Also, to generate correct profiling information across all
    # services
    # at least one key needs to be consistent between OpenStack projects. This
    # ensures it can be used from client side to generate the trace, containing
    # information from all possible resources.
    #  (string value)
    #hmac_keys = SECRET_KEY

    #
    # Connection string for a notifier backend.
    #
    # Default value is ``messaging://`` which sets the notifier to oslo_messaging.
    #
    # Examples of possible values:
    #
    # * ``messaging://`` - use oslo_messaging driver for sending spans.
    # * ``redis://127.0.0.1:6379`` - use redis driver for sending spans.
    # * ``mongodb://127.0.0.1:27017`` - use mongodb driver for sending spans.
    # * ``elasticsearch://127.0.0.1:9200`` - use elasticsearch driver for sending
    #   spans.
    # * ``jaeger://127.0.0.1:6831`` - use jaeger tracing as driver for sending
    # spans.
    #  (string value)
    #connection_string = messaging://

    #
    # Document type for notification indexing in elasticsearch.
    #  (string value)
    #es_doc_type = notification

    #
    # This parameter is a time value parameter (for example: es_scroll_time=2m),
    # indicating for how long the nodes that participate in the search will
    # maintain
    # relevant resources in order to continue and support it.
    #  (string value)
    #es_scroll_time = 2m

    #
    # Elasticsearch splits large requests in batches. This parameter defines
    # maximum size of each batch (for example: es_scroll_size=10000).
    #  (integer value)
    #es_scroll_size = 10000

    #
    # Redissentinel provides a timeout option on the connections.
    # This parameter defines that timeout (for example: socket_timeout=0.1).
    #  (floating point value)
    #socket_timeout = 0.1

    #
    # Redissentinel uses a service name to identify a master redis service.
    # This parameter defines the name (for example:
    # ``sentinal_service_name=mymaster``).
    #  (string value)
    #sentinel_service_name = mymaster

    #
    # Enable filter traces that contain error/exception to a separated place.
    #
    # Default value is set to False.
    #
    # Possible values:
    #
    # * True: Enable filter traces that contain error/exception.
    # * False: Disable the filter.
    #  (boolean value)
    #filter_error_trace = false

    [profiler_jaeger]

    #
    # From osprofiler
    #

    #
    # Set service name prefix to Jaeger service name.
    #  (string value)
    #service_name_prefix = <None>

    #
    # Set process tracer tags.
    #  (dict value)
    #process_tags =

    [profiler_otlp]

    #
    # From osprofiler
    #

    #
    # Set service name prefix to OTLP exporters.
    #  (string value)
    #service_name_prefix = <None>

    [service_credentials]

    #
    # From vitrage
    #

    # Region name to use for OpenStack service endpoints. (string value)
    #region_name = <None>

    # Type of endpoint in Identity service catalog to use for communication with
    # OpenStack services. (string value)
    # Possible values:
    # public - <No description provided>
    # internal - <No description provided>
    # admin - <No description provided>
    # auth - <No description provided>
    # publicURL - <No description provided>
    # internalURL - <No description provided>
    # adminURL - <No description provided>
    # Deprecated group/name - [service_credentials]/os_endpoint_type
    #interface = public

    [snmp]

    #
    # From vitrage
    #

    # snmp notifier class path (string value)
    #notifier = vitrage.notifier.plugins.snmp.snmp_notifier.SnmpNotifier

    # snmp sender class path (string value)
    #snmp_sender_class = vitrage.notifier.plugins.snmp.snmp_sender.SnmpSender

    # alarm oid mapping yaml file path (string value)
    #alarm_oid_mapping =

    # consumers yaml file path (string value)
    #consumers =

    # path to oid tree format configuration yaml file (string value)
    #oid_tree =

    [snmp_parsing]

    #
    # From vitrage
    #

    # The listening port of snmp_parsing service (integer value)
    #snmp_listening_port = 8162

    # The default path of oid_mapping yaml file. (string value)
    #oid_mapping =

    [webhook]

    #
    # From vitrage
    #

    # notifier webhook class path (string value)
    #notifier = vitrage.notifier.plugins.webhook.webhook.Webhook

    # rest http post max retries (integer value)
    #max_retries = 2

    [zaqar]

    #
    # From vitrage
    #

    # zaqar notifier class path (string value)
    #notifier = vitrage.notifier.plugins.zaqar.zaqar_notifier.ZaqarNotifier

    # zaqar queue to post messages (string value)
    #queue = alarms

this page last updated: 2026-01-23 22:59:33

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug