
Support Cassandra db installation and Cassandra related configurations for Monasca api and persister services in devstack. Add Monasca rest API Cassandra plugin for retrieving metric, dimension, measurement, statistics and alarms. Change-Id: Ie60d668692e1f25f555dda2355f4e513d582736c story: 2001231 task: 5759
253 lines
10 KiB
Bash
253 lines
10 KiB
Bash
#!/bin/bash
|
|
|
|
# Copyright 2017 FUJITSU LIMITED
|
|
# (C) Copyright 2017 SUSE LLC
|
|
|
|
# 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 reqmonasca_PERSISTERred 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.
|
|
|
|
_XTRACE_MON_PERSISTER=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
|
|
MONASCA_PERSISTER_IMPLEMENTATION_LANG=${MONASCA_PERSISTER_IMPLEMENTATION_LANG:-python}
|
|
|
|
MONASCA_PERSISTER_CONF_DIR=${MONASCA_PERSISTER_CONF_DIR:-/etc/monasca}
|
|
MONASCA_PERSISTER_LOG_DIR=${MONASCA_PERSISTER_LOG_DIR:-/var/log/monasca/persister}
|
|
MONASCA_PERSISTER_GATE_CONFIG=/etc/monasca-persister
|
|
|
|
if [ "$MONASCA_PERSISTER_IMPLEMENTATION_LANG" == "python" ]; then
|
|
if [[ ${USE_VENV} = True ]]; then
|
|
PROJECT_VENV["monasca-persister"]=${MONASCA_PERSISTER_DIR}.venv
|
|
MONASCA_PERSISTER_BIN_DIR=${PROJECT_VENV["monasca-persister"]}/bin
|
|
else
|
|
MONASCA_PERSISTER_BIN_DIR=$(get_python_exec_prefix)
|
|
fi
|
|
MONASCA_PERSISTER_CONF=${MONASCA_PERSISTER_CONF:-$MONASCA_PERSISTER_CONF_DIR/persister.conf}
|
|
MONASCA_PERSISTER_LOGGING_CONF=${MONASCA_PERSISTER_LOGGING_CONF:-$MONASCA_PERSISTER_CONF_DIR/persister-logging.conf}
|
|
|
|
M_REPO_DRIVER_BASE=monasca_persister.repositories.${MONASCA_METRICS_DB}.metrics_repository
|
|
M_REPO_DRIVER_INFLUX=$M_REPO_DRIVER_BASE:MetricInfluxdbRepository
|
|
M_REPO_DRIVER_CASSANDRA=$M_REPO_DRIVER_BASE:MetricCassandraRepository
|
|
|
|
AH_REPO_DRIVER_BASE=monasca_persister.repositories.${MONASCA_METRICS_DB}.alarm_state_history_repository
|
|
AH_REPO_DRIVER_INFLUX=$AH_REPO_DRIVER_BASE:AlarmStateHistInfluxdbRepository
|
|
AH_REPO_DRIVER_CASSANDRA=$AH_REPO_DRIVER_BASE:AlarmStateHistCassandraRepository
|
|
|
|
MONASCA_PERSISTER_CMD="$MONASCA_PERSISTER_BIN_DIR/monasca-persister --config-file=$MONASCA_PERSISTER_CONF"
|
|
else
|
|
MONASCA_PERSISTER_APP_PORT=${MONASCA_PERSISTER_APP_PORT:-8090}
|
|
MONASCA_PERSISTER_ADMIN_PORT=${MONASCA_PERSISTER_ADMIN_PORT:-8091}
|
|
MONASCA_PERSISTER_BIND_HOST=${MONASCA_PERSISTER_BIND_HOST:-$SERVICE_HOST}
|
|
|
|
MONASCA_PERSISTER_CONF=${MONASCA_PERSISTER_CONF:-$MONASCA_PERSISTER_CONF_DIR/persister.yml}
|
|
MONASCA_PERSISTER_JAVA_OPTS="-Dfile.encoding=UTF-8 -Xmx128m"
|
|
MONASCA_PERSISTER_JAR="/opt/monasca/monasca-persister.jar"
|
|
MONASCA_PERSISTER_CMD="/usr/bin/java ${MONASCA_PERSISTER_JAVA_OPTS} -cp ${MONASCA_PERSISTER_JAR} monasca.persister.PersisterApplication server ${MONASCA_PERSISTER_CONF}"
|
|
fi
|
|
|
|
if [[ "${MONASCA_METRICS_DB,,}" == 'cassandra' ]]; then
|
|
MONASCA_PERSISTER_BATCH_SIZE=100
|
|
MONASCA_PERSISTER_MAX_BATCH_TIME=10
|
|
MONASCA_PERSISTER_METRIC_THREADS=2
|
|
MONASCA_PERSISTER_COMMIT_BATCH_TIME=10000
|
|
else
|
|
MONASCA_PERSISTER_BATCH_SIZE=100
|
|
MONASCA_PERSISTER_MAX_BATCH_TIME=15
|
|
MONASCA_PERSISTER_METRIC_THREADS=10
|
|
MONASCA_PERSISTER_COMMIT_BATCH_TIME=0
|
|
fi
|
|
|
|
is_monasca_persister_enabled() {
|
|
is_service_enabled monasca-persister && return 0
|
|
return 1
|
|
}
|
|
|
|
# common
|
|
pre_monasca-persister() {
|
|
if ! is_monasca_persister_enabled; then
|
|
return
|
|
fi
|
|
sudo install -d -o ${STACK_USER} ${MONASCA_PERSISTER_GATE_CONFIG}
|
|
}
|
|
|
|
install_monasca-persister() {
|
|
echo_summary "Installing monasca-persister"
|
|
|
|
git_clone ${MONASCA_PERSISTER_REPO} ${MONASCA_PERSISTER_DIR} \
|
|
${MONASCA_PERSISTER_BRANCH}
|
|
|
|
install_monasca_persister_$MONASCA_PERSISTER_IMPLEMENTATION_LANG
|
|
}
|
|
configure_monasca-persister() {
|
|
if ! is_monasca_persister_enabled; then
|
|
return
|
|
fi
|
|
|
|
echo_summary "Configuring monasca-persister"
|
|
|
|
sudo install -d -o $STACK_USER ${MONASCA_PERSISTER_CONF_DIR}
|
|
sudo install -d -o $STACK_USER ${MONASCA_PERSISTER_LOG_DIR}
|
|
|
|
configure_monasca_persister_$MONASCA_PERSISTER_IMPLEMENTATION_LANG
|
|
}
|
|
start_monasca-persister() {
|
|
if ! is_monasca_persister_enabled; then
|
|
return
|
|
fi
|
|
echo_summary "Starting monasca-persister"
|
|
run_process "monasca-persister" "${MONASCA_PERSISTER_CMD}"
|
|
}
|
|
stop_monasca-persister() {
|
|
if ! is_monasca_persister_enabled; then
|
|
return
|
|
fi
|
|
echo_summary "Stopping monasca-persister"
|
|
stop_process "monasca-persister"
|
|
}
|
|
clean_monasca-persister() {
|
|
if ! is_monasca_persister_enabled; then
|
|
return
|
|
fi
|
|
echo_summary "Cleaning monasca-persister"
|
|
clean_monasca_persister_$MONASCA_PERSISTER_IMPLEMENTATION_LANG
|
|
rm -rf ${MONASCA_PERSISTER_GATE_CONFIG}
|
|
}
|
|
# common
|
|
|
|
# python
|
|
install_monasca_persister_python() {
|
|
setup_develop ${MONASCA_PERSISTER_DIR}
|
|
|
|
install_monasca_common
|
|
if [[ "${MONASCA_METRICS_DB,,}" == 'influxdb' ]]; then
|
|
pip_install_gr influxdb
|
|
elif [[ "${MONASCA_METRICS_DB,,}" == 'cassandra' ]]; then
|
|
pip_install_gr cassandra-driver
|
|
fi
|
|
}
|
|
|
|
configure_monasca_persister_python() {
|
|
# ensure fresh installation of configuration files
|
|
rm -rf ${MONASCA_PERSISTER_CONF} ${MONASCA_PERSISTER_LOGGING_CONF}
|
|
|
|
$MONASCA_PERSISTER_BIN_DIR/oslo-config-generator \
|
|
--config-file $MONASCA_PERSISTER_DIR/config-generator/persister.conf \
|
|
--output-file /tmp/persister.conf
|
|
|
|
install -m 600 ${MONASCA_PERSISTER_DIR}/etc/monasca/persister-logging.conf ${MONASCA_PERSISTER_LOGGING_CONF}
|
|
|
|
install -m 600 /tmp/persister.conf ${MONASCA_PERSISTER_CONF} && rm -rf /tmp/persister.conf
|
|
|
|
iniset "$MONASCA_PERSISTER_CONF" DEFAULT log_config_append ${MONASCA_PERSISTER_LOGGING_CONF}
|
|
|
|
iniset "$MONASCA_PERSISTER_CONF" kafka num_processors 1
|
|
|
|
iniset "$MONASCA_PERSISTER_CONF" kafka_metrics uri $SERVICE_HOST:9092
|
|
iniset "$MONASCA_PERSISTER_CONF" kafka_metrics group_id 1_metrics
|
|
iniset "$MONASCA_PERSISTER_CONF" kafka_metrics topic metrics
|
|
iniset "$MONASCA_PERSISTER_CONF" kafka_metrics batch_size 30
|
|
|
|
iniset "$MONASCA_PERSISTER_CONF" kafka_alarm_history uri $SERVICE_HOST:9092
|
|
iniset "$MONASCA_PERSISTER_CONF" kafka_alarm_history group_id 1_alarm-state-transitions
|
|
iniset "$MONASCA_PERSISTER_CONF" kafka_alarm_history topic alarm-state-transitions
|
|
iniset "$MONASCA_PERSISTER_CONF" kafka_alarm_history batch_size 1
|
|
|
|
iniset "$MONASCA_PERSISTER_CONF" zookeeper uri $SERVICE_HOST:2181
|
|
|
|
if [[ "${MONASCA_METRICS_DB,,}" == 'influxdb' ]]; then
|
|
iniset "$MONASCA_PERSISTER_CONF" influxdb database_name mon
|
|
iniset "$MONASCA_PERSISTER_CONF" influxdb ip_address ${SERVICE_HOST}
|
|
iniset "$MONASCA_PERSISTER_CONF" influxdb port 8086
|
|
iniset "$MONASCA_PERSISTER_CONF" influxdb password password
|
|
iniset "$MONASCA_PERSISTER_CONF" repositories metrics_driver ${M_REPO_DRIVER_INFLUX}
|
|
iniset "$MONASCA_PERSISTER_CONF" repositories alarm_state_history_driver ${AH_REPO_DRIVER_INFLUX}
|
|
elif [[ "${MONASCA_METRICS_DB,,}" == 'cassandra' ]]; then
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra contact_points ${SERVICE_HOST}
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra port 9042
|
|
# iniset "$MONASCA_PERSISTER_CONF" cassandra user monasca
|
|
# iniset "$MONASCA_PERSISTER_CONF" cassandra password password
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra keyspace monasca
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra local_data_center datacenter1
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra connection_timeout 5
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra read_timeout 60
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra max_write_retries 5
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra max_batches 250
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra max_definition_cache_size 1000000
|
|
# consistency level names:
|
|
# ANY(0),
|
|
# ONE(1),
|
|
# TWO(2),
|
|
# THREE(3),
|
|
# QUORUM(4),
|
|
# ALL(5),
|
|
# LOCAL_QUORUM(6),
|
|
# EACH_QUORUM(7),
|
|
# SERIAL(8),
|
|
# LOCAL_SERIAL(9),
|
|
# LOCAL_ONE(10);
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra consistency_level ONE
|
|
iniset "$MONASCA_PERSISTER_CONF" cassandra retention_policy 45
|
|
iniset "$MONASCA_PERSISTER_CONF" repositories metrics_driver ${M_REPO_DRIVER_CASSANDRA}
|
|
iniset "$MONASCA_PERSISTER_CONF" repositories alarm_state_history_driver ${AH_REPO_DRIVER_CASSANDRA}
|
|
fi
|
|
|
|
ln -sf ${MONASCA_PERSISTER_CONF} ${MONASCA_PERSISTER_GATE_CONFIG}
|
|
ln -sf ${MONASCA_PERSISTER_LOGGING_CONF} ${MONASCA_PERSISTER_GATE_CONFIG}
|
|
}
|
|
|
|
clean_monasca_persister_python() {
|
|
rm -rf ${MONASCA_PERSISTER_CONF} ${MONASCA_PERSISTER_LOGGING_CONF}
|
|
}
|
|
# python
|
|
|
|
# java
|
|
install_monasca_persister_java() {
|
|
(cd "${MONASCA_PERSISTER_DIR}"/java ; sudo mvn clean package -DskipTests)
|
|
|
|
local version=""
|
|
version="$(get_version_from_pom "${MONASCA_PERSISTER_DIR}"/java)"
|
|
sudo cp -f "${MONASCA_PERSISTER_DIR}"/java/target/monasca-persister-${version}-shaded.jar \
|
|
${MONASCA_PERSISTER_JAR}
|
|
}
|
|
|
|
configure_monasca_persister_java() {
|
|
# ensure fresh installation of configuration file
|
|
rm -rf $MONASCA_PERSISTER_CONF
|
|
|
|
install -m 600 "${MONASCA_API_DIR}"/devstack/files/monasca-persister/persister.yml ${MONASCA_PERSISTER_CONF}
|
|
sudo sed -e "
|
|
s|%ZOOKEEPER_HOST%|${SERVICE_HOST}|g;
|
|
s|%VERTICA_HOST%|${SERVICE_HOST}|g;
|
|
s|%INFLUXDB_HOST%|${SERVICE_HOST}|g;
|
|
s|%CASSANDRADB_HOST%|${SERVICE_HOST}|g;
|
|
s|%MONASCA_PERSISTER_DB_TYPE%|${MONASCA_METRICS_DB}|g;
|
|
s|%MONASCA_PERSISTER_BIND_HOST%|${MONASCA_PERSISTER_BIND_HOST}|g;
|
|
s|%MONASCA_PERSISTER_APP_PORT%|${MONASCA_PERSISTER_APP_PORT}|g;
|
|
s|%MONASCA_PERSISTER_ADMIN_PORT%|${MONASCA_PERSISTER_ADMIN_PORT}|g;
|
|
s|%MONASCA_PERSISTER_LOG_DIR%|${MONASCA_PERSISTER_LOG_DIR}|g;
|
|
s|%MONASCA_PERSISTER_BATCH_SIZE%|${MONASCA_PERSISTER_BATCH_SIZE}|g;
|
|
s|%MONASCA_PERSISTER_MAX_BATCH_TIME%|${MONASCA_PERSISTER_MAX_BATCH_TIME}|g;
|
|
s|%MONASCA_PERSISTER_COMMIT_BATCH_TIME%|${MONASCA_PERSISTER_COMMIT_BATCH_TIME}|g;
|
|
s|%MONASCA_PERSISTER_METRIC_THREADS%|${MONASCA_PERSISTER_METRIC_THREADS}|g;
|
|
" -i ${MONASCA_PERSISTER_CONF}
|
|
|
|
ln -sf ${MONASCA_PERSISTER_CONF} ${MONASCA_PERSISTER_GATE_CONFIG}
|
|
}
|
|
|
|
clean_monasca_persister_java() {
|
|
rm -rf ${MONASCA_PERSISTER_CONF} ${MONASCA_PERSISTER_LOGGING_CONF} \
|
|
${MONASCA_PERSISTER_JAR}
|
|
}
|
|
# java
|
|
|
|
${_XTRACE_MON_PERSISTER}
|