Skip to content

🧬 Database Schema

InfraSight stores all enriched telemetry data in ClickHouse, using two primary tables: tracing_events and network_events. Below you’ll find their schemas and a breakdown of the meaning of each field.

📁 tracing_events Table

Click to show table schema
CREATE TABLE IF NOT EXISTS audit.tracing_events (
  pid UInt32,
  uid UInt32,
  gid UInt32,
  ppid UInt32,
  user_pid UInt32,
  user_ppid UInt32,
  cgroup_id UInt64,
  cgroup_name String,
  comm String,
  filename String,
  monotonic_ts_enter_ns UInt64,
  monotonic_ts_exit_ns UInt64,
  return_code Int64,
  latency_ns UInt64,
  event_type String,
  node_name String,
  user String,
  latency_ms Float64, 
  wall_time_ms Int64,
  wall_time_dt DateTime64(3),
  container_id String,
  container_image String,
  container_labels_json JSON
)
ENGINE = MergeTree()
ORDER BY wall_time_ms;

🔍 Field Descriptions

Field Description
pid Process ID of the event-emitting process
uid User ID under which the process is running
gid Group ID of the process
ppid Parent Process ID
user_pid Userspace PID as seen by the process itself (may differ in containers)
user_ppid Userspace PPID from the process's PID namespace
cgroup_id CGroup ID the process belongs to
cgroup_name Human-readable name or resolved path of the cgroup
comm Command name (basename of the process)
filename Name of the file involved in the syscall (e.g., for open)
monotonic_ts_enter_ns Timestamp (monotonic clock) when the syscall started (in nanoseconds)
monotonic_ts_exit_ns Timestamp when the syscall exited (in nanoseconds)
return_code Return value of the syscall
latency_ns Duration of the syscall in nanoseconds
event_type Type of syscall event (e.g., execve, open, chmod, etc.)
node_name Hostname of the node where the event occurred
user Username resolved from the UID
latency_ms Latency converted to milliseconds
wall_time_ms Wall-clock timestamp (milliseconds since epoch)
wall_time_dt ISO8601-formatted timestamp with millisecond precision
container_id Container ID, if the process is running in a container
container_image Name of the container image, if available
container_labels_json Labels from the container, stored as JSON

🌐 network_events Table

Click to show table schema
CREATE TABLE IF NOT EXISTS audit.network_events (
  pid UInt32,
  uid UInt32,
  gid UInt32,
  ppid UInt32,
  user_pid UInt32,
  user_ppid UInt32,
  cgroup_id UInt64,
  cgroup_name String,
  comm String,

  sa_family String,
  saddr_ipv4 String,
  daddr_ipv4 String,
  sport String,
  dport String,
  saddr_ipv6 String,
  daddr_ipv6 String,
  resolved_domain Nullable(String),
  monotonic_ts_enter_ns UInt64,
  monotonic_ts_exit_ns UInt64,
  return_code Int64,
  latency_ns UInt64,

  event_type String,
  node_name String,
  user String,

  latency_ms Float64,
  wall_time_ms Int64,
  wall_time_dt DateTime64(3),

  container_id String,
  container_image String,
  container_labels_json JSON
)
ENGINE = MergeTree()
ORDER BY wall_time_ms;

🔍 Field Descriptions

Includes all common fields described above, plus:

Field Description
sa_family Socket address family (e.g., AF_INET, AF_INET6, AF_UNIX)
saddr_ipv4 Source IPv4 address (if applicable)
daddr_ipv4 Destination IPv4 address (if applicable)
sport Source port
dport Destination port
saddr_ipv6 Source IPv6 address (if applicable)
daddr_ipv6 Destination IPv6 address (if applicable)
resolved_domain Reverse-resolved domain of the destination IP (if public and resolvable); NULL if not resolvable or internal/private IP

🧩 ptrace_events Table

Click to show table schema
CREATE TABLE IF NOT EXISTS audit.ptrace_events (
  pid UInt32,
  uid UInt32,
  gid UInt32,
  ppid UInt32,
  user_pid UInt32,
  user_ppid UInt32,
  cgroup_id UInt64,
  cgroup_name String,
  comm String,

  request Int64,
  target_pid Int64,
  addr UInt64,
  data UInt64,
  request_name String,
  monotonic_ts_enter_ns UInt64,
  monotonic_ts_exit_ns UInt64,
  return_code Int64,
  latency_ns UInt64,

  event_type String,
  node_name String,
  user String,

  latency_ms Float64,
  wall_time_ms Int64,
  wall_time_dt DateTime64(3),

  container_id String,
  container_image String,
  container_labels_json JSON
)
ENGINE = MergeTree()
ORDER BY wall_time_ms;

🔍 Field Descriptions

Includes all common fields described above, plus:

Field Description
request Raw numeric value passed to ptrace (e.g., 0, 16, 24)
target_pid The PID of the target process being traced
addr Memory address or register offset used in the ptrace call (depends on the request)
data Auxiliary data or pointer used by the syscall (e.g., value to write, pointer to structure)
request_name Human-readable name for the request (e.g., PTRACE_ATTACH, PTRACE_SYSCALL)

🧠 mmap_events Table

Click to show table schema
CREATE TABLE IF NOT EXISTS audit.mmap_events (
  pid UInt32,
  uid UInt32,
  gid UInt32,
  ppid UInt32,
  user_pid UInt32,
  user_ppid UInt32,
  cgroup_id UInt64,
  cgroup_name String,
  comm String,

  addr UInt64,
  len UInt64,
  prot UInt64,
  flags UInt64,
  fd UInt64,
  off UInt64,

  monotonic_ts_enter_ns UInt64,
  monotonic_ts_exit_ns UInt64,
  return_code Int64,
  latency_ns UInt64,

  event_type String,
  node_name String,
  user String,

  latency_ms Float64, 
  wall_time_ms Int64,
  wall_time_dt DateTime64(3),

  container_id String,
  container_image String,
  container_labels_json JSON
)
ENGINE = MergeTree()
ORDER BY wall_time_ms;

🔍 Field Descriptions

Includes all common fields described above, plus:

Field Description
addr Starting address of the mapped memory region
len Length of the memory mapping in bytes
prot Protection flags (e.g., PROT_READ, PROT_WRITE, PROT_EXEC)
flags Mapping flags (e.g., MAP_PRIVATE, MAP_ANONYMOUS, MAP_SHARED)
fd File descriptor, or -1 if the mapping is anonymous
off Offset into the file from which mapping starts

🗂️ mount_events Table

Click to show table schema
CREATE TABLE IF NOT EXISTS audit.mount_events (
  pid UInt32,
  uid UInt32,
  gid UInt32,
  ppid UInt32,
  user_pid UInt32,
  user_ppid UInt32,
  cgroup_id UInt64,
  cgroup_name String,
  comm String,

  dev_name String,
  dir_name String,
  type String,
  flags UInt64,

  monotonic_ts_enter_ns UInt64,
  monotonic_ts_exit_ns UInt64,
  return_code Int64,
  latency_ns UInt64,

  event_type String,
  node_name String,
  user String,

  latency_ms Float64, 
  wall_time_ms Int64,
  wall_time_dt DateTime64(3),

  container_id String,
  container_image String,
  container_labels_json JSON
)
ENGINE = MergeTree()
ORDER BY wall_time_ms;

🔍 Field Descriptions

Includes all common fields described above, plus:

Field Description
dev_name Source device or pseudo-device (e.g., proc, overlay, tmpfs)
dir_name Target directory where the filesystem is to be mounted
type Filesystem type (e.g., ext4, overlay, nfs)
flags Mount flags (e.g., MS_RDONLY, MS_NOSUID, MS_BIND) as raw bitmask

🗂️ resource_events Table

Click to show table schema
CREATE TABLE IF NOT EXISTS audit.resource_events (
  pid UInt32,
  comm String,

  uid UInt32,
  gid UInt32,
  ppid UInt32,
  user_pid UInt32,
  user_ppid UInt32,
  cgroup_id UInt64,
  cgroup_name String,
  user String,

  cpu_ns UInt64,
  user_faults UInt64,
  kernel_faults UInt64,
  vm_mmap_bytes UInt64,
  vm_munmap_bytes UInt64,
  vm_brk_grow_bytes UInt64,
  vm_brk_shrink_bytes UInt64,
  bytes_written UInt64,
  bytes_read UInt64,
  isActive UInt32,

  wall_time_dt DateTime64(3),
  wall_time_ms Int64,

  container_id String,
  container_image String,
  container_labels_json JSON

) ENGINE = MergeTree()
ORDER BY wall_time_ms;

🔍 Field Descriptions

Includes all common fields described above, plus:

Field Description
cpu_ns Total CPU time consumed by the task in nanoseconds (from context switch)
user_faults Number of page faults occurring in user space
kernel_faults Number of page faults occurring in kernel space
vm_mmap_bytes Total bytes allocated via mmap
vm_munmap_bytes Total bytes released via munmap
vm_brk_grow_bytes Bytes of heap memory grown via brk
vm_brk_shrink_bytes Bytes of heap memory released via brk
bytes_written Total bytes written by the process (from syscalls like write)
bytes_read Total bytes read by the process (from syscalls like read)
isActive Indicates if the process is still active (1) or has exited (0)

🗂️ syscall_freq_events Table

Click to show table schema
CREATE TABLE IF NOT EXISTS audit.syscall_freq_events (
  pid UInt32,
  comm String,
  uid UInt32,
  gid UInt32,
  ppid UInt32,
  user_pid UInt32,
  user_ppid UInt32,
  cgroup_id UInt64,
  cgroup_name String,
  user String,
  syscall_vector_json JSON, 
  wall_time_dt DateTime64(3),
  wall_time_ms Int64,
  container_id String,
  container_image String,
  container_labels_json JSON
)
ENGINE = MergeTree()
ORDER BY wall_time_ms;

🔍 Field Descriptions

Includes all common fields described above, plus:

Field Description
syscall_vector_json JSON object mapping syscall numbers to their invocation counts.
Example: {"0":12,"1":4,"60":9} meaning read was called 12 times, write 4 times, exit 9 times.