.. _install_obs:

Install and configure for openSUSE and SUSE Linux Enterprise
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This section describes how to install and configure the
Telemetry service, code-named ceilometer, on the controller node.

This section assumes that you already have a working OpenStack
environment with at least the following components installed:
Compute, Image Service, Identity.

Prerequisites
-------------

Before you install and configure the Telemetry service, you must
create a database, service credentials, and API endpoints. However,
unlike other services, the Telemetry service uses a NoSQL database.
See :ref:`environment-nosql-database-obs` to install and configure
MongoDB before proceeding further.

1. Create the ``ceilometer`` database:

   .. code-block:: console

      # mongo --host controller --eval '
        db = db.getSiblingDB("ceilometer");
        db.addUser({user: "ceilometer",
        pwd: "CEILOMETER_DBPASS",
        roles: [ "readWrite", "dbAdmin" ]})'

      MongoDB shell version: 2.4.x
      connecting to: controller:27017/test
      {
       "user" : "ceilometer",
       "pwd" : "72f25aeee7ad4be52437d7cd3fc60f6f",
       "roles" : [
        "readWrite",
        "dbAdmin"
       ],
       "_id" : ObjectId("5489c22270d7fad1ba631dc3")
      }

   Replace ``CEILOMETER_DBPASS`` with a suitable password.

   .. note::

      If the command fails saying you are not authorized to insert a user,
      you may need to temporarily comment out the ``auth`` option in
      the ``/etc/mongodb.conf`` file, restart the MongoDB service using
      ``systemctl restart mongodb``, and try calling the command again.

.. include:: install-base-prereq-common.rst

Install and configure components
--------------------------------

1. Install the packages:

   .. code-block:: console

      # zypper install openstack-ceilometer-api \
        openstack-ceilometer-collector \
        openstack-ceilometer-agent-notification \
        openstack-ceilometer-agent-central python-ceilometerclient

.. include:: install-base-config-common.rst

* In the ``[collector]`` section, configure the dispatcher:

  .. code-block:: ini

     [collector]
     ...
     dispatcher = database

Configure the Apache HTTP server
--------------------------------

* Create the ``/etc/apache2/conf.d/wsgi-ceilometer.conf`` file
  with the following content:

  .. code-block:: apache

     Listen 8777

     <VirtualHost *:8777>
         WSGIDaemonProcess ceilometer-api processes=2 threads=10 user=ceilometer group=ceilometer display-name=%{GROUP}
         WSGIProcessGroup ceilometer-api
         WSGIScriptAlias / "/var/www/cgi-bin/ceilometer/app"
         WSGIApplicationGroup %{GLOBAL}
         ErrorLog /var/log/apache2/ceilometer_error.log
         CustomLog /var/log/apache2/ceilometer_access.log combined
     </VirtualHost>

     WSGISocketPrefix /var/run/apache2

Finalize installation
---------------------

#. Reload the Apache HTTP server:

   .. code-block:: console

      # systemctl reload apache2.service

#. Start the Telemetry services and configure them to start when the
   system boots:

   .. code-block:: console

      # systemctl enable openstack-ceilometer-agent-notification.service \
        openstack-ceilometer-agent-central.service \
        openstack-ceilometer-collector.service
      # systemctl start openstack-ceilometer-agent-notification.service \
        openstack-ceilometer-agent-central.service \
        openstack-ceilometer-collector.service
