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})
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)
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})
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)