From 63c135ee31fa870650039bc7657c54b028fa7f70 Mon Sep 17 00:00:00 2001 From: Patrick Darley Date: Fri, 17 Apr 2015 14:10:53 +0000 Subject: Openstack: Make Ceilometer configurable This commit configures ceilometer to integrate with Keystone, Glance, Cinder and Nova. Change-Id: I19e8580de87858033ce1c2caf86a828d6377bb91 --- openstack/manifest | 11 +++ .../openstack-ceilometer-alarm-evaluator.service | 12 +++ .../openstack-ceilometer-alarm-notifier.service | 12 +++ .../system/openstack-ceilometer-api.service | 12 +++ .../system/openstack-ceilometer-central.service | 12 +++ .../system/openstack-ceilometer-collector.service | 12 +++ .../system/openstack-ceilometer-compute.service | 12 +++ .../openstack-ceilometer-notification.service | 12 +++ .../system/openstack-ceilometer-setup.service | 10 +++ openstack/usr/share/openstack/ceilometer.yml | 95 ++++++++++++++++++++++ .../usr/share/openstack/ceilometer/ceilometer.conf | 56 +++++++------ openstack/usr/share/openstack/cinder/cinder.conf | 4 +- .../usr/share/openstack/glance/glance-api.conf | 2 +- .../share/openstack/glance/glance-registry.conf | 15 ++-- openstack/usr/share/openstack/nova/nova.conf | 8 +- 15 files changed, 244 insertions(+), 41 deletions(-) create mode 100644 openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service create mode 100644 openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service create mode 100644 openstack/usr/lib/systemd/system/openstack-ceilometer-api.service create mode 100644 openstack/usr/lib/systemd/system/openstack-ceilometer-central.service create mode 100644 openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service create mode 100644 openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service create mode 100644 openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service create mode 100644 openstack/usr/lib/systemd/system/openstack-ceilometer-setup.service create mode 100644 openstack/usr/share/openstack/ceilometer.yml (limited to 'openstack') diff --git a/openstack/manifest b/openstack/manifest index 4dc44b34..78b030bb 100644 --- a/openstack/manifest +++ b/openstack/manifest @@ -5,6 +5,9 @@ template 0100644 0 0 /etc/tempest/tempest.conf 0040755 0 0 /usr/share/openstack 0100644 0 0 /usr/share/openstack/hosts +0040755 0 0 /usr/share/openstack/ceilometer +0100644 0 0 /usr/share/openstack/ceilometer.yml +0100644 0 0 /usr/share/openstack/ceilometer/ceilometer.conf 0040755 0 0 /usr/share/openstack/cinder 0100644 0 0 /usr/share/openstack/cinder-config.yml 0100644 0 0 /usr/share/openstack/cinder-db.yml @@ -162,6 +165,14 @@ template 0100644 0 0 /etc/tempest/tempest.conf 0100644 0 0 /usr/lib/systemd/system/openstack-cinder-scheduler.service 0100644 0 0 /usr/lib/systemd/system/openstack-cinder-volume.service 0100644 0 0 /usr/lib/systemd/system/openstack-cinder-backup.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-setup.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-api.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-central.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-collector.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-compute.service +0100644 0 0 /usr/lib/systemd/system/openstack-ceilometer-notification.service 0100644 0 0 /usr/lib/systemd/system/openvswitch-setup.service 0100644 0 0 /usr/lib/systemd/system/openvswitch-db-server.service 0100644 0 0 /usr/lib/systemd/system/openvswitch.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service new file mode 100644 index 00000000..1976417c --- /dev/null +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service @@ -0,0 +1,12 @@ +[Unit] +Description=OpenStack ceilometer alarm evaluation service +After=syslog.target network-online.target openstack-ceilometer-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-alarm-evaluator --logfile /var/log/ceilometer/alarm-evaluator.log + +[Install] +WantedBy=multi-user.target diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service new file mode 100644 index 00000000..070d063d --- /dev/null +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service @@ -0,0 +1,12 @@ +[Unit] +Description=OpenStack ceilometer alarm notification service +After=syslog.target network-online.target openstack-ceilometer-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-alarm-notifier --logfile /var/log/ceilometer/alarm-notifier.log + +[Install] +WantedBy=multi-user.target diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service new file mode 100644 index 00000000..3981553b --- /dev/null +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service @@ -0,0 +1,12 @@ +[Unit] +Description=OpenStack ceilometer API service +After=syslog.target network-online.target openstack-ceilometer-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-api --logfile /var/log/ceilometer/api.log + +[Install] +WantedBy=multi-user.target diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service new file mode 100644 index 00000000..9defb885 --- /dev/null +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service @@ -0,0 +1,12 @@ +[Unit] +Description=OpenStack ceilometer central agent +After=syslog.target network-online.target openstack-ceilometer-collector.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-agent-central --logfile /var/log/ceilometer/central.log + +[Install] +WantedBy=multi-user.target diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service new file mode 100644 index 00000000..c7171451 --- /dev/null +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service @@ -0,0 +1,12 @@ +[Unit] +Description=OpenStack ceilometer collection service +After=syslog.target network-online.target openstack-ceilometer-setup.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-collector --logfile /var/log/ceilometer/collector.log + +[Install] +WantedBy=multi-user.target diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service new file mode 100644 index 00000000..b321c576 --- /dev/null +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service @@ -0,0 +1,12 @@ +[Unit] +Description=OpenStack ceilometer compute agent +After=syslog.target network-online.target openstack-ceilometer-collector.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-agent-compute --logfile /var/log/ceilometer/compute.log + +[Install] +WantedBy=multi-user.target diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service new file mode 100644 index 00000000..db723923 --- /dev/null +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service @@ -0,0 +1,12 @@ +[Unit] +Description=OpenStack ceilometer notification agent +After=syslog.target network-online.target openstack-ceilometer-collector.service +Wants=network-online.target + +[Service] +Type=simple +User=ceilometer +ExecStart=/usr/bin/ceilometer-agent-notification --logfile /var/log/ceilometer/agent-notification.log + +[Install] +WantedBy=multi-user.target diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-setup.service b/openstack/usr/lib/systemd/system/openstack-ceilometer-setup.service new file mode 100644 index 00000000..9936c822 --- /dev/null +++ b/openstack/usr/lib/systemd/system/openstack-ceilometer-setup.service @@ -0,0 +1,10 @@ +[Unit] +Description=Run ceilometer-setup Ansible scripts +After=local-fs.target openstack-keystone-setup.service postgres-server.service openstack-cinder-setup.service openstack-nova-setup.service openstack-neutron-setup.service openstack-glance-setup.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/ansible-playbook -v -M /usr/share/ansible/ansible-openstack-modules -i /usr/share/openstack/hosts /usr/share/openstack/ceilometer.yml + +[Install] +WantedBy=multi-user.target diff --git a/openstack/usr/share/openstack/ceilometer.yml b/openstack/usr/share/openstack/ceilometer.yml new file mode 100644 index 00000000..33a29a89 --- /dev/null +++ b/openstack/usr/share/openstack/ceilometer.yml @@ -0,0 +1,95 @@ +--- +- hosts: localhost + vars_files: + - "/etc/openstack/ceilometer.conf" + tasks: + - name: Create the ceilometer user. + user: + name: ceilometer + comment: Openstack Ceilometer Daemons + shell: /sbin/nologin + home: /var/lib/ceilometer + + - name: Create the /var folders for ceilometer + file: + path: "{{ item }}" + state: directory + owner: ceilometer + group: ceilometer + with_items: + - /var/run/ceilometer + - /var/lock/ceilometer + - /var/log/ceilometer + - /var/lib/ceilometer + + - name: Create /etc/ceilometer directory + file: + path: /etc/ceilometer + state: directory + + - name: Add the configuration needed for ceilometer in /etc/ceilometer using templates + template: + src: /usr/share/openstack/ceilometer/{{ item }} + dest: /etc/ceilometer/{{ item }} + with_lines: + - cd /usr/share/openstack/ceilometer && find -type f + + - name: Create ceilometer service user in service tenant + keystone_user: + user: "{{ CEILOMETER_SERVICE_USER }}" + password: "{{ CEILOMETER_SERVICE_PASSWORD }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Assign admin role to ceilometers service user in the service tenant + keystone_user: + role: admin + user: "{{ CEILOMETER_SERVICE_USER }}" + tenant: service + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Add ceilometer endpoint + keystone_service: + name: ceilometer + type: metering + description: Openstack Metering Service + publicurl: http://{{ CONTROLLER_HOST_ADDRESS }}:8777 + internalurl: http://{{ CONTROLLER_HOST_ADDRESS }}:8777 + adminurl: http://{{ CONTROLLER_HOST_ADDRESS }}:8777 + region: regionOne + token: "{{ KEYSTONE_TEMPORARY_ADMIN_TOKEN }}" + + - name: Create postgresql user for ceilometer + postgresql_user: + name: "{{ CEILOMETER_DB_USER }}" + login_host: "{{ CONTROLLER_HOST_ADDRESS }}" + password: "{{ CEILOMETER_DB_PASSWORD }}" + sudo: yes + sudo_user: ceilometer + + - name: Create database for ceilometer services + postgresql_db: + name: ceilometer + owner: "{{ CEILOMETER_DB_USER }}" + login_host: "{{ CONTROLLER_HOST_ADDRESS }}" + sudo: yes + sudo_user: ceilometer + + - name: Initiate ceilometer database + command: ceilometer-dbsync + sudo: yes + sudo_user: ceilometer + + - name: Enable and start openstack-ceilometer services + service: + name: "{{ item }}" + enabled: yes + state: started + with_items: + - openstack-ceilometer-api.service + - openstack-ceilometer-alarm-evaluator.service + - openstack-ceilometer-alarm-notifier.service + - openstack-ceilometer-central.service + - openstack-ceilometer-collector.service + - openstack-ceilometer-compute.service + - openstack-ceilometer-notification.service diff --git a/openstack/usr/share/openstack/ceilometer/ceilometer.conf b/openstack/usr/share/openstack/ceilometer/ceilometer.conf index 927379be..b572d40f 100644 --- a/openstack/usr/share/openstack/ceilometer/ceilometer.conf +++ b/openstack/usr/share/openstack/ceilometer/ceilometer.conf @@ -55,7 +55,7 @@ # The strategy to use for auth: noauth or keystone. (string # value) -#auth_strategy=keystone +auth_strategy=keystone # Deploy the deprecated v1 API. (boolean value) #enable_v1_api=true @@ -202,7 +202,7 @@ # Publish error events (boolean value) #publish_errors=false - + # Make deprecations fatal (boolean value) #fatal_deprecations=false @@ -246,7 +246,7 @@ # Use syslog for logging. Existing syslog format is DEPRECATED # during I, and then will be changed in J to honor RFC5424 # (boolean value) -#use_syslog=false +use_syslog=true # (Optional) Use syslog rfc5424 format for logging. If # enabled, will add APP-NAME (RFC5424) before the MSG part of @@ -310,7 +310,7 @@ # The messaging module to use, defaults to kombu. (string # value) -#rpc_backend=ceilometer.openstack.common.rpc.impl_kombu +rpc_backend=rabbit # Size of RPC thread pool (integer value) #rpc_thread_pool_size=64 @@ -371,26 +371,28 @@ # The RabbitMQ broker address where a single node is used # (string value) -#rabbit_host=localhost +rabbit_host = {{ RABBITMQ_HOST }} + # The RabbitMQ broker port where a single node is used # (integer value) -#rabbit_port=5672 +rabbit_port= {{ RABBITMQ_PORT }} # RabbitMQ HA cluster host:port pairs (list value) #rabbit_hosts=$rabbit_host:$rabbit_port # Connect over SSL for RabbitMQ (boolean value) -#rabbit_use_ssl=false +rabbit_use_ssl=false # The RabbitMQ userid (string value) -#rabbit_userid=guest +rabbit_userid= {{ RABBITMQ_USER }} # The RabbitMQ password (string value) -#rabbit_password=guest +rabbit_password = {{ RABBITMQ_PASSWORD }} + # The RabbitMQ virtual host (string value) -#rabbit_virtual_host=/ +rabbit_virtual_host=/ # How frequently to retry connecting with RabbitMQ (integer # value) @@ -523,7 +525,7 @@ # # Exchange name for Cinder notifications. (string value) -#cinder_control_exchange=cinder +cinder_control_exchange=cinder [alarm] @@ -631,8 +633,8 @@ # Deprecated group/name - [DEFAULT]/sql_connection # Deprecated group/name - [DATABASE]/sql_connection # Deprecated group/name - [sql]/connection -#connection=sqlite:////ceilometer/openstack/common/db/$sqlite_db - +connection=postgresql://{{ CEILOMETER_DB_USER }}:{{ CEILOMETER_DB_PASSWORD }}@{{ CONTROLLER_HOST_ADDRESS }}/ceilometer + # The SQLAlchemy connection string used to connect to the # slave database (string value) #slave_connection= @@ -753,7 +755,9 @@ #auth_protocol=https # Complete public Identity API endpoint (string value) -#auth_uri= +auth_uri= http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 +identity_uri = http://{{ CONTROLLER_HOST_ADDRESS }}:35357 + # API version of the admin Identity API endpoint (string # value) @@ -784,14 +788,14 @@ #admin_token= # Keystone account username (string value) -#admin_user= +admin_user = {{ CEILOMETER_SERVICE_USER }} # Keystone account password (string value) -#admin_password= +admin_password = {{ CEILOMETER_SERVICE_PASSWORD }} # Keystone service account tenant name to validate user tokens # (string value) -#admin_tenant_name=admin +admin_tenant_name = service # Env key for the swift cache (string value) #cache= @@ -912,8 +916,8 @@ # Secret value for signing metering messages. (string value) # Deprecated group/name - [DEFAULT]/metering_secret # Deprecated group/name - [publisher_rpc]/metering_secret -#metering_secret=change this or be hacked - +# It should be set to some random value +metering_secret = {{ METERING_SECRET }} [publisher_rpc] @@ -944,10 +948,10 @@ # User name to use for OpenStack service access. (string # value) -#os_username=ceilometer +os_username = {{ CEILOMETER_SERVICE_USER }} # Password to use for OpenStack service access. (string value) -#os_password=admin +os_password = {{ CEILOMETER_SERVICE_PASSWORD }} # Tenant ID to use for OpenStack service access. (string # value) @@ -955,21 +959,21 @@ # Tenant name to use for OpenStack service access. (string # value) -#os_tenant_name=admin +os_tenant_name = service # Certificate chain for SSL validation. (string value) #os_cacert= # Auth URL to use for OpenStack service access. (string value) -#os_auth_url=http://localhost:5000/v2.0 - +os_auth_url = http://{{ CONTROLLER_HOST_ADDRESS }}:5000/v2.0 + # Region name to use for OpenStack service endpoints. (string # value) -#os_region_name= +os_region_name=regionOne # Type of endpoint in Identity service catalog to use for # communication with OpenStack services. (string value) -#os_endpoint_type=publicURL +os_endpoint_type=internalURL # Disables X.509 certificate validation when an SSL connection # to Identity Service is established. (boolean value) diff --git a/openstack/usr/share/openstack/cinder/cinder.conf b/openstack/usr/share/openstack/cinder/cinder.conf index 1ca21082..a58004b5 100644 --- a/openstack/usr/share/openstack/cinder/cinder.conf +++ b/openstack/usr/share/openstack/cinder/cinder.conf @@ -162,7 +162,7 @@ rabbit_password={{ RABBITMQ_PASSWORD }} # Driver or drivers to handle sending notifications. (multi # valued) -#notification_driver= +notification_driver=messagingv2 # AMQP topic used for OpenStack notifications. (list value) # Deprecated group/name - [rpc_notifier2]/topics @@ -183,7 +183,7 @@ rpc_backend=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 +control_exchange=cinder # diff --git a/openstack/usr/share/openstack/glance/glance-api.conf b/openstack/usr/share/openstack/glance/glance-api.conf index 675062a6..39257a6d 100644 --- a/openstack/usr/share/openstack/glance/glance-api.conf +++ b/openstack/usr/share/openstack/glance/glance-api.conf @@ -207,7 +207,7 @@ registry_client_protocol = http # Driver or drivers to handle sending notifications. Set to # 'messaging' to send notifications to a message queue. -# notification_driver = noop +notification_driver = messagingv2 # Default publisher_id for outgoing notifications. # default_publisher_id = image.localhost diff --git a/openstack/usr/share/openstack/glance/glance-registry.conf b/openstack/usr/share/openstack/glance/glance-registry.conf index e663148d..302f4138 100644 --- a/openstack/usr/share/openstack/glance/glance-registry.conf +++ b/openstack/usr/share/openstack/glance/glance-registry.conf @@ -82,21 +82,20 @@ use_syslog = True # Driver or drivers to handle sending notifications. Set to # 'messaging' to send notifications to a message queue. -# notification_driver = noop +notification_driver = messagingv2 # Default publisher_id for outgoing notifications. # default_publisher_id = image.localhost # Messaging driver used for 'messaging' notifications driver -# rpc_backend = 'rabbit' +rpc_backend=rabbit -# Configuration options if sending notifications via rabbitmq (these are -# the defaults) -rabbit_host = localhost -rabbit_port = 5672 +# Configuration options if sending notifications via rabbitmq +rabbit_host = {{ RABBITMQ_HOST }} +rabbit_port = {{ RABBITMQ_PORT }} rabbit_use_ssl = false -rabbit_userid = guest -rabbit_password = guest +rabbit_userid = {{ RABBITMQ_USER }} +rabbit_password = {{ RABBITMQ_PASSWORD }} rabbit_virtual_host = / rabbit_notification_exchange = glance rabbit_notification_topic = notifications diff --git a/openstack/usr/share/openstack/nova/nova.conf b/openstack/usr/share/openstack/nova/nova.conf index 6e49b4cc..43343cdd 100644 --- a/openstack/usr/share/openstack/nova/nova.conf +++ b/openstack/usr/share/openstack/nova/nova.conf @@ -161,7 +161,7 @@ rabbit_password={{ RABBITMQ_PASSWORD }} # Driver or drivers to handle sending notifications. (multi # valued) -#notification_driver= +notification_driver=messagingv2 # AMQP topic used for OpenStack notifications. (list value) # Deprecated group/name - [rpc_notifier2]/topics @@ -262,7 +262,7 @@ my_ip={{ MANAGEMENT_INTERFACE_IP_ADDRESS }} # notifications, "vm_state" for notifications on VM state # changes, or "vm_and_task_state" for notifications on VM and # task state changes. (string value) -#notify_on_state_change= +notify_on_state_change=vm_and_task_state # If set, send api.fault notifications on caught exceptions in # the API service. (boolean value) @@ -466,7 +466,7 @@ compute_manager={{ COMPUTE_MANAGER }} # Time period to generate instance usages for. Time period # must be hour, day, month or year (string value) -#instance_usage_audit_period=month +instance_usage_audit_period=hour # Path to the rootwrap configuration file to use for running # commands as root (string value) @@ -847,7 +847,7 @@ osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions # Generate periodic compute.instance.exists notifications # (boolean value) -#instance_usage_audit=false +instance_usage_audit=True # Number of 1 second retries needed in live_migration (integer # value) -- cgit v1.2.1