elasticsearch event support in ceilometer
add support to store events in elasticsearch in ceilometer. Change-Id: I9c9801d2b83af8332df21f221c2ac8579898d56b
This commit is contained in:
parent
db56ee8ef2
commit
76e724b9f7
@ -13,21 +13,16 @@
|
|||||||
#
|
#
|
||||||
# enable_service ceilometer-alarm-notifier ceilometer-alarm-evaluator
|
# enable_service ceilometer-alarm-notifier ceilometer-alarm-evaluator
|
||||||
#
|
#
|
||||||
# To ensure events are stored, add the following section to local.conf:
|
|
||||||
#
|
|
||||||
# [[post-config|$CEILOMETER_CONF]]
|
|
||||||
# [notification]
|
|
||||||
# store_events=True
|
|
||||||
#
|
|
||||||
# Several variables set in the localrc section adjust common behaviors
|
# Several variables set in the localrc section adjust common behaviors
|
||||||
# of Ceilometer (see within for additional settings):
|
# of Ceilometer (see within for additional settings):
|
||||||
#
|
#
|
||||||
# CEILOMETER_USE_MOD_WSGI: When True, run the api under mod_wsgi.
|
# CEILOMETER_USE_MOD_WSGI: When True, run the api under mod_wsgi.
|
||||||
# CEILOMETER_PIPELINE_INTERVAL: The number of seconds between pipeline processing
|
# CEILOMETER_PIPELINE_INTERVAL: The number of seconds between pipeline processing
|
||||||
# runs. Default 600.
|
# runs. Default 600.
|
||||||
# CEILOMETER_BACKEND: The database backend (e.g. 'mysql', 'mongodb')
|
# CEILOMETER_BACKEND: The database backend (e.g. 'mysql', 'mongodb', 'es')
|
||||||
# CEILOMETER_COORDINATION_URL: The URL for a group membership service provided
|
# CEILOMETER_COORDINATION_URL: The URL for a group membership service provided
|
||||||
# by tooz.
|
# by tooz.
|
||||||
|
# CEILOMETER_EVENTS: Enable event collection
|
||||||
|
|
||||||
|
|
||||||
# Dependencies:
|
# Dependencies:
|
||||||
@ -80,6 +75,7 @@ CEILOMETER_USE_MOD_WSGI=$(trueorfalse False CEILOMETER_USE_MOD_WSGI)
|
|||||||
|
|
||||||
# To enable OSprofiler change value of this variable to "notifications,profiler"
|
# To enable OSprofiler change value of this variable to "notifications,profiler"
|
||||||
CEILOMETER_NOTIFICATION_TOPICS=${CEILOMETER_NOTIFICATION_TOPICS:-notifications}
|
CEILOMETER_NOTIFICATION_TOPICS=${CEILOMETER_NOTIFICATION_TOPICS:-notifications}
|
||||||
|
CEILOMETER_EVENTS=${CEILOMETER_EVENTS:-True}
|
||||||
|
|
||||||
CEILOMETER_COORDINATION_URL=${CEILOMETER_COORDINATION_URL:-}
|
CEILOMETER_COORDINATION_URL=${CEILOMETER_COORDINATION_URL:-}
|
||||||
CEILOMETER_PIPELINE_INTERVAL=${CEILOMETER_PIPELINE_INTERVAL:-}
|
CEILOMETER_PIPELINE_INTERVAL=${CEILOMETER_PIPELINE_INTERVAL:-}
|
||||||
@ -137,8 +133,10 @@ function _cleanup_ceilometer_apache_wsgi {
|
|||||||
# cleanup_ceilometer() - Remove residual data files, anything left over from previous
|
# cleanup_ceilometer() - Remove residual data files, anything left over from previous
|
||||||
# runs that a clean run would need to clean up
|
# runs that a clean run would need to clean up
|
||||||
function cleanup_ceilometer {
|
function cleanup_ceilometer {
|
||||||
if [ "$CEILOMETER_BACKEND" != 'mysql' ] && [ "$CEILOMETER_BACKEND" != 'postgresql' ] ; then
|
if [ "$CEILOMETER_BACKEND" = 'mongodb' ] ; then
|
||||||
mongo ceilometer --eval "db.dropDatabase();"
|
mongo ceilometer --eval "db.dropDatabase();"
|
||||||
|
elif [ "$CEILOMETER_BACKEND" = 'es' ] ; then
|
||||||
|
curl -XDELETE "localhost:9200/events_*"
|
||||||
fi
|
fi
|
||||||
if [ "$CEILOMETER_USE_MOD_WSGI" == "True" ]; then
|
if [ "$CEILOMETER_USE_MOD_WSGI" == "True" ]; then
|
||||||
_cleanup_ceilometer_apache_wsgi
|
_cleanup_ceilometer_apache_wsgi
|
||||||
@ -206,11 +204,21 @@ function configure_ceilometer {
|
|||||||
|
|
||||||
configure_auth_token_middleware $CEILOMETER_CONF ceilometer $CEILOMETER_AUTH_CACHE_DIR
|
configure_auth_token_middleware $CEILOMETER_CONF ceilometer $CEILOMETER_AUTH_CACHE_DIR
|
||||||
|
|
||||||
|
iniset $CEILOMETER_CONF notification store_events $CEILOMETER_EVENTS
|
||||||
|
|
||||||
if [ "$CEILOMETER_BACKEND" = 'mysql' ] || [ "$CEILOMETER_BACKEND" = 'postgresql' ] ; then
|
if [ "$CEILOMETER_BACKEND" = 'mysql' ] || [ "$CEILOMETER_BACKEND" = 'postgresql' ] ; then
|
||||||
iniset $CEILOMETER_CONF database alarm_connection $(database_connection_url ceilometer)
|
iniset $CEILOMETER_CONF database alarm_connection $(database_connection_url ceilometer)
|
||||||
iniset $CEILOMETER_CONF database event_connection $(database_connection_url ceilometer)
|
iniset $CEILOMETER_CONF database event_connection $(database_connection_url ceilometer)
|
||||||
iniset $CEILOMETER_CONF database metering_connection $(database_connection_url ceilometer)
|
iniset $CEILOMETER_CONF database metering_connection $(database_connection_url ceilometer)
|
||||||
iniset $CEILOMETER_CONF DEFAULT collector_workers $API_WORKERS
|
iniset $CEILOMETER_CONF DEFAULT collector_workers $API_WORKERS
|
||||||
|
elif [ "$CEILOMETER_BACKEND" = 'es' ] ; then
|
||||||
|
# es is only supported for events. we will use sql for alarming/metering.
|
||||||
|
iniset $CEILOMETER_CONF database alarm_connection $(database_connection_url ceilometer)
|
||||||
|
iniset $CEILOMETER_CONF database event_connection es://localhost:9200
|
||||||
|
iniset $CEILOMETER_CONF database metering_connection $(database_connection_url ceilometer)
|
||||||
|
iniset $CEILOMETER_CONF DEFAULT collector_workers $API_WORKERS
|
||||||
|
${TOP_DIR}/pkg/elasticsearch.sh start
|
||||||
|
cleanup_ceilometer
|
||||||
else
|
else
|
||||||
iniset $CEILOMETER_CONF database alarm_connection mongodb://localhost:27017/ceilometer
|
iniset $CEILOMETER_CONF database alarm_connection mongodb://localhost:27017/ceilometer
|
||||||
iniset $CEILOMETER_CONF database event_connection mongodb://localhost:27017/ceilometer
|
iniset $CEILOMETER_CONF database event_connection mongodb://localhost:27017/ceilometer
|
||||||
@ -264,7 +272,7 @@ function init_ceilometer {
|
|||||||
rm -f $CEILOMETER_AUTH_CACHE_DIR/*
|
rm -f $CEILOMETER_AUTH_CACHE_DIR/*
|
||||||
|
|
||||||
if is_service_enabled mysql postgresql; then
|
if is_service_enabled mysql postgresql; then
|
||||||
if [ "$CEILOMETER_BACKEND" = 'mysql' ] || [ "$CEILOMETER_BACKEND" = 'postgresql' ] ; then
|
if [ "$CEILOMETER_BACKEND" = 'mysql' ] || [ "$CEILOMETER_BACKEND" = 'postgresql' ] || [ "$CEILOMETER_BACKEND" = 'es' ] ; then
|
||||||
recreate_database ceilometer
|
recreate_database ceilometer
|
||||||
$CEILOMETER_BIN_DIR/ceilometer-dbsync
|
$CEILOMETER_BIN_DIR/ceilometer-dbsync
|
||||||
fi
|
fi
|
||||||
@ -293,6 +301,11 @@ function install_ceilometer {
|
|||||||
elif echo $CEILOMETER_COORDINATION_URL | grep -q '^redis:'; then
|
elif echo $CEILOMETER_COORDINATION_URL | grep -q '^redis:'; then
|
||||||
install_redis
|
install_redis
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$CEILOMETER_BACKEND" = 'es' ] ; then
|
||||||
|
${TOP_DIR}/pkg/elasticsearch.sh download
|
||||||
|
${TOP_DIR}/pkg/elasticsearch.sh install
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# install_ceilometerclient() - Collect source and prepare
|
# install_ceilometerclient() - Collect source and prepare
|
||||||
|
@ -47,11 +47,20 @@ function configure_elasticsearch {
|
|||||||
:
|
:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _check_elasticsearch_ready {
|
||||||
|
# poll elasticsearch to see if it's started
|
||||||
|
if ! wait_for_service 30 http://localhost:9200; then
|
||||||
|
die $LINENO "Maximum timeout reached. Could not connect to ElasticSearch"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function start_elasticsearch {
|
function start_elasticsearch {
|
||||||
if is_ubuntu; then
|
if is_ubuntu; then
|
||||||
sudo /etc/init.d/elasticsearch start
|
sudo /etc/init.d/elasticsearch start
|
||||||
|
_check_elasticsearch_ready
|
||||||
elif is_fedora; then
|
elif is_fedora; then
|
||||||
sudo /bin/systemctl start elasticsearch.service
|
sudo /bin/systemctl start elasticsearch.service
|
||||||
|
_check_elasticsearch_ready
|
||||||
else
|
else
|
||||||
echo "Unsupported architecture...can not start elasticsearch."
|
echo "Unsupported architecture...can not start elasticsearch."
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user