What is an Event?
An event in Garnet represents a specific security-related occurrence detected by an agent. Events are the raw telemetry data that power Garnet’s security monitoring, capturing everything from network flows to suspicious process executions. Events use the jibril-ashkaal format (v2), a structured event format designed for efficient security event representation.Event Structure
Core Fields
Event ID
Unique identifier for the event. Used for querying and associating events with issues.
Agent
Full agent details including context, location, and configuration.
Data
Event payload in ashkaal format containing detection details and metadata.
Kind
Event category: flows, detections, infos, or network policy events.
Event Kinds
Events are categorized into high-level kinds:Event Types
Within each kind, events have specific types identified by metadata names:Network Events
Network Events
Drop Events:
EventKindDropIP- IP address was blockedEventKindDropDomain- Domain was blockedEventKindFlow- Network flow information
EventKindAdultDomainAccess- Adult content domainEventKindBadwareDomainAccess- Known malicious domainEventKindDynDNSDomainAccess- Dynamic DNS domainEventKindFakeDomainAccess- Impersonating domainEventKindGamblingDomainAccess- Gambling domainEventKindPiracyDomainAccess- Piracy-related domainEventKindThreatDomainAccess- Threat intelligence domainEventKindTrackingDomainAccess- Tracking/analytics domainEventKindVPNLikeDomainAccess- VPN/proxy domainEventKindPlaintextCommunication- Unencrypted network traffic
System Reconnaissance
System Reconnaissance
Fingerprinting Events:
EventKindCPUFingerprint- CPU characteristics detectionEventKindFilesystemFingerprint- Filesystem enumerationEventKindMachineFingerprint- Machine identificationEventKindOSFingerprint- OS detectionEventKindOSNetworkFingerprint- Network-based OS detectionEventKindOSStatusFingerprint- OS status enumeration
Privilege Escalation & Persistence
Privilege Escalation & Persistence
EventKindCapabilitiesModification- Linux capabilities changesEventKindSudoersModification- Sudoers file modificationEventKindPAMConfigModification- PAM configuration changesEventKindShellConfigModification- Shell config modificationEventKindPackageRepoConfigModification- Package repo tampering
Credential Access
Credential Access
EventKindCredentialsFilesAccess- Credential file accessEventKindSSLCertificateAccess- SSL certificate accessEventKindAuthLogsTamper- Authentication log tamperingEventKindEnvironReadFromProcfs- Environment variable reading
Code Execution
Code Execution
EventKindCodeModificationThroughProcfs- Code modification via /procEventKindBinaryExecutedByLoader- Custom loader executionEventKindCodeOnTheFly- JIT/dynamic code executionEventKindHiddenELFExec- Hidden binary executionEventKindBinarySelfDeletion- Binary self-deletionEventKindJavaDebugLibLoad- Java debug library loadingEventKindJavaInstrumentLibLoad- Java instrumentation
Malware & Suspicious Tools
Malware & Suspicious Tools
EventKindCryptoMinerFiles- Crypto miner files detectedEventKindCryptoMinerExecution- Crypto miner executionEventKindDenialOfServiceTools- DoS tool usageEventKindNetScanToolExec- Network scanning toolEventKindNetSniffToolExec- Network sniffing toolEventKindNetMITMToolExec- Man-in-the-middle toolEventKindNetFilecopyToolExec- Network file copy toolEventKindDataEncoderExec- Data encoding tool
Suspicious Behavior
Suspicious Behavior
EventKindExecFromUnusualDir- Execution from unusual directoryEventKindInterpreterShellSpawn- Shell spawned by interpreterEventKindWebserverExec- Binary executed by webserverEventKindWebserverShellExec- Shell spawned by webserverEventKindRuncSuspiciousExec- Suspicious runc executionEventKindNetSuspiciousToolExec- Suspicious network toolEventKindNetSuspiciousToolShell- Suspicious network tool shell
System Tampering
System Tampering
EventKindGlobalShlibModification- Shared library modificationEventKindFileAttributeChange- File attribute changesEventKindCorePatternAccess- Core pattern accessEventKindSchedDebugAccess- Scheduler debug accessEventKindSysrqAccess- SysRq trigger accessEventKindUnprivilegedBPFConfigAccess- BPF config access
Event Data Structure
Events contain rich contextual information:Network Flow Information
The
Names array in network flows contains the DNS resolution chain from resolved IP to original domain: [IP, CNAME_N, ..., CNAME_1, original_domain]Process Information
Ingesting Events
Agents ingest events using the V2 API:Event ingestion uses PUT semantics - sending the same event twice will update rather than duplicate it.
Querying Events
Retrieve and filter events with powerful query capabilities:Available Filters
Agent Filters
- AgentID: Specific agent
- Cluster: Kubernetes cluster name
- Namespace: Kubernetes namespace
- Node: Kubernetes node name
Event Filters
- Kind: Event kind (flows, detections, etc.)
- Kinds: Multiple event kinds
- MetadataNames: Specific event types
- TimeStart/TimeEnd: Time range
Retrieving a Single Event
Get detailed information about a specific event:Event Actions
Take action on events directly:Blocking an Event
Create a network policy rule to block the destination from an event:Event Lifecycle
- Detection: Agent detects suspicious activity
- Ingestion: Event sent to Garnet API
- Processing: Event analyzed and classified
- Aggregation: Related events grouped into issues
- Action: Security team responds to issues
Event to Issue Relationship
Events are automatically grouped into Issues based on:- Event type and severity
- Affected agent and context
- Network destination patterns
- Temporal proximity
A single issue can contain multiple related events. For example, repeated connections to a suspicious domain from the same agent will be grouped into one issue.
Best Practices
Event Processing
Event Processing
- Use event filtering to reduce noise
- Monitor high-severity event types closely
- Set up alerting for critical event types
- Review event patterns regularly
Performance
Performance
- Use time range filters to limit query scope
- Paginate large result sets
- Filter by agent or context when possible
- Use specific metadata names instead of broad kinds
Response
Response
- Investigate events grouped into issues first
- Use event context (process, flow) for analysis
- Block at appropriate scope (global, repo, workflow)
- Document blocking decisions in the reason field
Error Handling
Common Errors
ErrInvalidEventKind (types/event.go:14)
types/event.go:17)
types/issue.go:76)
Related Concepts
- Agents - Components that detect and report events
- Issues - Aggregated security concerns from events
- Network Policies - Rules created from event actions
