
Currently, devstack only support mongodb as ceilometer storage backend, this patch is to add mysql storage support for ceilometer. If you want to use mysql as backend during developing, you can specify CEILOMETER_BACKEND=mysql in localrc file. If you use mongodb, just ignore the parameter. Change-Id: Ic2f475a9baa6d71a43cd29a6ca777ac972e47b0a Implements: blueprint ceilometer-mysql-support
156 lines
5.2 KiB
Plaintext
156 lines
5.2 KiB
Plaintext
# lib/ceilometer
|
|
# Install and start **Ceilometer** service
|
|
|
|
# To enable Ceilometer services, add the following to localrc
|
|
# enable_service ceilometer-acompute ceilometer-acentral ceilometer-collector ceilometer-api
|
|
|
|
# Dependencies:
|
|
# - functions
|
|
# - OS_AUTH_URL for auth in api
|
|
# - DEST set to the destination directory
|
|
# - SERVICE_PASSWORD, SERVICE_TENANT_NAME for auth in api
|
|
# - STACK_USER service user
|
|
|
|
# stack.sh
|
|
# ---------
|
|
# install_ceilometer
|
|
# configure_ceilometer
|
|
# init_ceilometer
|
|
# start_ceilometer
|
|
# stop_ceilometer
|
|
# cleanup_ceilometer
|
|
|
|
# Save trace setting
|
|
XTRACE=$(set +o | grep xtrace)
|
|
set +o xtrace
|
|
|
|
|
|
# Defaults
|
|
# --------
|
|
|
|
# Set up default directories
|
|
CEILOMETER_DIR=$DEST/ceilometer
|
|
CEILOMETERCLIENT_DIR=$DEST/python-ceilometerclient
|
|
CEILOMETER_CONF_DIR=/etc/ceilometer
|
|
CEILOMETER_CONF=$CEILOMETER_CONF_DIR/ceilometer.conf
|
|
CEILOMETER_API_LOG_DIR=/var/log/ceilometer-api
|
|
CEILOMETER_AUTH_CACHE_DIR=${CEILOMETER_AUTH_CACHE_DIR:-/var/cache/ceilometer}
|
|
|
|
# Support potential entry-points console scripts
|
|
CEILOMETER_BIN_DIR=$(get_python_exec_prefix)
|
|
|
|
# Set up database backend
|
|
CEILOMETER_BACKEND=${CEILOMETER_BACKEND:-mongodb}
|
|
|
|
# Functions
|
|
# ---------
|
|
|
|
# cleanup_ceilometer() - Remove residual data files, anything left over from previous
|
|
# runs that a clean run would need to clean up
|
|
function cleanup_ceilometer() {
|
|
mongo ceilometer --eval "db.dropDatabase();"
|
|
}
|
|
|
|
# configure_ceilometerclient() - Set config files, create data dirs, etc
|
|
function configure_ceilometerclient() {
|
|
setup_develop $CEILOMETERCLIENT_DIR
|
|
}
|
|
|
|
# configure_ceilometer() - Set config files, create data dirs, etc
|
|
function configure_ceilometer() {
|
|
setup_develop $CEILOMETER_DIR
|
|
|
|
[ ! -d $CEILOMETER_CONF_DIR ] && sudo mkdir -m 755 -p $CEILOMETER_CONF_DIR
|
|
sudo chown $USER $CEILOMETER_CONF_DIR
|
|
|
|
[ ! -d $CEILOMETER_API_LOG_DIR ] && sudo mkdir -m 755 -p $CEILOMETER_API_LOG_DIR
|
|
sudo chown $USER $CEILOMETER_API_LOG_DIR
|
|
|
|
iniset_rpc_backend ceilometer $CEILOMETER_CONF DEFAULT
|
|
|
|
iniset $CEILOMETER_CONF DEFAULT notification_topics 'notifications'
|
|
iniset $CEILOMETER_CONF DEFAULT verbose True
|
|
|
|
# Install the policy file for the API server
|
|
cp $CEILOMETER_DIR/etc/ceilometer/policy.json $CEILOMETER_CONF_DIR
|
|
cp $CEILOMETER_DIR/etc/ceilometer/pipeline.yaml $CEILOMETER_CONF_DIR
|
|
iniset $CEILOMETER_CONF DEFAULT policy_file $CEILOMETER_CONF_DIR/policy.json
|
|
|
|
# the compute and central agents need these credentials in order to
|
|
# call out to the public nova and glance APIs
|
|
iniset $CEILOMETER_CONF DEFAULT os_username ceilometer
|
|
iniset $CEILOMETER_CONF DEFAULT os_password $SERVICE_PASSWORD
|
|
iniset $CEILOMETER_CONF DEFAULT os_tenant_name $SERVICE_TENANT_NAME
|
|
iniset $CEILOMETER_CONF DEFAULT os_auth_url $OS_AUTH_URL
|
|
|
|
iniset $CEILOMETER_CONF keystone_authtoken auth_protocol http
|
|
iniset $CEILOMETER_CONF keystone_authtoken admin_user ceilometer
|
|
iniset $CEILOMETER_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
|
|
iniset $CEILOMETER_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
|
|
iniset $CEILOMETER_CONF keystone_authtoken signing_dir $CEILOMETER_AUTH_CACHE_DIR
|
|
|
|
if [[ "$CEILOMETER_BACKEND" = 'mysql' ]]; then
|
|
iniset $CEILOMETER_CONF database connection `database_connection_url ceilometer`
|
|
else
|
|
iniset $CEILOMETER_CONF database connection mongodb://localhost:27017/ceilometer
|
|
configure_mongodb
|
|
cleanup_ceilometer
|
|
fi
|
|
}
|
|
|
|
function configure_mongodb() {
|
|
if is_fedora; then
|
|
# ensure smallfiles selected to minimize freespace requirements
|
|
sudo sed -i '/--smallfiles/!s/OPTIONS=\"/OPTIONS=\"--smallfiles /' /etc/sysconfig/mongod
|
|
|
|
restart_service mongod
|
|
fi
|
|
}
|
|
|
|
# init_ceilometer() - Initialize etc.
|
|
function init_ceilometer() {
|
|
# Create cache dir
|
|
sudo mkdir -p $CEILOMETER_AUTH_CACHE_DIR
|
|
sudo chown $STACK_USER $CEILOMETER_AUTH_CACHE_DIR
|
|
rm -f $CEILOMETER_AUTH_CACHE_DIR/*
|
|
|
|
if [[ "$CEILOMETER_BACKEND" = 'mysql' ]]; then
|
|
recreate_database ceilometer utf8
|
|
$CEILOMETER_BIN_DIR/ceilometer-dbsync
|
|
fi
|
|
}
|
|
|
|
# install_ceilometer() - Collect source and prepare
|
|
function install_ceilometer() {
|
|
git_clone $CEILOMETER_REPO $CEILOMETER_DIR $CEILOMETER_BRANCH
|
|
}
|
|
|
|
# install_ceilometerclient() - Collect source and prepare
|
|
function install_ceilometerclient() {
|
|
git_clone $CEILOMETERCLIENT_REPO $CEILOMETERCLIENT_DIR $CEILOMETERCLIENT_BRANCH
|
|
}
|
|
|
|
# start_ceilometer() - Start running processes, including screen
|
|
function start_ceilometer() {
|
|
screen_it ceilometer-acompute "sg $LIBVIRT_GROUP \"ceilometer-agent-compute --config-file $CEILOMETER_CONF\""
|
|
screen_it ceilometer-acentral "ceilometer-agent-central --config-file $CEILOMETER_CONF"
|
|
screen_it ceilometer-collector "ceilometer-collector --config-file $CEILOMETER_CONF"
|
|
screen_it ceilometer-api "ceilometer-api -d -v --log-dir=$CEILOMETER_API_LOG_DIR --config-file $CEILOMETER_CONF"
|
|
}
|
|
|
|
# stop_ceilometer() - Stop running processes
|
|
function stop_ceilometer() {
|
|
# Kill the ceilometer screen windows
|
|
for serv in ceilometer-acompute ceilometer-acentral ceilometer-collector ceilometer-api; do
|
|
screen -S $SCREEN_NAME -p $serv -X kill
|
|
done
|
|
}
|
|
|
|
|
|
# Restore xtrace
|
|
$XTRACE
|
|
|
|
# Local variables:
|
|
# mode: shell-script
|
|
# End:
|