コード例 #1
0
    def collect_stats_and_send(self):
        """
        Collects docker metrics from docker and sends them to sender
        cpu, memory, rx_bytes ,tx_bytes, blkio metrics
        """

        if self._my_container_id is None:
            self._my_container_id = self._docker_injector.get_my_container_id()

        host_name = self._docker_wrapper.get_host_name()
        containers = self._docker_wrapper.get_containers()
        self._update_containers_state(containers=containers)
        containers_without_sdk = [v['container'] for k, v in self._containers_state.items() if
                                  k == self._my_container_id or v['ikey'] is None]

        with concurrent.futures.ThreadPoolExecutor(max_workers=max(len(containers), 30)) as executor:
            container_stats = list(
                executor.map(
                    lambda container: (container, self._docker_wrapper.get_stats(container=container,
                                                                                 stats_to_bring=self._samples_in_each_metric)),
                    containers_without_sdk))

        for container, stats in [(container, stats) for container, stats in container_stats if len(stats) > 1]:
            metrics = dockerconvertors.convert_to_metrics(stats)
            properties = dockerconvertors.get_container_properties(container, host_name)
            for metric in metrics:
                self._send_event({'metric': metric, 'properties': properties})
コード例 #2
0
 def _get_properties(self, item):
     if 'status' in item:
         inspect = self._docker_wrapper.get_inspection(item)
         return dockerconvertors.get_container_properties_from_inspect(
             inspect=inspect, host_name=self._host_name)
     return dockerconvertors.get_container_properties(
         container=item, host_name=self._host_name)
コード例 #3
0
    def collect_stats_and_send(self):
        """
        Collects docker metrics from docker and sends them to sender
        cpu, memory, rx_bytes ,tx_bytes, blkio metrics
        """

        if self._my_container_id is None:
            self._my_container_id = self._docker_injector.get_my_container_id()

        host_name = self._docker_wrapper.get_host_name()
        containers = self._docker_wrapper.get_containers()
        self._update_containers_state(containers=containers)
        containers_without_sdk = [
            v['container'] for k, v in self._containers_state.items()
            if k == self._my_container_id or v['ikey'] is None
        ]

        with concurrent.futures.ThreadPoolExecutor(
                max_workers=max(len(containers), 30)) as executor:
            container_stats = list(
                executor.map(
                    lambda container:
                    (container,
                     self._docker_wrapper.get_stats(container=container,
                                                    stats_to_bring=self.
                                                    _samples_in_each_metric)),
                    containers_without_sdk))

        for container, stats in [(container, stats)
                                 for container, stats in container_stats
                                 if len(stats) > 1]:
            metrics = dockerconvertors.convert_to_metrics(stats)
            properties = dockerconvertors.get_container_properties(
                container, host_name)
            for metric in metrics:
                self._send_event({'metric': metric, 'properties': properties})
コード例 #4
0
 def _get_properties(self, item):
     if 'status' in item:
         inspect = self._docker_wrapper.get_inspection(item)
         return dockerconvertors.get_container_properties_from_inspect(inspect=inspect, host_name=self._host_name)
     return dockerconvertors.get_container_properties(container=item, host_name=self._host_name)