From 722f418e15f850996b5fae5cf66dea58825e9c0a Mon Sep 17 00:00:00 2001 From: blkart Date: Tue, 15 Mar 2016 20:31:36 +0800 Subject: [PATCH] [doctor][stack] check ceph.config redmine #6354 Signed-off-by: blkart --- eayunstack_tools/doctor/config.py | 36 ++++++++++++++++- eayunstack_tools/doctor/stack.py | 39 +++++++++++++++---- eayunstack_tools/doctor/stack_func.py | 9 +++-- template/ceph_osd/ceph.conf.template | 12 ------ template/ceph_osd/ceph.conf.template.filter | 5 +++ template/controller/ceph.conf.template | 13 +++++++ template/controller/ceph.conf.template.filter | 11 ++++++ 7 files changed, 102 insertions(+), 23 deletions(-) create mode 100644 template/controller/ceph.conf.template create mode 100644 template/controller/ceph.conf.template.filter diff --git a/eayunstack_tools/doctor/config.py b/eayunstack_tools/doctor/config.py index d58b488..ea8dc8f 100644 --- a/eayunstack_tools/doctor/config.py +++ b/eayunstack_tools/doctor/config.py @@ -31,6 +31,14 @@ '/etc/mongodb.conf' ] +controller_ceph_p = [ + '/etc/ceph/ceph.conf' + ] + +ceph_osd_ceph_p = [ + '/etc/ceph/ceph.conf' + ] + # 'XXX_s' for XXX's services list keystone_s = [ @@ -77,6 +85,12 @@ 'mongod' ] +controller_ceph_s = [ + ] + +ceph_osd_ceph_s = [ + ] + # component db profile list component_db_p = { @@ -107,7 +121,8 @@ 'nova', 'neutron', 'cinder', - 'ceilometer' + 'ceilometer', + 'ceph' ] compute_c = [ @@ -118,6 +133,10 @@ 'mongo' ] +ceph_osd_c = [ + 'ceph' + ] + # return profile list def get_keystone_profiles(): @@ -141,6 +160,12 @@ def get_ceilometer_profiles(): def get_mongo_profiles(): return mongo_p +def get_controller_ceph_profiles(): + return controller_ceph_p + +def get_ceph_osd_ceph_profiles(): + return ceph_osd_ceph_p + # return services list def get_keystone_services(): @@ -167,6 +192,12 @@ def get_ceilometer_services(): def get_mongo_services(): return mongo_s +def get_controller_ceph_services(): + return controller_ceph_s + +def get_ceph_osd_ceph_services(): + return ceph_osd_ceph_s + # return db profile def get_db_profile(): @@ -183,6 +214,9 @@ def get_compute_component(): def get_mongo_component(): return mongo_c +def get_ceph_osd_component(): + return ceph_osd_c + # return a list of commands for check component availability def get_component_check_cmd(): diff --git a/eayunstack_tools/doctor/stack.py b/eayunstack_tools/doctor/stack.py index d9cce13..31035ca 100644 --- a/eayunstack_tools/doctor/stack.py +++ b/eayunstack_tools/doctor/stack.py @@ -30,7 +30,11 @@ def stack(parser): if not NODE_ROLE.is_mongo(): cmd_warn('mongo') return - if parser.CONTROLLER or parser.COMPUTE or parser.MONGO: + if parser.CEPHOSD: + if not NODE_ROLE.is_ceph_osd(): + cmd_warn('ceph-osd') + return + if parser.CONTROLLER or parser.COMPUTE or parser.MONGO or parser.CEPHOSD: if parser.PROFILE and not parser.SERVICE and not parser.CHECK_ALL: if parser.CONTROLLER: check('controller', 'profile') @@ -38,6 +42,8 @@ def stack(parser): check('compute', 'profile') if parser.MONGO: check('mongo', 'profile') + if parser.CEPHOSD: + check('ceph_osd', 'profile') if parser.SERVICE and not parser.PROFILE and not parser.CHECK_ALL: if parser.CONTROLLER: check('controller', 'service') @@ -45,6 +51,8 @@ def stack(parser): check('compute', 'service') if parser.MONGO: check('mongo', 'service') + if parser.CEPHOSD: + check('ceph_osd', 'service') if parser.SERVICE and parser.PROFILE or parser.CHECK_ALL or not parser.PROFILE and not parser.SERVICE: if parser.CONTROLLER: check('controller', 'all') @@ -52,6 +60,8 @@ def stack(parser): check('compute', 'all') if parser.MONGO: check('mongo', 'all') + if parser.CEPHOSD: + check('ceph_osd', 'all') return # check all if parser.CHECK_ALL and parser.PROFILE and parser.SERVICE: @@ -109,13 +119,20 @@ def make(parser): default=False, help='Check All Mongo Node', ) + parser.add_argument( + '--ceph-osd', + dest='CEPHOSD', + action='store_true', + default=False, + help='Check All Ceph-OSD Node', + ) common.add_common_opt(parser) parser.set_defaults(func=stack) # check all component # IMPORTANT: node include fuel -all_roles = ('controller','compute','mongo') +all_roles = ('controller','compute','mongo','ceph_osd') def check(role, obj): if NODE_ROLE.is_fuel(): @@ -146,9 +163,7 @@ def check_all_profile(): check_nodes(role, 'profile', multi_role=True) else: for node_role in node_roles: - # print node_role - if node_role != 'ceph_osd': - eval('check_%s_profile' % node_role)() + eval('check_%s_profile' % node_role)() def check_all_service(): if NODE_ROLE.is_fuel(): @@ -156,8 +171,7 @@ def check_all_service(): check_nodes(role, 'service', multi_role=True) else: for node_role in node_roles: - if node_role != 'ceph_osd': - eval('check_%s_service' % node_role)() + eval('check_%s_service' % node_role)() # check controller profile & service @userful_msg() @@ -193,5 +207,16 @@ def check_mongo_profile(): def check_mongo_service(): check_node_services('mongo') +# check ceph-osd node profile & service +@userful_msg() +@register +def check_ceph_osd_profile(): + check_node_profiles('ceph_osd') + +@userful_msg() +@register +def check_ceph_osd_service(): + check_node_services('ceph_osd') + def cmd_warn(node_role): LOG.warn('This command can only run on fuel or %s node !' % node_role) diff --git a/eayunstack_tools/doctor/stack_func.py b/eayunstack_tools/doctor/stack_func.py index d7365c3..9350c30 100644 --- a/eayunstack_tools/doctor/stack_func.py +++ b/eayunstack_tools/doctor/stack_func.py @@ -262,7 +262,10 @@ def check_node_profiles(role): component_list = eval('get_%s_component' % role)() for c in component_list: LOG.info('Checking "%s" Component' % c.capitalize()) - profile_list = eval('get_%s_profiles' % c)() + if c == 'ceph': + profile_list = eval('get_%s_%s_profiles' % (role, c))() + else: + profile_list = eval('get_%s_profiles' % c)() for p in profile_list: LOG.debug('Profile: ' + p) check_profile(p, role) @@ -273,14 +276,14 @@ def check_node_services(node): for c in component_list: LOG.info('Checking "%s" Component' % c.capitalize()) LOG.debug('-Service Status') - if c == 'nova': + if c == 'nova' or c == 'ceph': service_list = eval('get_%s_%s_services' % (node, c))() else: service_list = eval('get_%s_services' % c)() for s in service_list: # utils.check_service(s) check_service(s) - if node != 'controller': + if node != 'controller' or c == 'ceph': continue LOG.debug('-DB Connectivity') check_db_connect(c) diff --git a/template/ceph_osd/ceph.conf.template b/template/ceph_osd/ceph.conf.template index ded415e..4e6aff1 100644 --- a/template/ceph_osd/ceph.conf.template +++ b/template/ceph_osd/ceph.conf.template @@ -1,11 +1,4 @@ [global] -## filter options -fsid = -cluster_network = -mon_host = -public_network = -mon_initial_members = -## log_to_syslog_level = info log_to_syslog = False log_to_syslog_facility = LOG_LOCAL0 @@ -13,12 +6,7 @@ auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx filestore_xattr_use_omap = true -osd_pool_default_size = 2 -osd_pool_default_min_size = 1 -osd_pool_default_pg_num = 1024 -osd_journal_size = 2048 auth_supported = cephx -osd_pool_default_pgp_num = 1024 osd_mkfs_type = xfs [client] rbd_cache_writethrough_until_flush = True diff --git a/template/ceph_osd/ceph.conf.template.filter b/template/ceph_osd/ceph.conf.template.filter index fcfd60a..91ea581 100644 --- a/template/ceph_osd/ceph.conf.template.filter +++ b/template/ceph_osd/ceph.conf.template.filter @@ -7,3 +7,8 @@ cluster_network = mon_host = public_network = mon_initial_members = +osd_pool_default_pg_num = +osd_pool_default_pgp_num = +osd_journal_size = +osd_pool_default_size = +osd_pool_default_min_size = diff --git a/template/controller/ceph.conf.template b/template/controller/ceph.conf.template new file mode 100644 index 0000000..0473814 --- /dev/null +++ b/template/controller/ceph.conf.template @@ -0,0 +1,13 @@ +[global] +auth_cluster_required = cephx +auth_service_required = cephx +auth_client_required = cephx +filestore_xattr_use_omap = true +log_to_syslog_level = info +log_to_syslog = False +log_to_syslog_facility = LOG_LOCAL0 +auth_supported = cephx +osd_mkfs_type = xfs +[client] +rbd_cache_writethrough_until_flush = True +rbd_cache = True diff --git a/template/controller/ceph.conf.template.filter b/template/controller/ceph.conf.template.filter new file mode 100644 index 0000000..46b7bd8 --- /dev/null +++ b/template/controller/ceph.conf.template.filter @@ -0,0 +1,11 @@ +[global] +cluster_network = +mon_host = +public_network = +mon_initial_members = +fsid = +osd_pool_default_pg_num = +osd_pool_default_pgp_num = +osd_journal_size = +osd_pool_default_size = +osd_pool_default_min_size =