@@ -32,6 +32,12 @@ type PrometheusMetric struct {
32
32
ebpfCapabilityCounter prometheus.Counter
33
33
ebpfRandomXCounter prometheus.Counter
34
34
ebpfFailedCounter prometheus.Counter
35
+ ebpfSymlinkCounter prometheus.Counter
36
+ ebpfHardlinkCounter prometheus.Counter
37
+ ebpfSSHCounter prometheus.Counter
38
+ ebpfHTTPCounter prometheus.Counter
39
+ ebpfPtraceCounter prometheus.Counter
40
+ ebpfIoUringCounter prometheus.Counter
35
41
ruleCounter * prometheus.CounterVec
36
42
alertCounter * prometheus.CounterVec
37
43
@@ -45,6 +51,10 @@ type PrometheusMetric struct {
45
51
programCpuUsageGauge * prometheus.GaugeVec
46
52
programPerCpuUsageGauge * prometheus.GaugeVec
47
53
54
+ // Container metrics
55
+ containerStartCounter prometheus.Counter
56
+ containerStopCounter prometheus.Counter
57
+
48
58
// Cache to avoid allocating Labels maps on every call
49
59
ruleCounterCache map [string ]prometheus.Counter
50
60
alertCounterCache map [string ]prometheus.Counter
@@ -85,6 +95,30 @@ func NewPrometheusMetric() *PrometheusMetric {
85
95
Name : "node_agent_ebpf_event_failure_counter" ,
86
96
Help : "The total number of failed events received from the eBPF probe" ,
87
97
}),
98
+ ebpfSymlinkCounter : promauto .NewCounter (prometheus.CounterOpts {
99
+ Name : "node_agent_symlink_counter" ,
100
+ Help : "The total number of symlink events received from the eBPF probe" ,
101
+ }),
102
+ ebpfHardlinkCounter : promauto .NewCounter (prometheus.CounterOpts {
103
+ Name : "node_agent_hardlink_counter" ,
104
+ Help : "The total number of hardlink events received from the eBPF probe" ,
105
+ }),
106
+ ebpfSSHCounter : promauto .NewCounter (prometheus.CounterOpts {
107
+ Name : "node_agent_ssh_counter" ,
108
+ Help : "The total number of SSH events received from the eBPF probe" ,
109
+ }),
110
+ ebpfHTTPCounter : promauto .NewCounter (prometheus.CounterOpts {
111
+ Name : "node_agent_http_counter" ,
112
+ Help : "The total number of HTTP events received from the eBPF probe" ,
113
+ }),
114
+ ebpfPtraceCounter : promauto .NewCounter (prometheus.CounterOpts {
115
+ Name : "node_agent_ptrace_counter" ,
116
+ Help : "The total number of ptrace events received from the eBPF probe" ,
117
+ }),
118
+ ebpfIoUringCounter : promauto .NewCounter (prometheus.CounterOpts {
119
+ Name : "node_agent_iouring_counter" ,
120
+ Help : "The total number of io_uring events received from the eBPF probe" ,
121
+ }),
88
122
ruleCounter : promauto .NewCounterVec (prometheus.CounterOpts {
89
123
Name : "node_agent_rule_counter" ,
90
124
Help : "The total number of rules processed by the engine" ,
@@ -135,6 +169,16 @@ func NewPrometheusMetric() *PrometheusMetric {
135
169
Help : "Per-CPU usage of programs by program ID" ,
136
170
}, []string {programTypeLabel , programNameLabel }),
137
171
172
+ // Container metrics
173
+ containerStartCounter : promauto .NewCounter (prometheus.CounterOpts {
174
+ Name : "node_agent_container_start_counter" ,
175
+ Help : "The total number of container start events" ,
176
+ }),
177
+ containerStopCounter : promauto .NewCounter (prometheus.CounterOpts {
178
+ Name : "node_agent_container_stop_counter" ,
179
+ Help : "The total number of container stop events" ,
180
+ }),
181
+
138
182
// Initialize counter caches
139
183
ruleCounterCache : make (map [string ]prometheus.Counter ),
140
184
alertCounterCache : make (map [string ]prometheus.Counter ),
@@ -161,7 +205,14 @@ func (p *PrometheusMetric) Destroy() {
161
205
prometheus .Unregister (p .ebpfFailedCounter )
162
206
prometheus .Unregister (p .ruleCounter )
163
207
prometheus .Unregister (p .alertCounter )
164
-
208
+ prometheus .Unregister (p .ebpfSymlinkCounter )
209
+ prometheus .Unregister (p .ebpfHardlinkCounter )
210
+ prometheus .Unregister (p .ebpfSSHCounter )
211
+ prometheus .Unregister (p .ebpfHTTPCounter )
212
+ prometheus .Unregister (p .ebpfPtraceCounter )
213
+ prometheus .Unregister (p .ebpfIoUringCounter )
214
+ prometheus .Unregister (p .containerStartCounter )
215
+ prometheus .Unregister (p .containerStopCounter )
165
216
// Unregister program ID metrics
166
217
prometheus .Unregister (p .programRuntimeGauge )
167
218
prometheus .Unregister (p .programRunCountGauge )
@@ -175,6 +226,8 @@ func (p *PrometheusMetric) Destroy() {
175
226
176
227
func (p * PrometheusMetric ) ReportEvent (eventType utils.EventType ) {
177
228
switch eventType {
229
+ case utils .CapabilitiesEventType :
230
+ p .ebpfCapabilityCounter .Inc ()
178
231
case utils .ExecveEventType :
179
232
p .ebpfExecCounter .Inc ()
180
233
case utils .OpenEventType :
@@ -183,12 +236,22 @@ func (p *PrometheusMetric) ReportEvent(eventType utils.EventType) {
183
236
p .ebpfNetworkCounter .Inc ()
184
237
case utils .DnsEventType :
185
238
p .ebpfDNSCounter .Inc ()
186
- case utils .SyscallEventType :
187
- p .ebpfSyscallCounter .Inc ()
188
- case utils .CapabilitiesEventType :
189
- p .ebpfCapabilityCounter .Inc ()
190
239
case utils .RandomXEventType :
191
240
p .ebpfRandomXCounter .Inc ()
241
+ case utils .SymlinkEventType :
242
+ p .ebpfSymlinkCounter .Inc ()
243
+ case utils .HardlinkEventType :
244
+ p .ebpfHardlinkCounter .Inc ()
245
+ case utils .SSHEventType :
246
+ p .ebpfSSHCounter .Inc ()
247
+ case utils .HTTPEventType :
248
+ p .ebpfHTTPCounter .Inc ()
249
+ case utils .PtraceEventType :
250
+ p .ebpfPtraceCounter .Inc ()
251
+ case utils .IoUringEventType :
252
+ p .ebpfIoUringCounter .Inc ()
253
+ case utils .SyscallEventType :
254
+ p .ebpfSyscallCounter .Inc ()
192
255
}
193
256
}
194
257
@@ -271,3 +334,11 @@ func (p *PrometheusMetric) ReportEbpfStats(stats *top.Event[toptypes.Stats]) {
271
334
p .programPerCpuUsageGauge .With (labels ).Set (stat .PerCpuUsage )
272
335
}
273
336
}
337
+
338
+ func (p * PrometheusMetric ) ReportContainerStart () {
339
+ p .containerStartCounter .Inc ()
340
+ }
341
+
342
+ func (p * PrometheusMetric ) ReportContainerStop () {
343
+ p .containerStopCounter .Inc ()
344
+ }
0 commit comments