def property(request, property_name): property = get_object_or_404(Property, name=property_name) ts = get_timestamp() namespaces = Namespace.objects.filter( property=property, timestamp=ts, deleted=False, ).annotate( numTopics=Count('topic'), numProducers=Sum('topic__producerCount'), numSubscriptions=Sum('topic__subscriptionCount'), numConsumers=Sum('topic__consumerCount'), backlog=Sum('topic__backlog'), storage=Sum('topic__storageSize'), rateIn=Sum('topic__msgRateIn'), rateOut=Sum('topic__msgRateOut'), throughputIn=Sum('topic__msgThroughputIn'), throughputOut=Sum('topic__msgThroughputOut'), ) namespaces = Table(request, namespaces, default_sort='name') return render(request, 'stats/property.html', { 'property': property, 'namespaces': namespaces, 'title': property.name, })
def clusters(request): ts = get_timestamp() clusters = Cluster.objects.filter(topic__timestamp=ts) clusters = clusters.annotate( numTopics=Count('topic'), localBacklog=Sum('topic__backlog'), replicationBacklog=Sum('topic__replicationBacklog'), storage=Sum('topic__storageSize'), localRateIn=Sum('topic__localRateIn'), localRateOut=Sum('topic__localRateOut'), replicationRateIn=Sum('topic__replicationRateIn'), replicationRateOut=Sum('topic__replicationRateOut'), ) clusters = Table(request, clusters, default_sort='name') for cluster in clusters.results: # Fetch per-remote peer stats peers = Replication.objects.filter( timestamp=ts, local_cluster=cluster, ).values('remote_cluster__name') peers = peers.annotate(Sum('msgRateIn'), Sum('msgThroughputIn'), Sum('msgRateOut'), Sum('msgThroughputOut'), Sum('replicationBacklog')) cluster.peers = peers return render(request, 'stats/clusters.html', { 'clusters': clusters, })
def home(request): ts = get_timestamp() properties = Property.objects.filter().annotate( numNamespaces=Subquery(Namespace.objects.filter( deleted=False, timestamp=ts, property=OuterRef('pk')).values('property').annotate( cnt=Count('pk')).values('cnt'), output_field=IntegerField()), numTopics=Count('namespace__topic__name', distinct=True), numProducers=Sum('namespace__topic__producerCount'), numSubscriptions=Sum('namespace__topic__subscriptionCount'), numConsumers=Sum('namespace__topic__consumerCount'), backlog=Sum('namespace__topic__backlog'), storage=Sum('namespace__topic__storageSize'), rateIn=Sum('namespace__topic__msgRateIn'), rateOut=Sum('namespace__topic__msgRateOut'), throughputIn=Sum('namespace__topic__msgThroughputIn'), throughputOut=Sum('namespace__topic__msgThroughputOut'), ) logger.info(properties.query) properties = Table(request, properties, default_sort='name') return render(request, 'stats/home.html', { 'properties': properties, 'title': 'Tenants', })
def namespace(request, namespace_name): selectedClusterName = request.GET.get('cluster') namespace = get_object_or_404(Namespace, name=namespace_name, timestamp=get_timestamp(), deleted=False) topics = Topic.objects.select_related('broker', 'namespace', 'cluster') if selectedClusterName: topics = topics.filter(namespace=namespace, timestamp=get_timestamp(), cluster__name=selectedClusterName, deleted=False) else: topics = topics.filter(namespace=namespace, timestamp=get_timestamp(), deleted=False) topics = Table(request, topics, default_sort='name') return render( request, 'stats/namespace.html', { 'namespace': namespace, 'topics': topics, 'title': namespace.name, 'selectedCluster': selectedClusterName, })
def home(request): ts = get_timestamp() properties = Property.objects.filter( namespace__topic__timestamp=ts, ).annotate( numNamespaces=Count('namespace__name', distinct=True), numTopics=Count('namespace__topic__name', distinct=True), numProducers=Sum('namespace__topic__producerCount'), numSubscriptions=Sum('namespace__topic__subscriptionCount'), numConsumers=Sum('namespace__topic__consumerCount'), backlog=Sum('namespace__topic__backlog'), storage=Sum('namespace__topic__storageSize'), rateIn=Sum('namespace__topic__msgRateIn'), rateOut=Sum('namespace__topic__msgRateOut'), throughputIn=Sum('namespace__topic__msgThroughputIn'), throughputOut=Sum('namespace__topic__msgThroughputOut'), ) print properties.query properties = Table(request, properties, default_sort='name') return render(request, 'stats/home.html', { 'properties': properties, 'title': 'Properties', })
def broker(request, broker_url): broker = Broker.objects.get(url=broker_url) topics = Topic.objects.filter(timestamp=get_timestamp(), broker__url=broker_url) topics = Table(request, topics, default_sort='namespace__name') return render( request, 'stats/broker.html', { 'topics': topics, 'title': 'Broker - %s - %s' % (broker.cluster, broker_url), 'broker_url': broker_url })
def topics(request): selectedClusterName = request.GET.get('cluster') topics = Topic.objects.select_related('broker', 'namespace', 'cluster') if selectedClusterName: topics = topics.filter(timestamp=get_timestamp(), cluster__name=selectedClusterName) else: topics = topics.filter(timestamp=get_timestamp()) topics = Table(request, topics, default_sort='cluster__name') return render( request, 'stats/topics.html', { 'clusters': Cluster.objects.all(), 'topics': topics, 'title': 'Topics', 'selectedCluster': selectedClusterName, })
def brokers_cluster(request, cluster_name): ts = get_timestamp() brokers = Broker.objects if cluster_name: brokers = brokers.filter( Q(topic__timestamp=ts) | Q(topic__timestamp__isnull=True), activebroker__timestamp = ts, cluster__name = cluster_name, ) else: brokers = brokers.filter( Q(topic__timestamp=ts) | Q(topic__timestamp__isnull=True), activebroker__timestamp = ts ) brokers = brokers.annotate( numBundles = Count('topic__bundle', True), numTopics = Count('topic'), numProducers = Sum('topic__producerCount'), numSubscriptions = Sum('topic__subscriptionCount'), numConsumers = Sum('topic__consumerCount'), backlog = Sum('topic__backlog'), storage = Sum('topic__storageSize'), rateIn = Sum('topic__msgRateIn'), rateOut = Sum('topic__msgRateOut'), throughputIn = Sum('topic__msgThroughputIn'), throughputOut = Sum('topic__msgThroughputOut'), ) brokers = Table(request, brokers, default_sort='url') return render(request, 'stats/brokers.html', { 'clusters' : Cluster.objects.all(), 'brokers' : brokers, 'selectedCluster' : cluster_name, })