CI Criticality Scoring
Automated impact assessment based on dependencies and resource size
Parascope assigns a Criticality Score (0-100) to every Configuration Item, conveying its relative importance based on downstream dependencies, resource size, and inherent type importance.
Overview
The criticality score answers: "If this CI fails, how bad is it?"
- High scores (80-100): Core infrastructure—failure causes widespread impact
- Medium-high scores (60-79): Important platform services and workloads
- Medium scores (40-59): Standard workloads with moderate dependencies
- Low scores (0-39): Leaf CIs with limited downstream impact
Scoring Formula
Criticality Score = (
Dependency_Score × 0.45 + # Downstream/blast radius impact
Size_Score × 0.30 + # Resource footprint
Type_Criticality × 0.25 # Inherent importance by CI type
) × 100Weight Rationale
| Component | Weight | Why |
|---|---|---|
| Dependency Impact | 45% | Direct measure of blast radius—if this CI fails, how much else breaks? |
| Resource Size | 30% | Larger resources typically represent more important workloads |
| Type Criticality | 25% | Infrastructure (clusters, nodes) is inherently more critical than leaf CIs |
Component 1: Dependency Score (0.0-1.0)
Measures "how many CIs would be affected if this CI fails" using relationship graph traversal.
Algorithm
- Traverse relationships up to 3 levels deep
- Weight dependents by depth (1.0 at depth 0, 0.5 at depth 1, 0.33 at depth 2)
- Weight by relationship type importance
- Apply logarithmic normalization (diminishing returns)
Relationship Type Weights
| Relationship | Weight | Description |
|---|---|---|
runs_on | 1.0 | Pods running on nodes |
is_contained_by | 0.9 | Resources in namespaces |
manages | 0.85 | Deployments managing pods |
implemented_by | 0.8 | Infrastructure implementation |
member_of | 0.8 | Cluster membership |
scheduled_on | 0.75 | Workloads scheduled on nodes |
member_of_service | 0.7 | Component membership in system |
affects | 0.7 | Vulnerability affects asset |
selects | 0.7 | Services selecting pods |
member_of_product | 0.65 | System membership in domain |
exposes | 0.65 | Services exposing pods |
governs_ingress | 0.6 | Network policies |
governs_egress | 0.6 | Network policies |
depends_on | 0.6 | Service dependency |
provides | 0.6 | API provision |
uses | 0.55 | Resource consumption |
installed_on | 0.55 | OS installed on VM/container |
consumes | 0.55 | API consumption |
mounts | 0.5 | Volume mounts |
stores_on | 0.5 | Storage dependencies |
correlates_with | 0.3 | Cross-system correlation |
Unknown relationship types default to 0.4.
Component 2: Size Score (0.0-1.0)
Compares resource size within type families using percentile ranking.
Type Families
| Family | CI Types | Primary Metrics |
|---|---|---|
| compute_infra | kubernetes.node, proxmox.node, openstack.hypervisor | CPU cores, memory |
| compute_workload | kubernetes.pod, proxmox.vm, openstack.instance | vCPUs, memory, disk |
| storage | ceph.pool, ceph.osd, proxmox.storage | capacity bytes |
| database | postgresql.server, postgresql.database | connections, size |
| network | netbox.device, netbox.interface, openstack.network | ports, bandwidth |
| configuration | kubernetes.deployment, kubernetes.configmap, kubernetes.service | replica count |
Normalization
- CIs are ranked by percentile within their type family
- Composite size:
(cpu × 0.4) + (memory × 0.4) + (disk × 0.2) - CIs without size metrics default to 0.3 (below average)
Component 3: Type Criticality (0.0-1.0)
Base criticality tier by CI type.
| Score | Tier | CI Types |
|---|---|---|
| 0.95 | Infrastructure | kubernetes.node, kubernetes.cluster, proxmox.node, proxmox.cluster, ceph.cluster, ceph.mon, postgresql.server |
| 0.70 | Platform | kubernetes.deployment, kubernetes.statefulset, ceph.pool, ceph.osd, proxmox.storage, netbox.device, postgresql.database |
| 0.45 | Workload | kubernetes.pod, proxmox.vm, proxmox.container, openstack.instance, kubernetes.service |
| 0.30 | Configuration | kubernetes.configmap, kubernetes.namespace, kubernetes.replicaset, openstack.port, netbox.interface |
Unknown types default to 0.5.
Display Tiers
| Score Range | Tier | Color |
|---|---|---|
| 80-100 | Critical | Red |
| 60-79 | High | Orange |
| 40-59 | Medium | Yellow |
| 0-39 | Low | Green |
API Endpoints
Get CI Criticality Score
GET /api/v1/criticality/ci/{ci_id}Response:
{
"ci_id": "550e8400-e29b-41d4-a716-446655440000",
"score": 78,
"tier": "High",
"color": "orange",
"breakdown": {
"dependency_score": 0.82,
"size_score": 0.71,
"type_score": 0.70
},
"metadata": {
"direct_dependents": 5,
"transitive_dependents": 23,
"size_percentile": 0.71,
"type_family": "compute_infra"
},
"calculated_at": "2026-01-17T10:30:00Z"
}Recalculate Scores
POST /api/v1/criticality/recalculateRequest Body:
{
"ci_ids": ["uuid1", "uuid2"], // Optional, null = all CIs
"force": false // Recalculate even if fresh
}Response:
{
"status": "completed",
"cis_processed": 819,
"cis_updated": 312,
"errors": [],
"duration_seconds": 1.72
}Get Criticality Statistics
GET /api/v1/criticality/statsReturns distribution summary across all CIs.
Bulk Get Scores
POST /api/v1/criticality/bulkRequest Body:
{
"ci_ids": ["uuid1", "uuid2", "uuid3"]
}CI List Integration
Include criticality in CI list queries:
GET /api/v1/configuration-items?include_criticality=trueEach CI in the response includes:
{
"ci_id": "...",
"name": "pve",
"ci_type": "proxmox.node",
"criticality": {
"score": 92,
"tier": "Critical",
"color": "red"
}
}Sorting by Criticality
GET /api/v1/configuration-items?include_criticality=true&sort_by=criticality_score&sort_order=descAutomatic Scoring
Scores recalculate automatically when infrastructure relationships change. New CIs are scored within minutes of discovery.
Manual Recalculation
For immediate recalculation, use the API:
# Recalculate all CIs
curl -X POST https://your-company.parascope.io/api/v1/criticality/recalculate
# Recalculate specific CIs
curl -X POST https://your-company.parascope.io/api/v1/criticality/recalculate \
-H "Content-Type: application/json" \
-d '{"ci_ids": ["uuid1", "uuid2"]}'Examples
High Criticality CI (Proxmox Node)
Name: pve
Type: proxmox.node
Score: 92 (Critical)
Breakdown:
- Dependency: 0.89 (63 transitive dependents - all VMs/containers)
- Size: 0.85 (high CPU/memory capacity)
- Type: 0.95 (infrastructure tier)Medium Criticality CI (Kubernetes Pod)
Name: api-server-7d8f9c6b5-x2k4m
Type: kubernetes.pod
Score: 47 (Medium)
Breakdown:
- Dependency: 0.15 (few dependents)
- Size: 0.55 (moderate resource requests)
- Type: 0.45 (workload tier)Low Criticality CI (ConfigMap)
Name: app-config
Type: kubernetes.configmap
Score: 32 (Low)
Breakdown:
- Dependency: 0.20 (referenced by 2 pods)
- Size: 0.30 (no size metrics)
- Type: 0.30 (configuration tier)Related Documentation
- API Reference - Criticality API endpoints
- Correlation Engine - Cross-system relationship discovery
- Architecture - System design overview