Ejemplo n.º 1
0
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,
    })
Ejemplo n.º 2
0
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,
    })
Ejemplo n.º 3
0
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',
    })
Ejemplo n.º 4
0
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,
        })
Ejemplo n.º 5
0
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',
    })
Ejemplo n.º 6
0
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
        })
Ejemplo n.º 7
0
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,
        })
Ejemplo n.º 8
0
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,
    })