530 lines
15 KiB
ReStructuredText
530 lines
15 KiB
ReStructuredText
..
|
|
Copyright 2012 Nicolas Barcet for Canonical
|
|
2013 New Dream Network, LLC (DreamHost)
|
|
|
|
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.
|
|
|
|
.. _installing_manually:
|
|
|
|
=====================
|
|
Installing Manually
|
|
=====================
|
|
|
|
|
|
Storage Backend Installation
|
|
============================
|
|
|
|
This step is a prerequisite for the collector and API services. You may use
|
|
one of the listed database backends below to store Ceilometer data.
|
|
|
|
Gnocchi
|
|
-------
|
|
|
|
1. Follow `Gnocchi installation`_ instructions
|
|
|
|
2. Initialize Gnocchi for Ceilometer::
|
|
|
|
$ gnocchi-upgrade --create-legacy-resource-types
|
|
|
|
.. note::
|
|
|
|
Prior to Gnocchi 2.1, Ceilometer resource types were included, therefore
|
|
--create-legacy-resource-types flag is not needed.
|
|
|
|
3. Edit `/etc/ceilometer/ceilometer.conf` for the collector service::
|
|
|
|
[DEFAULT]
|
|
meter_dispatchers = gnocchi
|
|
event_dispatchers = gnocchi
|
|
|
|
[dispatcher_gnocchi]
|
|
filter_service_activity = False # Enable if using swift backend
|
|
filter_project = <project name associated with gnocchi user> # if using swift backend
|
|
|
|
[service_credentials]
|
|
auth_url = <auth_url>:5000
|
|
region_name = RegionOne
|
|
password = password
|
|
username = ceilometer
|
|
project_name = service
|
|
project_domain_id = default
|
|
user_domain_id = default
|
|
auth_type = password
|
|
|
|
4. Copy gnocchi_resources.yaml to config directory (e.g./etc/ceilometer)
|
|
|
|
5. To minimize data requests, caching and batch processing should be enabled:
|
|
|
|
1. Enable resource caching (oslo.cache_ should be installed)::
|
|
|
|
[cache]
|
|
backend_argument = redis_expiration_time:600
|
|
backend_argument = db:0
|
|
backend_argument = distributed_lock:True
|
|
backend_argument = url:redis://localhost:6379
|
|
backend = dogpile.cache.redis
|
|
|
|
2. Enable batch processing::
|
|
|
|
[collector]
|
|
batch_size = 100
|
|
batch_timeout = 5
|
|
|
|
6. Start collector service
|
|
|
|
.. _oslo.cache: http://docs.openstack.org/developer/oslo.cache/opts.html
|
|
|
|
|
|
MongoDB
|
|
-------
|
|
|
|
Follow the instructions to install the MongoDB_ package for your operating
|
|
system, then start the service. The required minimum version of MongoDB is
|
|
2.4.x. You will also need to have pymongo_ 2.4 installed
|
|
|
|
To use MongoDB as the storage backend, change the 'database' section in
|
|
ceilometer.conf as follows::
|
|
|
|
[database]
|
|
connection = mongodb://username:password@host:27017/ceilometer
|
|
|
|
SQLalchemy-supported DBs
|
|
------------------------
|
|
|
|
You may alternatively use any SQLAlchemy-supported DB such as
|
|
`PostgreSQL` or `MySQL`.
|
|
|
|
To use MySQL as the storage backend, change the 'database' section in
|
|
ceilometer.conf as follows::
|
|
|
|
[database]
|
|
connection = mysql+pymysql://username:password@host/ceilometer?charset=utf8
|
|
|
|
HBase
|
|
-----
|
|
|
|
HBase backend is implemented to use HBase Thrift interface, therefore it is
|
|
mandatory to have the HBase Thrift server installed and running. To start
|
|
the Thrift server, please run the following command::
|
|
|
|
${HBASE_HOME}/bin/hbase thrift start
|
|
|
|
The implementation uses `HappyBase`_, which is a wrapper library used to
|
|
interact with HBase via Thrift protocol. You can verify the Thrift
|
|
connection by running a quick test from a client:
|
|
|
|
.. code-block:: python
|
|
|
|
import happybase
|
|
|
|
conn = happybase.Connection(host=$hbase-thrift-server,
|
|
port=9090,
|
|
table_prefix=None,
|
|
table_prefix_separator='_')
|
|
print conn.tables() # this returns a list of HBase tables in your HBase server
|
|
|
|
.. note::
|
|
|
|
HappyBase version 0.5 or greater is required. Additionally, version 0.7
|
|
is not currently supported.
|
|
|
|
In the case of HBase, the required database tables (`project`, `user`, `resource`,
|
|
`meter`) should be created manually with `f` column family for each one.
|
|
|
|
To use HBase as the storage backend, change the 'database' section in
|
|
ceilometer.conf as follows::
|
|
|
|
[database]
|
|
connection = hbase://hbase-thrift-host:9090
|
|
|
|
It is possible to customize happybase's `table_prefix` and `table_prefix_separator`
|
|
via query string. By default `table_prefix` is not set and `table_prefix_separator`
|
|
is '_'. When `table_prefix` is not specified `table_prefix_separator` is not taken
|
|
into account. E.g. the resource table in the default case will be 'resource' while
|
|
with `table_prefix` set to 'ceilo' and `table_prefix_separator` to '.' the resulting
|
|
table will be 'ceilo.resource'. For this second case this is the database connection
|
|
configuration::
|
|
|
|
[database]
|
|
connection = hbase://hbase-thrift-host:9090?table_prefix=ceilo&table_prefix_separator=.
|
|
|
|
To ensure proper configuration, please add the following lines to the
|
|
`hbase-site.xml` configuration file::
|
|
|
|
<property>
|
|
<name>hbase.thrift.minWorkerThreads</name>
|
|
<value>200</value>
|
|
</property>
|
|
|
|
.. _`Gnocchi installation`: http://docs.openstack.org/developer/gnocchi/install.html
|
|
.. _HappyBase: http://happybase.readthedocs.org/en/latest/index.html#
|
|
.. _MongoDB: http://www.mongodb.org/
|
|
.. _pymongo: https://pypi.python.org/pypi/pymongo/
|
|
|
|
|
|
Installing the notification agent
|
|
=================================
|
|
|
|
.. index::
|
|
double: installing; agent-notification
|
|
|
|
1. Clone the ceilometer git repository to the management server::
|
|
|
|
$ cd /opt/stack
|
|
$ git clone https://git.openstack.org/openstack/ceilometer.git
|
|
|
|
2. As a user with ``root`` permissions or ``sudo`` privileges, run the
|
|
ceilometer installer::
|
|
|
|
$ cd ceilometer
|
|
$ sudo python setup.py install
|
|
|
|
3. Copy the sample configuration files from the source tree
|
|
to their final location::
|
|
|
|
$ mkdir -p /etc/ceilometer
|
|
$ cp etc/ceilometer/*.json /etc/ceilometer
|
|
$ cp etc/ceilometer/*.yaml /etc/ceilometer
|
|
$ cp etc/ceilometer/ceilometer.conf.sample /etc/ceilometer/ceilometer.conf
|
|
|
|
4. Edit ``/etc/ceilometer/ceilometer.conf``
|
|
|
|
1. Configure messaging::
|
|
|
|
[oslo_messaging_notifications]
|
|
topics = notifications
|
|
|
|
[oslo_messaging_rabbit]
|
|
rabbit_userid = stackrabbit
|
|
rabbit_password = openstack1
|
|
rabbit_hosts = 10.0.2.15
|
|
|
|
2. Set the ``telemetry_secret`` value.
|
|
|
|
Set the ``telemetry_secret`` value to a large, random, value. Use
|
|
the same value in all ceilometer configuration files, on all
|
|
nodes, so that messages passing between the nodes can be
|
|
validated. This value can be left empty to disable message signing.
|
|
|
|
.. note::
|
|
|
|
Disabling signing will improve message handling performance
|
|
|
|
Refer to :doc:`/configuration` for details about any other options
|
|
you might want to modify before starting the service.
|
|
|
|
5. Start the notification daemon::
|
|
|
|
$ ceilometer-agent-notification
|
|
|
|
.. note::
|
|
|
|
The default development configuration of the collector logs to
|
|
stderr, so you may want to run this step using a screen session
|
|
or other tool for maintaining a long-running program in the
|
|
background.
|
|
|
|
|
|
Installing the collector
|
|
========================
|
|
|
|
.. index::
|
|
double: installing; collector
|
|
|
|
.. _storage_backends:
|
|
|
|
1. Clone the ceilometer git repository to the management server::
|
|
|
|
$ cd /opt/stack
|
|
$ git clone https://git.openstack.org/openstack/ceilometer.git
|
|
|
|
2. As a user with ``root`` permissions or ``sudo`` privileges, run the
|
|
ceilometer installer::
|
|
|
|
$ cd ceilometer
|
|
$ sudo python setup.py install
|
|
|
|
3. Copy the sample configuration files from the source tree
|
|
to their final location::
|
|
|
|
$ mkdir -p /etc/ceilometer
|
|
$ cp etc/ceilometer/*.json /etc/ceilometer
|
|
$ cp etc/ceilometer/*.yaml /etc/ceilometer
|
|
$ cp etc/ceilometer/ceilometer.conf.sample /etc/ceilometer/ceilometer.conf
|
|
|
|
4. Edit ``/etc/ceilometer/ceilometer.conf``
|
|
|
|
1. Configure messaging::
|
|
|
|
[oslo_messaging_notifications]
|
|
topics = notifications
|
|
|
|
[oslo_messaging_rabbit]
|
|
rabbit_userid = stackrabbit
|
|
rabbit_password = openstack1
|
|
rabbit_hosts = 10.0.2.15
|
|
|
|
2. Set the ``telemetry_secret`` value (if enabled for notification agent)
|
|
|
|
Refer to :doc:`/configuration` for details about any other options
|
|
you might want to modify before starting the service.
|
|
|
|
5. Start the collector::
|
|
|
|
$ ceilometer-collector
|
|
|
|
.. note::
|
|
|
|
The default development configuration of the collector logs to
|
|
stderr, so you may want to run this step using a screen session
|
|
or other tool for maintaining a long-running program in the
|
|
background.
|
|
|
|
Installing the Polling Agent
|
|
============================
|
|
|
|
.. index::
|
|
double: installing; agent
|
|
|
|
.. note::
|
|
|
|
The polling agent needs to be able to talk to Keystone and any of
|
|
the services being polled for updates. It also needs to run on your compute
|
|
nodes to poll instances.
|
|
|
|
1. Clone the ceilometer git repository to the server::
|
|
|
|
$ cd /opt/stack
|
|
$ git clone https://git.openstack.org/openstack/ceilometer.git
|
|
|
|
2. As a user with ``root`` permissions or ``sudo`` privileges, run the
|
|
ceilometer installer::
|
|
|
|
$ cd ceilometer
|
|
$ sudo python setup.py install
|
|
|
|
3. Copy the sample configuration files from the source tree
|
|
to their final location::
|
|
|
|
$ mkdir -p /etc/ceilometer
|
|
$ cp etc/ceilometer/*.json /etc/ceilometer
|
|
$ cp etc/ceilometer/*.yaml /etc/ceilometer
|
|
$ cp etc/ceilometer/ceilometer.conf.sample /etc/ceilometer/ceilometer.conf
|
|
|
|
4. Configure messaging by editing ``/etc/ceilometer/ceilometer.conf``::
|
|
|
|
[oslo_messaging_notifications]
|
|
topics = notifications
|
|
|
|
[oslo_messaging_rabbit]
|
|
rabbit_userid = stackrabbit
|
|
rabbit_password = openstack1
|
|
rabbit_hosts = 10.0.2.15
|
|
|
|
5. In order to retrieve object store statistics, ceilometer needs
|
|
access to swift with ``ResellerAdmin`` role. You should give this
|
|
role to your ``os_username`` user for tenant ``os_tenant_name``::
|
|
|
|
$ openstack role create ResellerAdmin
|
|
+-----------+----------------------------------+
|
|
| Field | Value |
|
|
+-----------+----------------------------------+
|
|
| domain_id | None |
|
|
| id | f5153dae801244e8bb4948f0a6fb73b7 |
|
|
| name | ResellerAdmin |
|
|
+-----------+----------------------------------+
|
|
|
|
$ openstack role add f5153dae801244e8bb4948f0a6fb73b7 \
|
|
--project $SERVICE_TENANT \
|
|
--user $CEILOMETER_USER
|
|
|
|
6. Start the agent::
|
|
|
|
$ ceilometer-polling
|
|
|
|
7. By default, the polling agent polls the `compute` and `central` namespaces.
|
|
You can specify which namespace to poll in the `ceilometer.conf`
|
|
configuration file or on the command line::
|
|
|
|
$ ceilometer-polling --polling-namespaces central,ipmi
|
|
|
|
|
|
Installing the API Server
|
|
=========================
|
|
|
|
.. index::
|
|
double: installing; API
|
|
|
|
.. note::
|
|
|
|
The API server needs to be able to talk to keystone and ceilometer's
|
|
database. It is only required if you choose to store data in legacy
|
|
database or if you inject new samples via REST API.
|
|
|
|
1. Clone the ceilometer git repository to the server::
|
|
|
|
$ cd /opt/stack
|
|
$ git clone https://git.openstack.org/openstack/ceilometer.git
|
|
|
|
2. As a user with ``root`` permissions or ``sudo`` privileges, run the
|
|
ceilometer installer::
|
|
|
|
$ cd ceilometer
|
|
$ sudo python setup.py install
|
|
|
|
3. Copy the sample configuration files from the source tree
|
|
to their final location::
|
|
|
|
$ mkdir -p /etc/ceilometer
|
|
$ cp etc/ceilometer/api_paste.ini /etc/ceilometer
|
|
$ cp etc/ceilometer/*.json /etc/ceilometer
|
|
$ cp etc/ceilometer/*.yaml /etc/ceilometer
|
|
$ cp etc/ceilometer/ceilometer.conf.sample /etc/ceilometer/ceilometer.conf
|
|
|
|
4. Configure messaging by editing ``/etc/ceilometer/ceilometer.conf``::
|
|
|
|
[oslo_messaging_notifications]
|
|
topics = notifications
|
|
|
|
[oslo_messaging_rabbit]
|
|
rabbit_userid = stackrabbit
|
|
rabbit_password = openstack1
|
|
rabbit_hosts = 10.0.2.15
|
|
|
|
5. Create a service for ceilometer in keystone::
|
|
|
|
$ openstack service create metering --name=ceilometer \
|
|
--description="Ceilometer Service"
|
|
|
|
6. Create an endpoint in keystone for ceilometer::
|
|
|
|
$ openstack endpoint create $CEILOMETER_SERVICE \
|
|
--region RegionOne \
|
|
--publicurl "http://$SERVICE_HOST:8777" \
|
|
--adminurl "http://$SERVICE_HOST:8777" \
|
|
--internalurl "http://$SERVICE_HOST:8777"
|
|
|
|
.. note::
|
|
|
|
CEILOMETER_SERVICE is the id of the service created by the first command
|
|
and SERVICE_HOST is the host where the Ceilometer API is running. The
|
|
default port value for ceilometer API is 8777. If the port value
|
|
has been customized, adjust accordingly.
|
|
|
|
7. Choose and start the API server.
|
|
|
|
Ceilometer includes the ``ceilometer-api`` command. This can be
|
|
used to run the API server. For smaller or proof-of-concept
|
|
installations this is a reasonable choice. For larger installations it
|
|
is strongly recommended to install the API server in a WSGI host
|
|
such as mod_wsgi (see :doc:`mod_wsgi`). Doing so will provide better
|
|
performance and more options for making adjustments specific to the
|
|
installation environment.
|
|
|
|
If you are using the ``ceilometer-api`` command it can be started
|
|
as::
|
|
|
|
$ ceilometer-api
|
|
|
|
.. note::
|
|
|
|
The development version of the API server logs to stderr, so you
|
|
may want to run this step using a screen session or other tool for
|
|
maintaining a long-running program in the background.
|
|
|
|
|
|
Enabling Service Notifications
|
|
==============================
|
|
|
|
Cinder
|
|
------
|
|
|
|
Edit ``cinder.conf`` to include::
|
|
|
|
[oslo_messaging_notifications]
|
|
driver = messagingv2
|
|
|
|
Glance
|
|
------
|
|
|
|
Edit ``glance.conf`` to include::
|
|
|
|
[oslo_messaging_notifications]
|
|
driver = messagingv2
|
|
|
|
Heat
|
|
----
|
|
|
|
Configure the driver in ``heat.conf``::
|
|
|
|
[oslo_messaging_notifications]
|
|
driver=messagingv2
|
|
|
|
Neutron
|
|
------
|
|
|
|
Edit ``neutron.conf`` to include::
|
|
|
|
[oslo_messaging_notifications]
|
|
driver = messagingv2
|
|
|
|
Nova
|
|
----
|
|
|
|
Edit ``nova.conf`` to include::
|
|
|
|
[DEFAULT]
|
|
instance_usage_audit=True
|
|
instance_usage_audit_period=hour
|
|
notify_on_state_change=vm_and_task_state
|
|
|
|
[oslo_messaging_notifications]
|
|
driver=messagingv2
|
|
|
|
|
|
Sahara
|
|
------
|
|
|
|
Configure the driver in ``sahara.conf``::
|
|
|
|
[DEFAULT]
|
|
enable_notifications=true
|
|
|
|
[oslo_messaging_notifications]
|
|
driver=messagingv2
|
|
|
|
|
|
Swift
|
|
-----
|
|
|
|
Edit ``proxy-server.conf`` to include::
|
|
|
|
[filter:ceilometer]
|
|
topic = notifications
|
|
driver = messaging
|
|
url = rabbit://stackrabbit:openstack1@10.0.2.15:5672/
|
|
control_exchange = swift
|
|
paste.filter_factory = ceilometermiddleware.swift:filter_factory
|
|
set log_level = WARN
|
|
|
|
and edit [pipeline:main] to include the ceilometer middleware before the application::
|
|
|
|
[pipeline:main]
|
|
pipeline = catch_errors ... ... ceilometer proxy-server
|
|
|
|
|
|
Also, you need to configure messaging related options correctly as written above
|
|
for other parts of installation guide. Refer to :doc:`/configuration` for
|
|
details about any other options you might want to modify before starting the
|
|
service.
|