Use monasca-notification.conf during devstack runs

Since [1], monasca-notification supports the standard oslo.config
based configuration style (ini file instead of yaml). The old
notification.yaml file still works but is deprecated.
So switching to use the new oslo.config based file is the way to go
forward.
Also adjust the zuul job to copy /var/log/monasca/notification and
/etc/monasca/notification.conf so debugging will be a bit easier.

[1] https://review.openstack.org/#/c/464768/

Story: 2004862
Task: 35646

Depends-On: https://review.opendev.org/668508
Depends-On: https://review.opendev.org/663960
Change-Id: I489d66d623c3e27ca28ba87ebde32264b13ac0f3
This commit is contained in:
Thomas Bechtold 2019-01-25 13:51:54 +01:00 committed by Witek Bedyk
parent a9cc4bb482
commit 2bf341c6dd
3 changed files with 23 additions and 155 deletions

View File

@ -49,9 +49,11 @@
monasca-api: https://opendev.org/openstack/monasca-api
zuul_copy_output:
/var/log/kafka: logs
/var/log/monasca/notification: logs
/etc/kafka/server.properties: logs
/etc/kafka/producer.properties: logs
/etc/kafka/consumer.properties: logs
/etc/monasca/monasca-notification.conf: logs
irrelevant-files:
- ^.*\.rst$
- ^.*\.md$

View File

@ -1,138 +0,0 @@
#
# (C) Copyright 2015,2016 Hewlett Packard Enterprise Development Company LP
# Copyright 2017 Fujitsu LIMITED
#
# 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.
#
kafka:
url: "%KAFKA_HOST%:9092"
group: "monasca-notification"
alarm_topic: "alarm-state-transitions"
notification_topic: "alarm-notifications"
notification_retry_topic: "retry-notifications"
periodic:
60: 60-seconds-notifications
max_offset_lag: 600 # In seconds, undefined for none
database:
# repo_driver: monasca_notification.common.repositories.postgres.pgsql_repo:PostgresqlRepo
# repo_driver: monasca_notification.common.repositories.orm.orm_repo:OrmRepo
# repo_driver: monasca_notification.common.repositories.mysql.mysql_repo:MysqlRepo
repo_driver: %MONASCA_NOTIFICATION_DATABASE_DRIVER%
orm:
url: %MONASCA_NOTIFICATION_DATABASE_ENGINE%://%DATABASE_USER%:%DATABASE_PASSWORD%@%DATABASE_HOST%:%DATABASE_PORT%/mon
mysql:
host: %DATABASE_HOST%
user: %DATABASE_USER%
passwd: %DATABASE_PASSWORD%
db: mon
postgresql:
host: %DATABASE_HOST%
port: %DATABASE_PORT%
user: %DATABASE_USER%
password: %DATABASE_PASSWORD%
database: mon
notification_types:
plugins:
- monasca_notification.plugins.email_notifier:EmailNotifier
- monasca_notification.plugins.webhook_notifier:WebhookNotifier
- monasca_notification.plugins.pagerduty_notifier:PagerdutyNotifier
email:
server: "localhost"
port: 25
user: ""
password: ""
timeout: 15
from_addr: "hpcs.mon@hp.com"
grafana_url: "%GRAFANA_URL%"
webhook:
timeout: 5
pagerduty:
timeout: 5
url: "https://events.pagerduty.com/generic/2010-04-15/create_event.json"
processors:
alarm:
number: 2
ttl: 14400 # In seconds, undefined for none. Alarms older than this are not processed
notification:
number: 2
retry:
interval: 30
max_attempts: 5
queues:
alarms_size: 256
finished_size: 256
notifications_size: 256
sent_notifications_size: 50 # limiting this size reduces potential # of re-sent notifications after a failure
zookeeper:
url: "127.0.0.1:2181"
notification_path: "/notification/alarms"
notification_retry_path: "/notification/retry"
periodic_path:
60: /notification/60_seconds
logging: # Used in logging.dictConfig
# This sets logging.raiseExcetpions. It is recommended to leave this set to False.
# See https://docs.python.org/2/howto/logging.html#exceptions-raised-during-logging
raise_exceptions: False
version: 1
disable_existing_loggers: False
formatters:
default:
format: "%(asctime)s %(levelname)s %(name)s %(message)s"
handlers:
console:
class: logging.StreamHandler
formatter: default
file:
class: logging.handlers.RotatingFileHandler
filename: "%MONASCA_NOTIFICATION_LOG_DIR%/notification.log"
formatter: default
maxBytes: 10485760 # Rotate at file size ~10MB
backupCount: 5 # Keep 5 older logs around
loggers:
kazoo:
level: WARN
kafka:
level: WARN
statsd:
level: WARN
root:
handlers:
- file
level: WARN
statsd:
host: 'localhost'
port: %MONASCA_STATSD_PORT%
keystone:
auth_required: False
auth_url: '%KEYSTONE_URL%'
username: 'admin'
password: 'password'
project_name: 'admin'
user_domain_name: 'default'
project_domain_name: 'default'
auth_type: 'password'

View File

@ -19,7 +19,7 @@ set +o xtrace
MONASCA_NOTIFICATION_CONF_DIR=${MONASCA_NOTIFICATION_CONF_DIR:-/etc/monasca}
MONASCA_NOTIFICATION_LOG_DIR=${MONASCA_NOTIFICATION_LOG_DIR:-/var/log/monasca/notification}
MONASCA_NOTIFICATION_CONF=${MONASCA_NOTIFICATION_CONF:-$MONASCA_NOTIFICATION_CONF_DIR/notification.yaml}
MONASCA_NOTIFICATION_CONF=${MONASCA_NOTIFICATION_CONF:-$MONASCA_NOTIFICATION_CONF_DIR/monasca-notification.conf}
MONASCA_NOTIFICATION_GATE_CFG_LINK=/etc/monasca-notification
if [[ ${USE_VENV} = True ]]; then
@ -75,8 +75,6 @@ configure_monasca-notification() {
sudo install -d -o $STACK_USER ${MONASCA_NOTIFICATION_CONF_DIR}
sudo install -d -o $STACK_USER ${MONASCA_NOTIFICATION_LOG_DIR}
install -m 600 ${MONASCA_API_DIR}/devstack/files/monasca-notification/notification.yaml ${MONASCA_NOTIFICATION_CONF}
local dbDriver
local dbEngine
local dbPort
@ -93,19 +91,25 @@ configure_monasca-notification() {
dbDriver="monasca_notification.common.repositories.orm.orm_repo:OrmRepo"
fi
sudo sed -e "
s|%DATABASE_HOST%|${DATABASE_HOST}|g;
s|%DATABASE_PORT%|$dbPort|g;
s|%DATABASE_PASSWORD%|${DATABASE_PASSWORD}|g;
s|%DATABASE_USER%|${DATABASE_USER}|g;
s|%MONASCA_NOTIFICATION_DATABASE_DRIVER%|$dbDriver|g;
s|%MONASCA_NOTIFICATION_DATABASE_ENGINE%|$dbEngine|g;
s|%KAFKA_HOST%|${SERVICE_HOST}|g;
s|%MONASCA_STATSD_PORT%|${MONASCA_STATSD_PORT}|g;
s|%MONASCA_NOTIFICATION_LOG_DIR%|${MONASCA_NOTIFICATION_LOG_DIR}|g;
s|%GRAFANA_URL%|http:\/\/${SERVICE_HOST}:3000|g;
s|%KEYSTONE_URL%|http:\/\/${SERVICE_HOST}\/identity\/v3|g;
" -i ${MONASCA_NOTIFICATION_CONF}
iniset "${MONASCA_NOTIFICATION_CONF}" kafka url ${DATABASE_HOST}:9092
iniset "${MONASCA_NOTIFICATION_CONF}" database repo_driver ${dbDriver}
iniset "${MONASCA_NOTIFICATION_CONF}" email_notifier grafana_url ${SERVICE_HOST}:3000
iniset "${MONASCA_NOTIFICATION_CONF}" keystone auth_url ${SERVICE_HOST}/identity/v3
if is_service_enabled postgresql; then
iniset "${MONASCA_NOTIFICATION_CONF}" postgresql host ${DATABASE_HOST}
iniset "${MONASCA_NOTIFICATION_CONF}" postgresql port ${dbPort}
iniset "${MONASCA_NOTIFICATION_CONF}" postgresql user ${DATABASE_USER}
iniset "${MONASCA_NOTIFICATION_CONF}" postgresql passwd ${DATABASE_PASSWORD}
iniset "${MONASCA_NOTIFICATION_CONF}" postgresql db mon
else
iniset "${MONASCA_NOTIFICATION_CONF}" mysql host ${DATABASE_HOST}
iniset "${MONASCA_NOTIFICATION_CONF}" mysql user ${DATABASE_USER}
iniset "${MONASCA_NOTIFICATION_CONF}" mysql passwd ${DATABASE_PASSWORD}
iniset "${MONASCA_NOTIFICATION_CONF}" mysql db mon
fi
if [[ ${MONASCA_DATABASE_USE_ORM} == "True" ]]; then
iniset "${MONASCA_NOTIFICATION_CONF}" orm url ${dbEngine}://${DATABASE_USER}:${DATABASE_PASSWORD}%${DATABASE_HOST}:${dbPort}/mon
fi
sudo install -d -o ${STACK_USER} ${MONASCA_NOTIFICATION_GATE_CFG_LINK}
ln -sf ${MONASCA_NOTIFICATION_CONF} ${MONASCA_NOTIFICATION_GATE_CFG_LINK}
@ -118,7 +122,7 @@ configure_monasca-notification() {
start_monasca-notification(){
if is_monasca_notification_enabled; then
echo_summary "Starting monasca-notification"
run_process "monasca-notification" "$MONASCA_NOTIFICATION_BIN_DIR/monasca-notification $MONASCA_NOTIFICATION_CONF"
run_process "monasca-notification" "$MONASCA_NOTIFICATION_BIN_DIR/monasca-notification"
fi
}