Skip to content

Commit 5c4cb4e

Browse files
committed
refactor: rename AEOP to Sentinel
1 parent 87fd6e8 commit 5c4cb4e

File tree

3 files changed

+48
-48
lines changed

3 files changed

+48
-48
lines changed

README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Autonomous Edge Operations Agent
1+
# Sentinel
22

3-
A lightweight agent for Kubernetes edge nodes that provides **predictive failure detection** and **partition-resilient orchestration** for Kubernetes clusters running at the edge.
3+
A lightweight agent for Kubernetes edge nodes that provides **predictive failure detection** and **partition-resilient orchestration**.
44

55
## Novel Contributions
66

@@ -41,7 +41,7 @@ make build
4141
./bin/predictor -node=my-node
4242

4343
# Deploy to K3s cluster
44-
helm install aeop ./deploy/helm/aeop
44+
helm install sentinel ./deploy/helm/sentinel
4545
```
4646

4747
## Architecture
@@ -98,16 +98,16 @@ Raft-lite implementation for edge:
9898
## Prometheus Metrics
9999

100100
### Prediction Metrics
101-
- `aeop_prediction_failure_probability` - Predicted failure probability (0-1)
102-
- `aeop_prediction_confidence` - Prediction confidence level
103-
- `aeop_prediction_time_to_failure_seconds` - Estimated time until failure
104-
- `aeop_prediction_preemptive_migrations_total` - Migration count
101+
- `sentinel_prediction_failure_probability` - Predicted failure probability (0-1)
102+
- `sentinel_prediction_confidence` - Prediction confidence level
103+
- `sentinel_prediction_time_to_failure_seconds` - Estimated time until failure
104+
- `sentinel_prediction_preemptive_migrations_total` - Migration count
105105

106106
### Partition Metrics
107-
- `aeop_partition_detected` - Partition status (0/1)
108-
- `aeop_partition_duration_seconds` - Current partition duration
109-
- `aeop_consensus_is_leader` - Leader status
110-
- `aeop_partition_autonomous_decisions_total` - Autonomous decisions made
107+
- `sentinel_partition_detected` - Partition status (0/1)
108+
- `sentinel_partition_duration_seconds` - Current partition duration
109+
- `sentinel_consensus_is_leader` - Leader status
110+
- `sentinel_partition_autonomous_decisions_total` - Autonomous decisions made
111111

112112
## Configuration
113113

pkg/metrics/exporter.go

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -70,217 +70,217 @@ func NewExporter(nodeName string) *Exporter {
7070

7171
// CPU metrics
7272
cpuTemperature: prometheus.NewGaugeVec(prometheus.GaugeOpts{
73-
Namespace: "aeop",
73+
Namespace: "sentinel",
7474
Subsystem: "cpu",
7575
Name: "temperature_celsius",
7676
Help: "CPU temperature in Celsius",
7777
}, labels),
7878
cpuUsage: prometheus.NewGaugeVec(prometheus.GaugeOpts{
79-
Namespace: "aeop",
79+
Namespace: "sentinel",
8080
Subsystem: "cpu",
8181
Name: "usage_percent",
8282
Help: "CPU usage percentage",
8383
}, labels),
8484
cpuThrottled: prometheus.NewGaugeVec(prometheus.GaugeOpts{
85-
Namespace: "aeop",
85+
Namespace: "sentinel",
8686
Subsystem: "cpu",
8787
Name: "throttled",
8888
Help: "CPU thermal throttling status (1 = throttled)",
8989
}, labels),
9090
cpuFrequency: prometheus.NewGaugeVec(prometheus.GaugeOpts{
91-
Namespace: "aeop",
91+
Namespace: "sentinel",
9292
Subsystem: "cpu",
9393
Name: "frequency_mhz",
9494
Help: "Current CPU frequency in MHz",
9595
}, labels),
9696
loadAverage: prometheus.NewGaugeVec(prometheus.GaugeOpts{
97-
Namespace: "aeop",
97+
Namespace: "sentinel",
9898
Subsystem: "cpu",
9999
Name: "load_average",
100100
Help: "System load average",
101101
}, append(labels, "period")),
102102

103103
// Memory metrics
104104
memoryTotal: prometheus.NewGaugeVec(prometheus.GaugeOpts{
105-
Namespace: "aeop",
105+
Namespace: "sentinel",
106106
Subsystem: "memory",
107107
Name: "total_bytes",
108108
Help: "Total memory in bytes",
109109
}, labels),
110110
memoryAvailable: prometheus.NewGaugeVec(prometheus.GaugeOpts{
111-
Namespace: "aeop",
111+
Namespace: "sentinel",
112112
Subsystem: "memory",
113113
Name: "available_bytes",
114114
Help: "Available memory in bytes",
115115
}, labels),
116116
memoryUsage: prometheus.NewGaugeVec(prometheus.GaugeOpts{
117-
Namespace: "aeop",
117+
Namespace: "sentinel",
118118
Subsystem: "memory",
119119
Name: "usage_percent",
120120
Help: "Memory usage percentage",
121121
}, labels),
122122
swapTotal: prometheus.NewGaugeVec(prometheus.GaugeOpts{
123-
Namespace: "aeop",
123+
Namespace: "sentinel",
124124
Subsystem: "memory",
125125
Name: "swap_total_bytes",
126126
Help: "Total swap in bytes",
127127
}, labels),
128128
swapUsed: prometheus.NewGaugeVec(prometheus.GaugeOpts{
129-
Namespace: "aeop",
129+
Namespace: "sentinel",
130130
Subsystem: "memory",
131131
Name: "swap_used_bytes",
132132
Help: "Used swap in bytes",
133133
}, labels),
134134
oomKillCount: prometheus.NewCounterVec(prometheus.CounterOpts{
135-
Namespace: "aeop",
135+
Namespace: "sentinel",
136136
Subsystem: "memory",
137137
Name: "oom_kill_total",
138138
Help: "Total OOM kill events",
139139
}, labels),
140140

141141
// Disk metrics
142142
diskTotal: prometheus.NewGaugeVec(prometheus.GaugeOpts{
143-
Namespace: "aeop",
143+
Namespace: "sentinel",
144144
Subsystem: "disk",
145145
Name: "total_bytes",
146146
Help: "Total disk space in bytes",
147147
}, labels),
148148
diskUsed: prometheus.NewGaugeVec(prometheus.GaugeOpts{
149-
Namespace: "aeop",
149+
Namespace: "sentinel",
150150
Subsystem: "disk",
151151
Name: "used_bytes",
152152
Help: "Used disk space in bytes",
153153
}, labels),
154154
diskUsage: prometheus.NewGaugeVec(prometheus.GaugeOpts{
155-
Namespace: "aeop",
155+
Namespace: "sentinel",
156156
Subsystem: "disk",
157157
Name: "usage_percent",
158158
Help: "Disk usage percentage",
159159
}, labels),
160160
diskIORead: prometheus.NewCounterVec(prometheus.CounterOpts{
161-
Namespace: "aeop",
161+
Namespace: "sentinel",
162162
Subsystem: "disk",
163163
Name: "io_read_bytes_total",
164164
Help: "Total bytes read from disk",
165165
}, labels),
166166
diskIOWrite: prometheus.NewCounterVec(prometheus.CounterOpts{
167-
Namespace: "aeop",
167+
Namespace: "sentinel",
168168
Subsystem: "disk",
169169
Name: "io_write_bytes_total",
170170
Help: "Total bytes written to disk",
171171
}, labels),
172172
diskIOLatency: prometheus.NewGaugeVec(prometheus.GaugeOpts{
173-
Namespace: "aeop",
173+
Namespace: "sentinel",
174174
Subsystem: "disk",
175175
Name: "io_latency_ms",
176176
Help: "Disk I/O latency in milliseconds",
177177
}, labels),
178178

179179
// Network metrics
180180
networkRxBytes: prometheus.NewCounterVec(prometheus.CounterOpts{
181-
Namespace: "aeop",
181+
Namespace: "sentinel",
182182
Subsystem: "network",
183183
Name: "rx_bytes_total",
184184
Help: "Total bytes received",
185185
}, labels),
186186
networkTxBytes: prometheus.NewCounterVec(prometheus.CounterOpts{
187-
Namespace: "aeop",
187+
Namespace: "sentinel",
188188
Subsystem: "network",
189189
Name: "tx_bytes_total",
190190
Help: "Total bytes transmitted",
191191
}, labels),
192192
networkRxErrors: prometheus.NewCounterVec(prometheus.CounterOpts{
193-
Namespace: "aeop",
193+
Namespace: "sentinel",
194194
Subsystem: "network",
195195
Name: "rx_errors_total",
196196
Help: "Total receive errors",
197197
}, labels),
198198
networkTxErrors: prometheus.NewCounterVec(prometheus.CounterOpts{
199-
Namespace: "aeop",
199+
Namespace: "sentinel",
200200
Subsystem: "network",
201201
Name: "tx_errors_total",
202202
Help: "Total transmit errors",
203203
}, labels),
204204
networkLatency: prometheus.NewGaugeVec(prometheus.GaugeOpts{
205-
Namespace: "aeop",
205+
Namespace: "sentinel",
206206
Subsystem: "network",
207207
Name: "latency_ms",
208208
Help: "Network latency in milliseconds",
209209
}, labels),
210210

211211
// Partition/consensus metrics - NOVEL CONTRIBUTION
212212
partitionDetected: prometheus.NewGaugeVec(prometheus.GaugeOpts{
213-
Namespace: "aeop",
213+
Namespace: "sentinel",
214214
Subsystem: "partition",
215215
Name: "detected",
216216
Help: "Network partition detected (1 = partitioned from control plane)",
217217
}, labels),
218218
partitionDuration: prometheus.NewGaugeVec(prometheus.GaugeOpts{
219-
Namespace: "aeop",
219+
Namespace: "sentinel",
220220
Subsystem: "partition",
221221
Name: "duration_seconds",
222222
Help: "Duration of current network partition",
223223
}, labels),
224224
consensusLeader: prometheus.NewGaugeVec(prometheus.GaugeOpts{
225-
Namespace: "aeop",
225+
Namespace: "sentinel",
226226
Subsystem: "consensus",
227227
Name: "is_leader",
228228
Help: "Whether this node is the local consensus leader (1 = leader)",
229229
}, labels),
230230
consensusTerm: prometheus.NewGaugeVec(prometheus.GaugeOpts{
231-
Namespace: "aeop",
231+
Namespace: "sentinel",
232232
Subsystem: "consensus",
233233
Name: "term",
234234
Help: "Current Raft-lite consensus term",
235235
}, labels),
236236
autonomousDecisions: prometheus.NewCounterVec(prometheus.CounterOpts{
237-
Namespace: "aeop",
237+
Namespace: "sentinel",
238238
Subsystem: "partition",
239239
Name: "autonomous_decisions_total",
240240
Help: "Total autonomous decisions made during partition",
241241
}, append(labels, "decision_type")),
242242
reconciliationEvents: prometheus.NewCounterVec(prometheus.CounterOpts{
243-
Namespace: "aeop",
243+
Namespace: "sentinel",
244244
Subsystem: "partition",
245245
Name: "reconciliation_events_total",
246246
Help: "Total reconciliation events after partition heal",
247247
}, append(labels, "result")),
248248

249249
// Prediction metrics - NOVEL CONTRIBUTION
250250
failureProbability: prometheus.NewGaugeVec(prometheus.GaugeOpts{
251-
Namespace: "aeop",
251+
Namespace: "sentinel",
252252
Subsystem: "prediction",
253253
Name: "failure_probability",
254254
Help: "Predicted probability of node failure (0-1)",
255255
}, labels),
256256
predictionConfidence: prometheus.NewGaugeVec(prometheus.GaugeOpts{
257-
Namespace: "aeop",
257+
Namespace: "sentinel",
258258
Subsystem: "prediction",
259259
Name: "confidence",
260260
Help: "Confidence level of failure prediction (0-1)",
261261
}, labels),
262262
predictedTimeToFailure: prometheus.NewGaugeVec(prometheus.GaugeOpts{
263-
Namespace: "aeop",
263+
Namespace: "sentinel",
264264
Subsystem: "prediction",
265265
Name: "time_to_failure_seconds",
266266
Help: "Predicted seconds until failure (-1 if no failure predicted)",
267267
}, labels),
268268
preemptiveMigrations: prometheus.NewCounterVec(prometheus.CounterOpts{
269-
Namespace: "aeop",
269+
Namespace: "sentinel",
270270
Subsystem: "prediction",
271271
Name: "preemptive_migrations_total",
272272
Help: "Total preemptive workload migrations triggered by predictions",
273273
}, append(labels, "reason")),
274274

275275
// Collection metadata
276276
collectionDuration: prometheus.NewGaugeVec(prometheus.GaugeOpts{
277-
Namespace: "aeop",
277+
Namespace: "sentinel",
278278
Subsystem: "collector",
279279
Name: "duration_ms",
280280
Help: "Time taken to collect metrics in milliseconds",
281281
}, labels),
282282
collectionErrors: prometheus.NewCounterVec(prometheus.CounterOpts{
283-
Namespace: "aeop",
283+
Namespace: "sentinel",
284284
Subsystem: "collector",
285285
Name: "errors_total",
286286
Help: "Total metric collection errors",

test/integration/predictor_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Package integration contains integration tests for AEOP components.
1+
// Package integration contains integration tests for Sentinel components.
22
package integration
33

44
import (
@@ -7,8 +7,8 @@ import (
77
"testing"
88
"time"
99

10-
"github.com/aqstack/aeop/pkg/collector"
11-
"github.com/aqstack/aeop/pkg/ml"
10+
"github.com/aqstack/sentinel/pkg/collector"
11+
"github.com/aqstack/sentinel/pkg/ml"
1212
)
1313

1414
// TestPredictorIntegration tests the full prediction pipeline.

0 commit comments

Comments
 (0)