Back to Cmak

TopicViewContent.Scala

app/views/topic/topicViewContent.scala.html

3.0.0.65.7 KB
Original Source

@* * Copyright 2015 Yahoo Inc. Licensed under the Apache License, Version 2.0 * See accompanying LICENSE file. *@ @import kafka.manager.model.ActorModel.ConsumerType @import models.form.ReassignPartitionOperation @import models.form.ReassignPartitionOperation.ForceRunAssignment @import kafka.manager.utils.LongFormatted @(cluster:String , topic: String , topicIdentity: kafka.manager.model.ActorModel.TopicIdentity , consumerList: Iterable[(String, ConsumerType)] , reassignPartitionOperation: ReassignPartitionOperation )(implicit af: features.ApplicationFeatures, messages: play.api.i18n.Messages, request:RequestHeader) @getUnderReplicatedLevel(percentage: Int) = { @percentage match { case i if i > 50 => {table-danger} case i if i > 0 => {table-warning} case i => {} } } @getPreferredReplicasLevel(percentage: Int) = { @percentage match { case i if i > 50 && i<=75 => {table-warning} case i if i <= 50 => {table-danger} case i => {} } } @getBrokersSkewedLevel(percentage: Int) = { @percentage match { case i if i > 0 && i <= 33 => {table-warning} case i if i >= 34 => {table-danger} case i => {} } } @getBrokersLeaderSkewedLevel(percentage: Int) = { @percentage match { case i if i > 0 && i <= 33 => {table-warning} case i if i >= 34 => {table-danger} case i => {} } } @getBrokersSpreadLevel(percentage: Int) = { @percentage match { case i if i > 50 && i<=75 => {table-warning} case i if i <= 50 => {table-danger} case i => {} } } @getPartitionLeaderLevel(leader: Int) = { @leader match { case i if i < 0 => {table-danger} case i => {} } } @getIsUnderReplicatedLevel(underReplicated: Boolean) = { @underReplicated match { case true => {table-warning} case false => {} } } @getIsPreferredLeaderLevel(preferredReplica: Boolean) = { @preferredReplica match { case false => {table-warning} case true => {} } } @getBrokerIsSkewedLevel(isSkewed: Boolean) = { @isSkewed match { case true => {table-warning} case false => {} } } @renderTopicMetrics = { @if(topicIdentity.clusterContext.clusterFeatures.features(kafka.manager.features.KMJMXMetricsFeature)) { @views.html.common.brokerMetrics(topicIdentity.metrics) } else {

Please enable JMX polling here. } } @renderConsumerList = { @if(topicIdentity.clusterContext.config.pollConsumers){

@for((c:String, ct: ConsumerType) <- consumerList) { | @c | @ct.toString | } } else { Please enable consumer polling here. } }

Topic Summary

| Replication | @topicIdentity.replicationFactor | | Number of Partitions | @topicIdentity.partitions | | Sum of partition offsets | @topicIdentity.summedTopicOffsets.formattedAsDecimal | | Total number of Brokers | @topicIdentity.numBrokers | | Number of Brokers for Topic | @topicIdentity.topicBrokers | | Preferred Replicas % | @topicIdentity.preferredReplicasPercentage | | Brokers Skewed % | @topicIdentity.brokersSkewPercentage | | Brokers Leader Skewed % | @topicIdentity.brokersLeaderSkewPercentage | | Brokers Spread % | @topicIdentity.brokersSpreadPercentage | | Under-replicated % | @topicIdentity.underReplicatedPercentage | @if(topicIdentity.clusterContext.config.jmxEnabled && topicIdentity.clusterContext.config.displaySizeEnabled){ | Leader Size | @topicIdentity.size | } @if(!topicIdentity.config.isEmpty) {

Config | Value | @for( (k,v) <- topicIdentity.config) { | @k | @v | } }

Metrics

@renderTopicMetrics

@features.app(features.KMTopicManagerFeature) {

Operations

| @if(topicIdentity.clusterContext.clusterFeatures.features(kafka.manager.features.KMDeleteTopicFeature)) { Delete Topic | } @features.app(features.KMReassignPartitionsFeature) { @b4.vertical.form(routes.ReassignPartitions.handleOperation(cluster,topic)) { implicit fc => @reassignPartitionOperation match { case ForceRunAssignment => { @b4.submit('class -> "btn btn-primary btn-block"){ Force Reassign Partitions } } case _ => { @b4.submit('class -> "btn btn-primary btn-block"){ Reassign Partitions } } } } | Generate Partition Assignments | } | Add Partitions | Update Config | @features.app(features.KMReassignPartitionsFeature) { Manual Partition Assignments | }

}

Partitions by Broker

Broker# of Partitions# as LeaderPartitionsSkewed?Leader Skewed?
@for(btp <- topicIdentity.partitionsByBroker) {@btp.id@btp.partitions.size@btp.leaders.size@btp.partitions.mkString("(",",",")")@btp.isSkewed
}

Consumers consuming from this topic

@renderConsumerList

Partition Information

| Partition | Latest Offset | Leader | Replicas | In Sync Replicas | Preferred Leader? | Under Replicated? | @if(topicIdentity.clusterContext.config.jmxEnabled && topicIdentity.clusterContext.config.displaySizeEnabled){ Leader Size | } | --- | --- | --- | --- | --- | --- | --- | --- | @for((_,tpi) <- topicIdentity.partitionsIdentity.toIndexedSeq.sortBy(_._2.partNum)) { | @tpi.partNum | @tpi.latestOffset.map(_.formattedAsDecimal).getOrElse(" ") | @tpi.leader | @tpi.replicas.mkString("(", ",", ")") | @tpi.isr.mkString("(", ",", ")") | @tpi.isPreferredLeader | @tpi.isUnderReplicated | @if(topicIdentity.clusterContext.config.jmxEnabled && topicIdentity.clusterContext.config.displaySizeEnabled){ @tpi.size | } }