Exemple #1
0
 def test_default_utc(self, mocker):
     datetime_obj = mocker.patch('datadog_checks.base.utils.time.datetime')
     datetime_obj.now = mocker.MagicMock()
     dt = datetime(2020, 2, 2, tzinfo=UTC)
     datetime_obj.now.return_value = dt
     assert get_current_datetime() is dt
     datetime_obj.now.assert_called_once_with(UTC)
Exemple #2
0
 def test_tz(self, mocker):
     datetime_obj = mocker.patch('datadog_checks.base.utils.time.datetime')
     datetime_obj.now = mocker.MagicMock()
     nyc = tz.gettz('America/New_York')
     dt = datetime(2020, 2, 2, tzinfo=nyc)
     datetime_obj.now.return_value = dt
     assert get_current_datetime(nyc) is dt
     datetime_obj.now.assert_called_once_with(nyc)
Exemple #3
0
    def collect_events(self):
        # type: () -> None
        self.log.debug("Starting events collection (query start time: %s).",
                       self.latest_event_query)
        latest_event_time = None
        collect_start_time = get_current_datetime()
        try:
            t0 = Timer()
            new_events = self.api.get_new_events(
                start_time=self.latest_event_query)
            self.gauge(
                'datadog.vsphere.collect_events.time',
                t0.total(),
                tags=self.config.base_tags,
                raw=True,
                hostname=self._hostname,
            )
            self.log.debug("Got %s new events from the vCenter event manager",
                           len(new_events))
            event_config = {'collect_vcenter_alarms': True}
            for event in new_events:
                self.log.debug("Processing event with id:%s, type:%s: msg:%s",
                               event.key, type(event),
                               event.fullFormattedMessage)
                normalized_event = VSphereEvent(event, event_config,
                                                self.config.base_tags)
                # Can return None if the event if filtered out
                event_payload = normalized_event.get_datadog_payload()
                if event_payload is not None:
                    self.log.debug("Submit event with id:%s, type:%s: msg:%s",
                                   event.key, type(event),
                                   event.fullFormattedMessage)
                    self.event(event_payload)
                if latest_event_time is None or event.createdTime > latest_event_time:
                    latest_event_time = event.createdTime
        except Exception as e:
            # Don't get stuck on a failure to fetch an event
            # Ignore them for next pass
            self.log.warning("Unable to fetch Events %s", e)

        if latest_event_time is not None:
            self.latest_event_query = latest_event_time + dt.timedelta(
                seconds=1)
        else:
            # Let's set `self.latest_event_query` to `collect_start_time` as safeguard in case no events are reported
            # OR something bad happened (which might happen again indefinitely).
            self.latest_event_query = collect_start_time
Exemple #4
0
    def __init__(self, *args, **kwargs):
        # type: (*Any, **Any) -> None
        super(VSphereCheck, self).__init__(*args, **kwargs)
        instance = cast(InstanceConfig, self.instance)
        self._config = VSphereConfig(instance, self.init_config, self.log)

        self.latest_event_query = get_current_datetime()
        self.infrastructure_cache = InfrastructureCache(interval_sec=self._config.refresh_infrastructure_cache_interval)
        self.metrics_metadata_cache = MetricsMetadataCache(
            interval_sec=self._config.refresh_metrics_metadata_cache_interval
        )
        self.api = cast(VSphereAPI, None)
        self.api_rest = cast(VSphereRestAPI, None)
        # Do not override `AgentCheck.hostname`
        self._hostname = None
        self.thread_pool = ThreadPoolExecutor(max_workers=self._config.threads_count)
        self.check_initializations.append(self.initiate_api_connection)