The Loki storage could be behind an HTTPS proxy that requires TLS encrypted connections. This change supports two different TLS configurations: * Connect via one-way TLS as a normal HTTPS connection via the ca_file parameter to provide encryption * Connect via two-way TLS as a mutual TLS connection for encryption and authentication. If cert_file and key_file are provided, they will be sent to Loki to authenticate the requests. Both methods supports the insecure parameter in case the ca_file has not been provided or it is incorrect. With that, the driver will not verify the certificates. Depends-On: https://review.opendev.org/c/openstack/cloudkitty/+/950868 Change-Id: Idfbd5f6e85b572b129b8595fa1eb122b80827d90 Signed-off-by: jlarriba <jlarriba@redhat.com>
146 lines
4.2 KiB
ReStructuredText
146 lines
4.2 KiB
ReStructuredText
===============================
|
|
Storage backend configuration
|
|
===============================
|
|
|
|
Common options
|
|
==============
|
|
|
|
.. note::
|
|
|
|
Two storage backend interfaces are available: v1 and v2. Each supports one
|
|
or several drivers. The v2 storage interface is required to use
|
|
CloudKitty's v2 API. It is retrocompatible with the v1 API. However, it is
|
|
not possible to use the v2 API with the v1 storage interface.
|
|
|
|
The main storage backend options are specified in the ``[storage]`` section of
|
|
the configuration file. The following options are available:
|
|
|
|
* ``version``: Defaults to 2. Version of the storage interface to use
|
|
(must be 1 or 2).
|
|
|
|
* ``backend``: Defaults to ``influxdb``. Storage driver to use.
|
|
Supported v1 drivers are:
|
|
|
|
- ``sqlalchemy``
|
|
|
|
Supported v2 drivers are:
|
|
|
|
- ``influxdb``
|
|
- ``elasticsearch``
|
|
- ``opensearch``
|
|
- ``loki``
|
|
|
|
Driver-specific options
|
|
=======================
|
|
|
|
SQLAlchemy (v1)
|
|
---------------
|
|
|
|
This backend has no specific options. It uses the ``connection`` option of the
|
|
``database`` section. Example of value for this option:
|
|
|
|
.. code-block:: ini
|
|
|
|
[database]
|
|
|
|
connection = mysql+pymysql://cloudkitty_user:cloudkitty_password@mariadb_host/cloudkitty_database
|
|
|
|
InfluxDB (v2)
|
|
-------------
|
|
|
|
Section: ``storage_influxdb``.
|
|
|
|
* ``username``: InfluxDB username.
|
|
|
|
* ``password``: InfluxDB password.
|
|
|
|
* ``database``: InfluxDB database.
|
|
|
|
* ``retention_policy``: Retention policy to use (defaults to ``autogen``)
|
|
|
|
* ``host``: Defaults to ``localhost``. InfluxDB host.
|
|
|
|
* ``port``: Default to 8086. InfluxDB port.
|
|
|
|
* ``use_ssl``: Defaults to false. Set to true to use SSL for InfluxDB
|
|
connections.
|
|
|
|
* ``insecure``: Defaults to false. Set to true to authorize insecure HTTPS
|
|
connections to InfluxDB.
|
|
|
|
* ``cafile``: Path of the CA certificate to trust for HTTPS connections.
|
|
|
|
|
|
.. note:: CloudKitty will push one point per collected metric per collect
|
|
period to InfluxDB. Depending on the size of your infra and the
|
|
capacities of your InfluxDB host / cluster, you might want to do
|
|
regular exports of your data and create a custom retention policy on
|
|
cloudkitty's database.
|
|
|
|
Elasticsearch (v2)
|
|
------------------
|
|
|
|
Section ``storage_elasticsearch``:
|
|
|
|
* ``host``: Defaults to ``http://localhost:9200``. Elasticsearch host, along
|
|
with port and protocol.
|
|
|
|
* ``index_name``: Defaults to ``cloudkitty``. Elasticsearch index to use.
|
|
|
|
* ``insecure``: Defaults to ``false``. Set to true to allow insecure HTTPS
|
|
connections to Elasticsearch.
|
|
|
|
* ``cafile``: Path of the CA certificate to trust for HTTPS connections.
|
|
|
|
* ``scroll_duration``: Defaults to 30. Duration (in seconds) for which the
|
|
Elasticsearch scroll contexts should be kept alive.
|
|
|
|
OpenSearch 2.x (v2)
|
|
-------------------
|
|
|
|
Section ``storage_opensearch``:
|
|
|
|
* ``host``: Defaults to ``http://localhost:9200``. OpenSearch 2.x host, along
|
|
with port and protocol.
|
|
|
|
* ``index_name``: Defaults to ``cloudkitty``. OpenSearch index to use.
|
|
|
|
* ``insecure``: Defaults to ``false``. Set to true to allow insecure HTTPS
|
|
connections to OpenSearch.
|
|
|
|
* ``cafile``: Path of the CA certificate to trust for HTTPS connections.
|
|
|
|
* ``scroll_duration``: Defaults to 30. Duration (in seconds) for which the
|
|
OpenSearch scroll contexts should be kept alive.
|
|
|
|
Loki (v2)
|
|
-------------------
|
|
|
|
Section ``storage_loki``:
|
|
|
|
* ``url``: Defaults to ``http://localhost:3100/loki/api/v1``. Loki host, along
|
|
with port and protocol.
|
|
|
|
* ``tenant``: Defaults to cloudkitty. Loki tenant.
|
|
|
|
* ``stream``: Defaults to ``{"service": "cloudkitty"}``. The labels that are
|
|
going to be used to define the Loki stream as Python dict.
|
|
|
|
* ``buffer_size``: Defaults to ``1``. The number of messages that will be
|
|
grouped together before launching a Loki HTTP POST request.
|
|
|
|
* ``content_type``: Defaults to ``application/json``. The http Content-Type
|
|
that will be used to send info to Loki. It can also be
|
|
``application/x-protobuf`` (not supported yet).
|
|
|
|
* ``insecure``: Defaults to ``false``. Set to true to allow insecure HTTPS
|
|
connections to Loki.
|
|
|
|
* ``ca_file``: Path of the CA certificate to trust for HTTPS connections.
|
|
|
|
* ``cert_file``: Path to a client cert for establishing mTLS connections to
|
|
Loki.
|
|
|
|
* ``key_file``: Path to a client key for establishing mTLS connections to
|
|
Loki.
|