Parascope Docs

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
) × 100

Weight Rationale

ComponentWeightWhy
Dependency Impact45%Direct measure of blast radius—if this CI fails, how much else breaks?
Resource Size30%Larger resources typically represent more important workloads
Type Criticality25%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

  1. Traverse relationships up to 3 levels deep
  2. Weight dependents by depth (1.0 at depth 0, 0.5 at depth 1, 0.33 at depth 2)
  3. Weight by relationship type importance
  4. Apply logarithmic normalization (diminishing returns)

Relationship Type Weights

RelationshipWeightDescription
runs_on1.0Pods running on nodes
is_contained_by0.9Resources in namespaces
manages0.85Deployments managing pods
implemented_by0.8Infrastructure implementation
member_of0.8Cluster membership
scheduled_on0.75Workloads scheduled on nodes
member_of_service0.7Component membership in system
affects0.7Vulnerability affects asset
selects0.7Services selecting pods
member_of_product0.65System membership in domain
exposes0.65Services exposing pods
governs_ingress0.6Network policies
governs_egress0.6Network policies
depends_on0.6Service dependency
provides0.6API provision
uses0.55Resource consumption
installed_on0.55OS installed on VM/container
consumes0.55API consumption
mounts0.5Volume mounts
stores_on0.5Storage dependencies
correlates_with0.3Cross-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

FamilyCI TypesPrimary Metrics
compute_infrakubernetes.node, proxmox.node, openstack.hypervisorCPU cores, memory
compute_workloadkubernetes.pod, proxmox.vm, openstack.instancevCPUs, memory, disk
storageceph.pool, ceph.osd, proxmox.storagecapacity bytes
databasepostgresql.server, postgresql.databaseconnections, size
networknetbox.device, netbox.interface, openstack.networkports, bandwidth
configurationkubernetes.deployment, kubernetes.configmap, kubernetes.servicereplica 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.

ScoreTierCI Types
0.95Infrastructurekubernetes.node, kubernetes.cluster, proxmox.node, proxmox.cluster, ceph.cluster, ceph.mon, postgresql.server
0.70Platformkubernetes.deployment, kubernetes.statefulset, ceph.pool, ceph.osd, proxmox.storage, netbox.device, postgresql.database
0.45Workloadkubernetes.pod, proxmox.vm, proxmox.container, openstack.instance, kubernetes.service
0.30Configurationkubernetes.configmap, kubernetes.namespace, kubernetes.replicaset, openstack.port, netbox.interface

Unknown types default to 0.5.


Display Tiers

Score RangeTierColor
80-100CriticalRed
60-79HighOrange
40-59MediumYellow
0-39LowGreen

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/recalculate

Request 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/stats

Returns distribution summary across all CIs.

Bulk Get Scores

POST /api/v1/criticality/bulk

Request Body:

{
  "ci_ids": ["uuid1", "uuid2", "uuid3"]
}

CI List Integration

Include criticality in CI list queries:

GET /api/v1/configuration-items?include_criticality=true

Each 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=desc

Automatic 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)