status

in hbase-shell/src/main/ruby/hbase/admin.rb [941:1074]


    def status(format, type)
      cluster_metrics = @admin.getClusterMetrics
      if format == 'detailed'
        puts(format('version %s', cluster_metrics.getHBaseVersion))
        
        puts(format('%d regionsInTransition', cluster_metrics.getRegionStatesInTransition.size))
        for v in cluster_metrics.getRegionStatesInTransition
          puts(format('    %s', v))
        end
        master = cluster_metrics.getMasterName
        unless master.nil?
          puts(format('active master:  %s:%d %d', master.getHostname, master.getPort, master.getStartcode))
          for task in cluster_metrics.getMasterTasks
            puts(format('    %s', task.toString))
          end
        end
        puts(format('%d backup masters', cluster_metrics.getBackupMasterNames.size))
        for server in cluster_metrics.getBackupMasterNames
          puts(format('    %s:%d %d', server.getHostname, server.getPort, server.getStartcode))
        end
        master_coprocs = @admin.getMasterCoprocessorNames.toString
        unless master_coprocs.nil?
          puts(format('master coprocessors: %s', master_coprocs))
        end
        puts(format('%d live servers', cluster_metrics.getLiveServerMetrics.size))
        for server in cluster_metrics.getLiveServerMetrics.keySet
          puts(format('    %s:%d %d', server.getHostname, server.getPort, server.getStartcode))
          puts(format('        %s', cluster_metrics.getLiveServerMetrics.get(server).toString))
          for name, region in cluster_metrics.getLiveServerMetrics.get(server).getRegionMetrics
            puts(format('        %s', region.getNameAsString.dump))
            puts(format('            %s', region.toString))
          end
          for task in cluster_metrics.getLiveServerMetrics.get(server).getTasks
            puts(format('        %s', task.toString))
          end
        end
        puts(format('%d dead servers', cluster_metrics.getDeadServerNames.size))
        for server in cluster_metrics.getDeadServerNames
          puts(format('    %s', server))
        end
      elsif format == 'replication'
        puts(format('version %<version>s', version: cluster_metrics.getHBaseVersion))
        puts(format('%<servers>d live servers',
                    servers: cluster_metrics.getLiveServerMetrics.size))
        cluster_metrics.getLiveServerMetrics.keySet.each do |server_name|
          sl = cluster_metrics.getLiveServerMetrics.get(server_name)
          r_sink_string   = '        SINK:'
          r_source_string = '        SOURCE:'
          r_load_sink = sl.getReplicationLoadSink
          next if r_load_sink.nil?

          if r_load_sink.getTimestampsOfLastAppliedOp() == r_load_sink.getTimestampStarted()
          
          
            r_sink_string << "\n            TimeStampStarted=" + r_load_sink.getTimestampStarted().to_s
            r_sink_string << ",\n            Waiting for OPs... "
          else
            r_sink_string << "\n            TimeStampStarted=" + r_load_sink.getTimestampStarted().to_s
            r_sink_string << ",\n            AgeOfLastAppliedOp=" + r_load_sink.getAgeOfLastAppliedOp().to_s
            r_sink_string << ",\n            TimeStampsOfLastAppliedOp=" +
               r_load_sink.getTimestampsOfLastAppliedOp().to_s
          end

          r_load_source_map = sl.getReplicationLoadSourceMap
          build_source_string(r_load_source_map, r_source_string)

          puts(format('    %<host>s:', host: server_name.getHostname))
          if type.casecmp('SOURCE').zero?
            puts(format('%<source>s', source: r_source_string))
          elsif type.casecmp('SINK').zero?
            puts(format('%<sink>s', sink: r_sink_string))
          else
            puts(format('%<source>s', source: r_source_string))
            puts(format('%<sink>s', sink: r_sink_string))
          end
        end
      elsif format == 'tasks'
        master = cluster_metrics.getMasterName
        unless master.nil?
          puts(format('active master:  %s:%d %d', master.getHostname, master.getPort, master.getStartcode))
          printed = false
          for task in cluster_metrics.getMasterTasks
            next unless task.getState.name == 'RUNNING'
            puts(format('    %s', task.toString))
            printed = true
          end
          if !printed
            puts('    no active tasks')
          end
        end
        puts(format('%d live servers', cluster_metrics.getServersSize))
        for server in cluster_metrics.getServers
          puts(format('    %s:%d %d', server.getHostname, server.getPort, server.getStartcode))
          printed = false
          for task in cluster_metrics.getLiveServerMetrics.get(server).getTasks
            next unless task.getState.name == 'RUNNING'
            puts(format('        %s', task.toString))
            printed = true
          end
          if !printed
            puts('        no active tasks')
          end
        end
      elsif format == 'simple'
        load = 0
        regions = 0
        master = cluster_metrics.getMasterName
        puts(format('active master:  %s:%d %d', master.getHostname, master.getPort,
                    master.getStartcode))
        puts(format('%d backup masters', cluster_metrics.getBackupMasterNames.size))
        for server in cluster_metrics.getBackupMasterNames
          puts(format('    %s:%d %d', server.getHostname, server.getPort, server.getStartcode))
        end
        puts(format('%d live servers', cluster_metrics.getLiveServerMetrics.size))
        for server in cluster_metrics.getLiveServerMetrics.keySet
          puts(format('    %s:%d %d', server.getHostname, server.getPort, server.getStartcode))
          puts(format('        %s', cluster_metrics.getLiveServerMetrics.get(server).toString))
          load += cluster_metrics.getLiveServerMetrics.get(server).getRequestCountPerSecond
          regions += cluster_metrics.getLiveServerMetrics.get(server).getRegionMetrics.size
        end
        puts(format('%d dead servers', cluster_metrics.getDeadServerNames.size))
        for server in cluster_metrics.getDeadServerNames
          puts(format('    %s', server))
        end
        puts(format('Aggregate load: %d, regions: %d', load, regions))
      else
        puts "1 active master, #{cluster_metrics.getBackupMasterNames.size} backup masters,
              #{cluster_metrics.getLiveServerMetrics.size} servers,
              #{cluster_metrics.getDecommissionedServerNames.size} decommissioned,
              #{cluster_metrics.getDeadServerNames.size} dead,
              #{format('%.4f', cluster_metrics.getAverageLoad)} average load"
      end
    end