code: def __init__(self, dashboard_head):
      super().__init__(dashboard_head)
      self._event_dir = os.path.join(
          self._dashboard_head.log_dir, "events"
      )
      os.makedirs(self._event_dir, exist_ok=True)
      self._monitor: Union[asyncio.Task, None] = None
      self.monitor_thread_pool_executor = ThreadPoolExecutor(
          max_workers=1, thread_name_prefix="event_monitor"
      )
      self.total_report_events_count = 0
      self.total_events_received = 0
      self.module_started = time.monotonic()
  
file_path: ray/python/ray/dashboard/modules/event/event_head.py
imports: import os
  import asyncio
  import logging
  import time
  from typing import Union
  from collections import OrderedDict, defaultdict
  from concurrent.futures import ThreadPoolExecutor
  import aiohttp.web
  import ray.dashboard.utils
  import ray.dashboard.optional_utils
  from ray.dashboard.modules.event.event_utils import parse_event_strings, monitor_events
  from ray.core.generated import event_pb2
  from ray.core.generated import event_pb2_grpc
  from ray.dashboard.datacenter import DataSource
label_desc: Use image node_id 1 to create a new EventHead object from inherited base classes: dashboard_utils, event_pb2_grpc with example: obj = EventHead(dashboard_head)