diff --git a/devstack/README.md b/devstack/README.md new file mode 100644 index 000000000..e5093b33c --- /dev/null +++ b/devstack/README.md @@ -0,0 +1,110 @@ +# Monasca DevStack Plugin + +The Monasca DevStack plugin currently only works on Ubuntu 14.04 (Trusty). +More Linux Distributions will be supported in the future. + +Running the Monasca DevStack plugin requires a machine with 10GB of RAM. + +Directions for installing and running Devstack can be found here: + + http://docs.openstack.org/developer/devstack/ + +To run Monasca in DevStack, do the following three steps. + +1. Clone the DevStack repo. + + git clone https://git.openstack.org/openstack-dev/devstack + +2. Add the following to the DevStack local.conf file in the root of the devstack directory. You may + need to create the local.conf if it does not already exist. + + \# BEGIN DEVSTACK LOCAL.CONF CONTENTS + + [[local|localrc]] + MYSQL_PASSWORD=secretmysql + DATABASE_PASSWORD=secretdatabase + RABBIT_PASSWORD=secretrabbit + ADMIN_PASSWORD=secretadmin + SERVICE_PASSWORD=secretservice + SERVICE_TOKEN=111222333444 + + LOGFILE=$DEST/logs/stack.sh.log + LOGDIR=$DEST/logs + LOG_COLOR=False + + \# The following two variables allow switching between Java and Python for the implementations + \# of the Monasca API and the Monasca Persister. If these variables are not set, then the + \# default is to install the Python implementations of both the Monasca API and the Monasca Persister. + + \# Uncomment one of the following two lines to choose Java or Python for the Monasca API. + MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-java} + \# MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-python} + + \# Uncomment of the following two lines to choose Java or Python for the Monasca Pesister. + MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-java} + \# MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-python} + + \# Uncomment one of the following two lines to choose either InfluxDB or Vertica. + MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-influxdb} + \# MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica} + + \# This line will enable all of Monasca. + enable_plugin monasca-api git://git.openstack.org/openstack/monasca-api + + \# END DEVSTACK LOCAL.CONF CONTENTS + +3. Run './stack.sh' from the root of the devstack directory. + +If you want to run Monasca with the bare mininum of OpenStack components +you can add the following two lines to the local.conf file. + + disable_all_services + enable_service rabbit mysql key + +If you also want the Tempest tests to be installed then add `tempest` + + enable_service rabbit mysql key tempest + +To enable Horizon and the Monasca UI add `horizon` + + enable_service rabbit mysql key horizon tempest + +# Using Vagrant + +Vagrant can be used to deploy a VM with Devstack and Monasca running in it using the Vagrantfile. After installing Vagrant, just run the command `vagrant up` as usual in the `../monasca-api/devstack` directory. + +## Enable Vertica as the Metrics DB using Vagrant + +Monasca supports using both InfluxDB and Vertica for storing metrics and alarm state history. +InfluxDB is enabled by default in the DevStack environment. + +Vertica is a commercial database from Hewlett Packard Enterprise. +A free Community Edition (CE) installer is available for download. + +To enable Vertica, do the following: + +1. Register and download the Vertica Debian installer from `https://my.vertica.com/download/vertica/community-edition/` and put it in your home directory. +Unfortunately, there isn't a URL that the DevStack installer can automatically use, so it must be downloaded seperately, and put in a location where the installer can find it when it runs. +The installer assumes this location is your home directory. +When using Vagrant, your home directory will normally be mounted inside the VM as "/vagrant_home". + +2. Modify the environment variable `MONASCA_METRICS_DB` in the `local.conf`, `settings` or `Vagrantfile` file from influxdb to vertica as follows: + + MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica} + +``` +# (C) Copyright 2015-2016 Hewlett Packard Enterprise Development Company LP +# +# 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. +``` diff --git a/devstack/README.txt b/devstack/README.txt deleted file mode 100644 index 5970771a8..000000000 --- a/devstack/README.txt +++ /dev/null @@ -1,86 +0,0 @@ -# -# (C) Copyright 2015 Hewlett Packard Enterprise Development Company LP -# -# 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. -# - -The Monasca DevStack plugin currently only works on Ubuntu 14.04 (Trusty). -More Linux Distributions will be supported as soon as is possible. - -Running the Monasca DevStack plugin requires a machine with 10GB of RAM. - -Directions for installing an running Devstack can be found here: - - http://docs.openstack.org/developer/devstack/ - -To run Monasca in DevStack, do the following three steps. - -1. Clone the DevStack repo. - - git clone https://git.openstack.org/openstack-dev/devstack - -2. Add the following to the DevStack local.conf file in the root of the devstack directory. You may - need to create the local.conf if it does not already exist. - - # BEGIN DEVSTACK LOCAL.CONF CONTENTS - - [[local|localrc]] - MYSQL_PASSWORD=secretmysql - DATABASE_PASSWORD=secretdatabase - RABBIT_PASSWORD=secretrabbit - ADMIN_PASSWORD=secretadmin - SERVICE_PASSWORD=secretservice - SERVICE_TOKEN=111222333444 - - LOGFILE=$DEST/logs/stack.sh.log - LOGDIR=$DEST/logs - LOG_COLOR=False - - # The following two variables allow switching between Java and Python for the implementations - # of the Monasca API and the Monasca Persister. If these variables are not set, then the - # default is to install the Python implementations of both the Monasca API and the Monasca Persister. - - # Uncomment one of the following two lines to choose Java or Python for the Monasca API. - MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-java} - #MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-python} - - # Uncomment of the following two lines to choose Java or Python for the Monasca Pesister. - MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-java} - #MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-python} - - # This line will enable all of Monasca. - enable_plugin monasca-api git://git.openstack.org/openstack/monasca-api - - # END DEVSTACK LOCAL.CONF CONTENTS - -3. Run './stack.sh' from the root of the devstack directory. - - -If you want to run Monasca with the bare mininum of OpenStack components -you can add the following two lines to the local.conf file. - - disable_all_services - enable_service rabbit mysql key tempest - - -Using Vagrant: - -Vagrant can be used to deploy a VM with Devstack and Monasca running in it -using the Vagrantfile. After installing Vagrant, just "vagrant up". - - -Known Issues: - -1. The Python Monasca API has various bugs. -2. The RabbitMQ Check Plugin is not configured correctly. diff --git a/devstack/Vagrantfile b/devstack/Vagrantfile index b9bc12c86..145bcda9b 100644 --- a/devstack/Vagrantfile +++ b/devstack/Vagrantfile @@ -91,22 +91,28 @@ LOGDIR=$DEST/logs LOG_COLOR=False disable_all_services -enable_service rabbit mysql key tempest +enable_service rabbit mysql key tempest horizon # The following two variables allow switching between Java and Python for the implementations # of the Monasca API and the Monasca Persister. If these variables are not set, then the # default is to install the Python implementations of both the Monasca API and the Monasca Persister. # Uncomment one of the following two lines to choose Java or Python for the Monasca API. -#MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-java} +# MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-java} MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-python} # Uncomment one of the following two lines to choose Java or Python for the Monasca Pesister. -#MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-java} +# MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-java} MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-python} -# This line will enable all of Monasca. +# Uncomment one of the following two lines to choose either InfluxDB or Vertica. +# MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica} +MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-influxdb} + +# Uncomment one of the following lines and modify accordingly to enable the Monasca DevStack Plugin enable_plugin monasca-api https://git.openstack.org/openstack/monasca-api +# enable_plugin monasca-api file:///vagrant_home/Documents/repos/openstack/monasca-api.vertica + ' > local.conf ./stack.sh SHELL diff --git a/devstack/files/vertica/mon_alarms.sql b/devstack/files/vertica/mon_alarms.sql new file mode 100644 index 000000000..518d7af13 --- /dev/null +++ b/devstack/files/vertica/mon_alarms.sql @@ -0,0 +1,14 @@ +CREATE SCHEMA MonAlarms; + +CREATE TABLE MonAlarms.StateHistory( + id AUTO_INCREMENT, + tenant_id VARCHAR, + alarm_id VARCHAR, + metrics VARCHAR (65000), + old_state VARCHAR, + new_state VARCHAR, + sub_alarms VARCHAR (65000), + reason VARCHAR(65000), + reason_data VARCHAR(65000), + time_stamp TIMESTAMP NOT NULL +) PARTITION BY EXTRACT('year' FROM time_stamp)*10000 + EXTRACT('month' FROM time_stamp)*100 + EXTRACT('day' FROM time_stamp); diff --git a/devstack/files/vertica/mon_metrics.sql b/devstack/files/vertica/mon_metrics.sql new file mode 100644 index 000000000..c8b5a4ae5 --- /dev/null +++ b/devstack/files/vertica/mon_metrics.sql @@ -0,0 +1,105 @@ +DROP SCHEMA MonMetrics CASCADE; + +CREATE SCHEMA MonMetrics; + +CREATE TABLE MonMetrics.Measurements ( + definition_dimensions_id BINARY(20) NOT NULL, + time_stamp TIMESTAMP NOT NULL, + value FLOAT NOT NULL, + value_meta VARCHAR(2048) +) PARTITION BY EXTRACT('year' FROM time_stamp)*10000 + EXTRACT('month' FROM time_stamp)*100 + EXTRACT('day' FROM time_stamp); + +CREATE TABLE MonMetrics.Definitions( + id BINARY(20) NOT NULL, + name VARCHAR(255) NOT NULL, + tenant_id VARCHAR(255) NOT NULL, + region VARCHAR(255) NOT NULL, + PRIMARY KEY(id), + CONSTRAINT MetricsDefinitionsConstraint UNIQUE(name, tenant_id, region) +); + +CREATE TABLE MonMetrics.Dimensions ( + dimension_set_id BINARY(20) NOT NULL, + name VARCHAR(255) NOT NULL, + value VARCHAR(255) NOT NULL, + CONSTRAINT MetricsDimensionsConstraint UNIQUE(dimension_set_id, name, value) +); + +CREATE TABLE MonMetrics.DefinitionDimensions ( + id BINARY(20) NOT NULL, + definition_id BINARY(20) NOT NULL, + dimension_set_id BINARY(20) NOT NULL, + CONSTRAINT MetricsDefinitionDimensionsConstraint UNIQUE(definition_id, dimension_set_id) + ); + +-- Projections +-- ** These are for a single node system with no k safety + +CREATE PROJECTION Measurements_DBD_1_rep_MonMetrics /*+createtype(D)*/ +( + definition_dimensions_id ENCODING RLE, + time_stamp ENCODING DELTAVAL, + value ENCODING AUTO, + value_meta ENCODING RLE +) +AS + SELECT definition_dimensions_id, + time_stamp, + value, + value_meta + FROM MonMetrics.Measurements + ORDER BY definition_dimensions_id, + time_stamp, + value_meta +UNSEGMENTED ALL NODES; + +CREATE PROJECTION Definitions_DBD_2_rep_MonMetrics /*+createtype(D)*/ +( + id ENCODING AUTO, + name ENCODING AUTO, + tenant_id ENCODING RLE, + region ENCODING RLE +) +AS + SELECT id, + name, + tenant_id, + region + FROM MonMetrics.Definitions + ORDER BY region, + tenant_id, + name +UNSEGMENTED ALL NODES; + +CREATE PROJECTION Dimensions_DBD_3_rep_MonMetrics /*+createtype(D)*/ +( + dimension_set_id ENCODING AUTO, + name ENCODING RLE, + value ENCODING AUTO +) +AS + SELECT dimension_set_id, + name, + value + FROM MonMetrics.Dimensions + ORDER BY name, + value, + dimension_set_id +UNSEGMENTED ALL NODES; + +CREATE PROJECTION DefinitionDimensions_DBD_4_rep_MonMetrics /*+createtype(D)*/ +( + id ENCODING AUTO, + definition_id ENCODING RLE, + dimension_set_id ENCODING AUTO +) +AS + SELECT id, + definition_id, + dimension_set_id + FROM MonMetrics.DefinitionDimensions + ORDER BY definition_id, + dimension_set_id +UNSEGMENTED ALL NODES; + +select refresh('MonMetrics.Measurements, MonMetrics.Definitions, MonMetrics.Dimensions, MonMetrics.DefinitionDimensions'); diff --git a/devstack/files/vertica/roles.sql b/devstack/files/vertica/roles.sql new file mode 100644 index 000000000..bc9e30321 --- /dev/null +++ b/devstack/files/vertica/roles.sql @@ -0,0 +1,18 @@ +CREATE ROLE monasca_persister; +CREATE ROLE monasca_api; + +GRANT USAGE ON SCHEMA MonMetrics TO monasca_persister; +GRANT USAGE ON SCHEMA MonAlarms TO monasca_persister; +GRANT ALL ON TABLE MonMetrics.Measurements TO monasca_persister; +GRANT ALL ON TABLE MonMetrics.Definitions TO monasca_persister; +GRANT ALL ON TABLE MonMetrics.Dimensions TO monasca_persister; +GRANT ALL ON TABLE MonMetrics.DefinitionDimensions TO monasca_persister; +GRANT ALL ON TABLE MonAlarms.StateHistory TO monasca_persister; + +GRANT USAGE ON SCHEMA MonMetrics TO monasca_api; +GRANT USAGE ON SCHEMA MonAlarms TO monasca_api; +GRANT SELECT ON TABLE MonMetrics.Measurements TO monasca_api; +GRANT SELECT ON TABLE MonMetrics.Definitions TO monasca_api; +GRANT SELECT ON TABLE MonMetrics.Dimensions TO monasca_api; +GRANT SELECT ON TABLE MonMetrics.DefinitionDimensions TO monasca_api; +GRANT ALL ON TABLE MonAlarms.StateHistory TO monasca_api; diff --git a/devstack/files/vertica/users.sql b/devstack/files/vertica/users.sql new file mode 100644 index 000000000..f19413548 --- /dev/null +++ b/devstack/files/vertica/users.sql @@ -0,0 +1,7 @@ +CREATE USER mon_api IDENTIFIED BY 'password'; +GRANT monasca_api TO mon_api; +ALTER USER mon_api DEFAULT ROLE monasca_api; + +CREATE USER mon_persister IDENTIFIED BY 'password'; +GRANT monasca_persister TO mon_persister; +ALTER USER mon_persister DEFAULT ROLE monasca_persister; diff --git a/devstack/plugin.sh b/devstack/plugin.sh index 083e5377f..89397c598 100755 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -48,6 +48,9 @@ set -o errexit export MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-python} export MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-python} +# Set default metrics DB to InfluxDB +export MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-influxdb} + # Determine if we are running in devstack-gate or devstack. if [[ $DEST ]]; then @@ -67,6 +70,8 @@ function pre_install_monasca { function install_monasca { + install_git + update_maven install_monasca_virtual_env @@ -77,7 +82,21 @@ function install_monasca { install_kafka - install_influxdb + if [[ "${MONASCA_METRICS_DB,,}" == 'influxdb' ]]; then + + install_monasca_influxdb + + elif [[ "${MONASCA_METRICS_DB,,}" == 'vertica' ]]; then + + install_monasca_vertica + + else + + echo "Found invalid value for variable MONASCA_METRICS_DB: $MONASCA_METRICS_DB" + echo "Valid values for MONASCA_METRICS_DB are \"influxdb\" and \"vertica\"" + die "Please set MONASCA_METRICS_DB to either \"influxdb'' or \"vertica\"" + + fi install_cli_creds @@ -85,8 +104,6 @@ function install_monasca { install_maven - install_git - install_monasca_common if [[ "${MONASCA_API_IMPLEMENTATION_LANG,,}" == 'java' ]]; then @@ -261,7 +278,21 @@ function clean_monasca { clean_cli_creds - clean_influxdb + if [[ "${MONASCA_METRICS_DB,,}" == 'influxdb' ]]; then + + clean_monasca_influxdb + + elif [[ "${MONASCA_METRICS_DB,,}" == 'vertica' ]]; then + + clean_monasca_vertica + + else + + echo "Found invalid value for variable MONASCA_METRICS_DB: $MONASCA_METRICS_DB" + echo "Valid values for MONASCA_METRICS_DB are \"influxdb\" and \"vertica\"" + die "Please set MONASCA_METRICS_DB to either \"influxdb'' or \"vertica\"" + + fi clean_kafka @@ -435,7 +466,7 @@ function clean_kafka { } -function install_influxdb { +function install_monasca_influxdb { echo_summary "Install Monasca Influxdb" @@ -464,7 +495,38 @@ function install_influxdb { } -function clean_influxdb { +function install_monasca_vertica { + + echo_summary "Install Monasca Vertica" + + sudo mkdir -p /opt/monasca_download_dir || true + + sudo apt-get -y install dialog + + sudo dpkg --skip-same-version -i /vagrant_home/vertica_${VERTICA_VERSION}_amd64.deb + + # Download Vertica JDBC driver + # sudo curl https://my.vertica.com/client_drivers/7.2.x/${VERTICA_VERSION}/vertica-jdbc-{VERTICA_VERSION}.jar -o /opt/monasca_download_dir/vertica-jdbc-${VERTICA_VERSION}.jar + + sudo /opt/vertica/sbin/install_vertica --hosts "127.0.0.1" --deb /vagrant_home/vertica_${VERTICA_VERSION}_amd64.deb --dba-user-password password --license CE --accept-eula --failure-threshold NONE + + sudo su dbadmin -c '/opt/vertica/bin/admintools -t create_db -s "127.0.0.1" -d mon -p password' + + /opt/vertica/bin/vsql -U dbadmin -w password < "${MONASCA_BASE}"/monasca-api/devstack/files/vertica/mon_metrics.sql + + /opt/vertica/bin/vsql -U dbadmin -w password < "${MONASCA_BASE}"/monasca-api/devstack/files/vertica/mon_alarms.sql + + /opt/vertica/bin/vsql -U dbadmin -w password < "${MONASCA_BASE}"/monasca-api/devstack/files/vertica/roles.sql + + /opt/vertica/bin/vsql -U dbadmin -w password < "${MONASCA_BASE}"/monasca-api/devstack/files/vertica/users.sql + + # Copy Vertica JDBC driver to /opt/monasca + # sudo cp /opt/monasca_download_dir/vertica-jdbc-${VERTICA_VERSION}.jar /opt/monasca/vertica-jdbc-${VERTICA_VERSION}.jar + sudo cp /vagrant_home/vertica-jdbc-${VERTICA_VERSION}.jar /opt/monasca/vertica-jdbc-${VERTICA_VERSION}.jar + +} + +function clean_monasca_influxdb { echo_summary "Clean Monasca Influxdb" @@ -497,6 +559,12 @@ function clean_influxdb { sudo rm -f /etc/init.d/influxdb } +function clean_monasca_vertica { + + echo_summary "Clean Monasca Vertica" + +} + function install_cli_creds { echo_summary "Install Monasca CLI Creds" @@ -525,13 +593,17 @@ function install_schema { sudo chmod 0755 /opt/monasca/sqls - sudo cp -f "${MONASCA_BASE}"/monasca-api/devstack/files/schema/influxdb_setup.py /opt/monasca/influxdb_setup.py + if [[ "${MONASCA_METRICS_DB,,}" == 'influxdb' ]]; then - sudo chmod 0750 /opt/monasca/influxdb_setup.py + sudo cp -f "${MONASCA_BASE}"/monasca-api/devstack/files/schema/influxdb_setup.py /opt/monasca/influxdb_setup.py - sudo chown root:root /opt/monasca/influxdb_setup.py + sudo chmod 0750 /opt/monasca/influxdb_setup.py - sudo /opt/monasca/influxdb_setup.py + sudo chown root:root /opt/monasca/influxdb_setup.py + + sudo /opt/monasca/influxdb_setup.py + + fi sudo cp -f "${MONASCA_BASE}"/monasca-api/devstack/files/schema/mon_mysql.sql /opt/monasca/sqls/mon.sql @@ -663,6 +735,13 @@ function install_monasca_api_java { sudo cp -f "${MONASCA_BASE}"/monasca-api/devstack/files/monasca-api/monasca-api.conf /etc/init/monasca-api.conf + if [[ "${MONASCA_METRICS_DB,,}" == 'vertica' ]]; then + + # Add the Vertica JDBC to the class path. + sudo sed -i "s/-cp \/opt\/monasca\/monasca-api.jar/-cp \/opt\/monasca\/monasca-api.jar:\/opt\/monasca\/vertica-jdbc-${VERTICA_VERSION}.jar/g" /etc/init/monasca-api.conf + + fi + sudo chown root:root /etc/init/monasca-api.conf sudo chmod 0744 /etc/init/monasca-api.conf @@ -687,14 +766,26 @@ function install_monasca_api_java { sudo cp -f "${MONASCA_BASE}"/monasca-api/devstack/files/monasca-api/api-config.yml /etc/monasca/api-config.yml + if [[ "${MONASCA_METRICS_DB,,}" == 'vertica' ]]; then + + # Switch databaseType from influxdb to vertica + sudo sed -i "s/databaseType: \"influxdb\"/databaseType: \"vertica\"/g" /etc/monasca/api-config.yml + + fi + sudo chown mon-api:root /etc/monasca/api-config.yml sudo chmod 0640 /etc/monasca/api-config.yml if [[ ${SERVICE_HOST} ]]; then - # set influxdb ip address - sudo sed -i "s/url: \"http:\/\/127\.0\.0\.1:8086\"/url: \"http:\/\/${SERVICE_HOST}:8086\"/g" /etc/monasca/api-config.yml + if [[ "${MONASCA_METRICS_DB,,}" == 'influxdb' ]]; then + + # set influxdb ip address + sudo sed -i "s/url: \"http:\/\/127\.0\.0\.1:8086\"/url: \"http:\/\/${SERVICE_HOST}:8086\"/g" /etc/monasca/api-config.yml + + fi + # set kafka ip address sudo sed -i "s/127\.0\.0\.1:9092/${SERVICE_HOST}:9092/g" /etc/monasca/api-config.yml # set zookeeper ip address @@ -882,6 +973,13 @@ function install_monasca_persister_java { sudo chmod 0640 /etc/monasca/persister-config.yml + if [[ "${MONASCA_METRICS_DB,,}" == 'vertica' ]]; then + + # Switch databaseType from influxdb to vertica + sudo sed -i "s/databaseType: influxdb/databaseType: vertica/g" /etc/monasca/persister-config.yml + + fi + if [[ ${SERVICE_HOST} ]]; then # set zookeeper ip address @@ -895,6 +993,13 @@ function install_monasca_persister_java { sudo cp -f "${MONASCA_BASE}"/monasca-api/devstack/files/monasca-persister/monasca-persister.conf /etc/init/monasca-persister.conf + if [[ "${MONASCA_METRICS_DB,,}" == 'vertica' ]]; then + + # Add the Vertica JDBC to the class path. + sudo sed -i "s/-cp \/opt\/monasca\/monasca-persister.jar/-cp \/opt\/monasca\/monasca-persister.jar:\/opt\/monasca\/vertica-jdbc-${VERTICA_VERSION}.jar/g" /etc/init/monasca-persister.conf + + fi + sudo chown root:root /etc/init/monasca-persister.conf sudo chmod 0744 /etc/init/monasca-persister.conf diff --git a/devstack/settings b/devstack/settings index 2bc95deca..ca5d0f880 100644 --- a/devstack/settings +++ b/devstack/settings @@ -19,12 +19,15 @@ # of the Monasca API and the Monasca Persister. These variables can be set here # or in the DevStack local.conf file. -#MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-java} +# MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-java} MONASCA_API_IMPLEMENTATION_LANG=${MONASCA_API_IMPLEMENTATION_LANG:-python} -#MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-java} +# MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-java} MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-python} +# MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-vertica} +MONASCA_METRICS_DB=${MONASCA_METRICS_DB:-influxdb} + # Turn on all the Monasca services by default. Currently enabling specific services # has no effect. All services are enabled by default. There is currently no mechanism # implemented to turn off specific Monasca services. @@ -78,6 +81,7 @@ enable_service monasca-cli # INFLUXDB_VERSION=${INFLUXDB_VERSION:-0.9.5} +VERTICA_VERSION=${VERTICA_VERSION:-7.2.1-0} # Kafka deb consists of the version of scala plus the version of kafka BASE_KAFKA_VERSION=${BASE_KAFKA_VERSION:-0.8.1.1} SCALA_VERSION=${SCALA_VERSION:-2.9.2}