def __init__(self, stub_factory, options):
    """Constructor.

    Args:
      stub_factory: [callable that creates stub for stackdriver]
          This is passed as a callable to defer initialization because
          we create the handlers before we process commandline args.
    """
    super(StackdriverMetricsService, self).__init__(
        stub_factory, options)

    # The janitor prepares metric descriptors before first write.
    self.__janitor_func = lambda: self.__auto_audit_metric_descriptors()
    self.__next_janitor_time = time.time()
    self.__good_janitor_count = 0

    self.__distributions_also_have_count = self.service_options.get(
        'distributions_also_have_count')
    self.__fix_custom_metrics_unsafe = self.service_options.get(
        'fix_custom_metrics_unsafe', False)
    self.__log_400_data = self.service_options.get('log_400_data', False)

    manager_options = dict(options)
    manager_options['spectator'] = self.spectator_helper.options
    manager = stackdriver_descriptors.MetricDescriptorManager(
        self, spectator_client.ResponseProcessor(manager_options))
    self.__descriptor_manager = manager
Пример #2
0
    def __init__(self, stub_factory, options):
        """Constructor.

    Args:
      stub_factory: [callable that creates stub for stackdriver]
          This is passed as a callable to defer initialization because
          we create the handlers before we process commandline args.
    """
        self.logger = logging.getLogger(__name__)

        options_copy = normalize_options(options)
        self.__stackdriver_options = options_copy['stackdriver']

        self.__stub_factory = stub_factory
        self.__stub = None
        self.__project = self.__stackdriver_options.get('project')
        logging.info('Using stackdriver project %r', self.__project)

        spectator_options = options_copy.get('spectator', {})
        stackdriver_overrides = self.__stackdriver_options.get('spectator', {})
        spectator_options.update(stackdriver_overrides)
        if self.__stackdriver_options.get('generic_task_resources'):
            spectator_options['inject_service_tag'] = False
            spectator_options['decorate_service_name'] = False
        options_copy['spectator'] = spectator_options
        self.__spectator_helper = spectator_client.SpectatorClientHelper(
            options_copy)

        if not self.__project:
            # Set default to our instance if we are on GCE.
            # Otherwise ignore since we might not actually need the project.
            try:
                self.__project = get_google_metadata('project/project-id')
            except IOError:
                pass

        manager = stackdriver_descriptors.MetricDescriptorManager(
            self, spectator_client.ResponseProcessor(options_copy))
        self.__descriptor_manager = manager
        # The janitor prepares metric descriptors before first write.
        self.__janitor_func = lambda: self.__auto_audit_metric_descriptors(
            options_copy)
        self.__next_janitor_time = time.time()
        self.__good_janitor_count = 0

        self.__fix_stackdriver_labels_unsafe = self.__stackdriver_options.get(
            'fix_labels_unsafe', False)
        self.__monitored_resource = {}
        self.__add_source_tag = False
    def process_commandline_request(self, options):
        """Implements CommandHandler."""
        options = google_service.normalize_options(options)
        if not options.get('manage_stackdriver_descriptors'):
            options['manage_stackdriver_descriptors'] = 'create'
        stackdriver = stackdriver_service.make_service(options)
        manager = stackdriver_descriptors.MetricDescriptorManager(
            stackdriver, ResponseProcessor(options))
        audit_results = manager.audit_descriptors(
            options, service_list=self.SERVICE_LIST)

        message = audit_results_to_output(
            audit_results, 'Metric_filters are not configured, or are empty.')
        self.output(options, message)

        if audit_results.errors:
            raise ValueError('Encountered %d errors' % audit_results.errors)