NOFire AI analyzes your infrastructure by collecting metrics from Prometheus to build causal relationships between services, kubernetes resources, and external dependencies. Ensure the following metrics are available in your Prometheus instance.

Prerequisites

The following exporters must be configured and running:

ComponentPurposeRequired
kube-state-metricsKubernetes resource state✅ Required
Prometheus Node ExporterNode-level metrics✅ Required
cAdvisor ExporterContainer-level metrics✅ Required
OpenTelemetry CollectorService discovery and tracing⭕ Optional
CloudWatch ExporterAWS RDS discovery⭕ Optional

Required Metrics

Service Discovery Metrics

Metric NameLabelsPurpose
target_infojob, service_name, service_version, k8s_deployment_name, k8s_namespace_name, k8s_pod_name, k8s_node_nameService discovery and metadata collection

Additional useful labels for target_info:

  • host_arch, container_id, process_runtime_name, process_runtime_version
  • os_type, os_version, telemetry_sdk_name, telemetry_sdk_language

Service Dependencies

Metric NameLabelsPurpose
service_dependenciesclient, server, clusterInter-service communication tracking

Observability Metrics for Investigation & Analysis

Important Note: The metrics listed above are specifically for entity graph building and relationship discovery. For comprehensive root cause analysis and performance investigation, you’ll also need standard observability metrics.

Required Standard Metrics Categories

CategoryPurposeDocumentation
Container MetricsPod/container performance analysiscAdvisor Metrics
Node MetricsNode-level performance analysisNode Exporter Metrics
Service MetricsApplication performance analysisOpenTelemetry Metrics, Prometheus Best Practices
Database MetricsExternal service performanceCloudWatch RDS Metrics

These standard observability metrics enable:

  • Performance investigation - CPU, memory, disk, network utilization
  • Root cause analysis - Error rates, latencies, saturation metrics
  • Capacity planning - Resource usage trends and limits
  • Service health monitoring - Request rates, error rates, response times

Recommendation: Use industry-standard exporters like Prometheus Node Exporter, cAdvisor, and OpenTelemetry instrumentation to collect these observability metrics alongside the entity graph metrics listed in this document.

Kubernetes Infrastructure Metrics

Node Metrics

Metric NameLabelsPurpose
kube_node_infonode, cluster, container_runtime_version, provider_id, os_image, kubelet_version, kernel_versionNode discovery and metadata

Pod Metrics

Metric NameLabelsPurpose
kube_pod_infopod, namespace, node, cluster, created_by_kind, created_by_namePod discovery and ownership
kube_pod_container_infopod, namespace, container, image, image_spec, clusterContainer information
kube_pod_labelspod, namespace, cluster, label_*Pod label selectors for service relationships
kube_pod_annotationspod, namespace, cluster, annotation_*Pod metadata and relationships

Deployment and Scaling Metrics

Metric NameLabelsPurpose
kube_deployment_spec_replicasdeployment, namespace, clusterDeployment scaling information
kube_deployment_status_replicas_availabledeployment, namespace, clusterDeployment status
kube_replicaset_spec_replicasreplicaset, namespace, clusterReplicaSet scaling
kube_replicaset_status_replicas_readyreplicaset, namespace, clusterReplicaSet status
kube_statefulset_spec_replicasstatefulset, namespace, clusterStatefulSet scaling
kube_statefulset_status_replicas_readystatefulset, namespace, clusterStatefulSet status

Container Resources

Metric NameLabelsPurpose
kube_pod_container_resource_limitspod, namespace, container, resource, unit, clusterResource allocation tracking
kube_pod_container_resource_requestspod, namespace, container, resource, unit, clusterResource allocation tracking

Kubernetes Resource State Metrics

ConfigMaps

Metric NameLabelsPurpose
kube_configmap_infoconfigmap, namespace, cluster, resource_version, uidConfiguration tracking
kube_configmap_labelsconfigmap, namespace, cluster, label_*ConfigMap relationship detection
kube_configmap_annotationsconfigmap, namespace, cluster, annotation_*ConfigMap metadata relationships
kube_configmap_metadata_resource_versionconfigmap, namespace, clusterDetects changes in ConfigMap metadata

Secrets

Metric NameLabelsPurpose
kube_secret_infosecret, namespace, cluster, type, resource_version, uidSecret tracking
kube_secret_labelssecret, namespace, cluster, label_*Secret relationship detection
kube_secret_annotationssecret, namespace, cluster, annotation_*Secret metadata relationships
kube_secret_metadata_resource_versionsecret, namespace, clusterDetects changes in secret metadata

Persistent Storage

Metric NameLabelsPurpose
kube_persistentvolumeclaim_infopersistentvolumeclaim, namespace, cluster, volumename, storageclass, uidStorage tracking
kube_persistentvolume_infopersistentvolume, cluster, storageclass, uid, host_pathVolume tracking
kube_pod_spec_volumes_persistentvolumeclaim_infopod, namespace, volume, persistentvolumeclaim, clusterPod-storage relationships

Services

Metric NameLabelsPurpose
kube_service_infoservice, namespace, cluster, type, cluster_ip, uidService networking
kube_service_labelsservice, namespace, cluster, label_*Service label selectors for pod targeting
kube_service_annotationsservice, namespace, cluster, annotation_*Service routing and ingress relationships

Ingress

Metric NameLabelsPurpose
kube_ingress_infoingress, namespace, cluster, ingressclass, uidTraffic routing
kube_ingress_pathingress, namespace, cluster, service_name, service_port, host, pathRouting relationships
kube_ingress_labelsingress, namespace, cluster, label_*Ingress routing and controller relationships
kube_ingress_annotationsingress, namespace, cluster, annotation_*Ingress routing rules and TLS configuration
kube_ingress_metadata_resource_versioningress, namespace, clusterDetects changes in Ingress configuration

External Dependencies (Optional)

AWS RDS Discovery

Metric NameLabelsPurpose
aws_rds_database_connections_averageDBInstanceIdentifier, regionDatabase discovery

Label Requirements

Critical Labels

These labels must be present and consistent across metrics:

LabelDescriptionUsed In
clusterKubernetes cluster identifierAll kube-state metrics
namespaceKubernetes namespacePod, Service, ConfigMap, Secret metrics
jobService job identifierService discovery

Configurable Label Mappings

If your metrics use different label names, configure the label mapping:

Standard LabelDefault MappingAlternative Names
jobjobservice_name, application
namespacenamespacek8s_namespace_name
podpodk8s_pod_name
nodenodek8s_node_name
containercontainercontainer_name

Validation

Health Check Queries

Use these Prometheus queries to verify metric availability:

CheckQueryExpected Result
Service Discoverycount by (job) (target_info)> 0 services per job
Kubernetes Nodescount by (cluster) (kube_node_info)> 0 nodes per cluster
Kubernetes Podscount by (cluster) (kube_pod_info)> 0 pods per cluster
ConfigMapscount by (namespace) (kube_configmap_info)≥ 0 per namespace
Servicescount by (namespace) (kube_service_info)≥ 0 per namespace

Missing Metrics Troubleshooting

SymptomLikely CauseSolution
No services in graphMissing target_infoConfigure OpenTelemetry collector
Missing Kubernetes resourceskube-state-metrics not runningDeploy and configure kube-state-metrics
Incomplete relationshipsMissing label/annotation metricsEnable label and annotation collection
Poor relationship detectionInconsistent labelingStandardize resource labels

Integration Requirements

Minimum Versions

ComponentMinimum VersionNotes
kube-state-metricsv2.0+For complete label support
OpenTelemetry Collectorv0.60+For target_info compatibility
Prometheusv2.30+For advanced query features

RBAC Requirements

Ensure kube-state-metrics has read access to:

  • Nodes, Pods, Deployments, ReplicaSets, StatefulSets
  • ConfigMaps, Secrets, Services, Ingresses
  • PersistentVolumes, PersistentVolumeClaims

This metrics configuration will enable comprehensive infrastructure visibility and accurate dependency mapping in your entity graphs.