Infrastructure Topology
The Infrastructure page provides a visual representation of the Kubernetes cluster topology, resource utilization, service dependencies, and deployment status. It enables platform operators to monitor infrastructure health and identify resource bottlenecks across the MATIH deployment.
Topology View
The main view renders an interactive cluster topology diagram showing:
| Layer | Components | Display |
|---|---|---|
| Namespaces | matih-system, matih-data-plane, matih-monitoring, tenant namespaces | Color-coded containers |
| Deployments | All service deployments with replica counts | Node badges with pod count |
| Services | ClusterIP, LoadBalancer, and Ingress services | Connection lines |
| Data stores | PostgreSQL, Redis, Kafka, Qdrant, Dgraph | Database icons |
Resource Monitoring
Real-time resource utilization displayed per namespace and service:
| Metric | Source | Display |
|---|---|---|
| CPU usage | Prometheus metrics | Gauge chart with request/limit overlay |
| Memory usage | Prometheus metrics | Gauge chart with request/limit overlay |
| Pod count | Kubernetes API | Current / desired replicas |
| Restart count | Kubernetes API | Counter with trend indicator |
| Storage usage | Prometheus metrics | Bar chart per PVC |
Node Health
| Node Metric | Description | Alert Threshold |
|---|---|---|
| CPU utilization | Aggregate CPU across all pods | Above 80% |
| Memory utilization | Aggregate memory usage | Above 85% |
| Disk pressure | Node disk usage | Above 90% |
| Pod capacity | Pods running vs. allocatable | Above 90% |
| Network I/O | Bytes transmitted/received | Anomaly detection |
Service Dependency Map
An interactive graph showing communication paths between services:
API Gateway --> AI Service --> Query Engine
| |
v v
Redis PostgreSQL
|
v
Qdrant --> DgraphDeployment Status
| Column | Description |
|---|---|
| Service | Service name and namespace |
| Replicas | Current / desired / available |
| Image | Container image tag |
| Age | Time since last deployment |
| Status | Running, Degraded, Failed |
| HPA | Autoscaler min/max/current |
Pod Detail View
Clicking a pod displays:
| Field | Source |
|---|---|
| Pod name and IP | Kubernetes API |
| Container status | Kubernetes API |
| Resource usage | Prometheus |
| Recent logs | Kubernetes API (last 100 lines) |
| Events | Kubernetes events for the pod |
Namespace Usage Summary
| Namespace | CPU Request | CPU Limit | Memory Request | Memory Limit |
|---|---|---|---|---|
| matih-system | Aggregated | Aggregated | Aggregated | Aggregated |
| matih-data-plane | Aggregated | Aggregated | Aggregated | Aggregated |
| matih-monitoring | Aggregated | Aggregated | Aggregated | Aggregated |
Data Fetching
Infrastructure data is fetched from the Observability API:
const useClusterTopology = () => {
return useQuery({
queryKey: ['cluster-topology'],
queryFn: () => apiClient.get('/api/v1/infrastructure/topology'),
refetchInterval: 15000,
});
};Access Control
| Role | View Topology | View Logs | Scale Services | Restart Pods |
|---|---|---|---|---|
| Platform Admin | Yes | Yes | Yes | Yes |
| Operator | Yes | Yes | Yes | Yes |
| Tenant Admin | Own namespace | No | No | No |
| Developer | Own namespace | Own services | No | No |