def check(self, instance):
        subscription_id, cert_file_handle, cert_file_path, namespace, tags = AzureServiceBusCheck._load_conf(instance)
        tags.append("namespace:" + namespace)
        tags.append("subscription:" + subscription_id)

        management_service = ServiceBusManagementService(subscription_id, cert_file_path)
        queues = management_service.list_queues(namespace)

        rate_base_datetime = datetime.utcnow() - timedelta(minutes=15)
        rate_datetime = rate_base_datetime \
            .replace(minute=rate_base_datetime.minute - rate_base_datetime.minute % 5,
                     second=0,
                     microsecond=0,
                     tzinfo=tzinfo(0, 'Z'))

        rate_datetime_timestamp = calendar.timegm(rate_datetime.utctimetuple())

        metric_filter = AzureServiceBusCheck.get_metric_filter(rate_datetime, timedelta(minutes=5))

        for queue in queues:  # type: QueueDescription
            queue_tags = list(tags)
            queue_tags.append("queue:" + queue.name)

            self.check_queue(queue, queue_tags)

            metrics = management_service.get_supported_metrics_queue(namespace, queue.name)  # type: MetricProperties
            for metric in metrics:
                metric_data_list = management_service.get_metrics_data_queue(
                    namespace, queue.name,
                    metric.name, 'PT5M',
                    metric_filter)

                self.check_metric(metric, metric_data_list, queue_tags, rate_datetime_timestamp)

        if cert_file_handle is not None:
            os.close(cert_file_handle)

        os.remove(cert_file_path)