NOFire Edge
Verification
After installation, verify the agent is healthy:-
Check Pod Status:
-
Check Logs:
Look for “Graph published successfully”.
-
Check Metrics:
Port-forward the agent to access metrics:
Visit
http://localhost:8080/metrics.
Metrics Reference
NOFire Edge exposes 13 metrics under theresource_graph_ prefix on port 8080 at /metrics.
DNSTap connection status is not exposed as a Prometheus metric. The DNSTap collector uses internal atomic counters for diagnostics. To verify DNSTap health, check the Edge logs for connection messages and look for
EDGE_TYPE_CAUSAL edges in the graph.Alerts
Publisher Errors
Graph Not Updating
High Update Error Rate
High Graph Processing Latency
Troubleshooting
1. DNSTap Not Connected
Symptoms: NoEDGE_TYPE_CAUSAL edges in the graph, logs show no DNSTap connection messages.
Fix:
- Verify CoreDNS config has the correct Edge IP.
- Check if a NetworkPolicy is blocking traffic from
kube-systemtonofire-systemon port 6000. - Ensure CoreDNS was restarted after config change.
2. Publisher Errors
Symptoms: Logs show “Failed to publish graph”. Fix:- Check outbound internet access.
- Verify API Key is correct.
- Check if the NOFire AI endpoint is reachable (
curl -v https://my.nofire.ai/api/edge). Without a valid API key it returns401— that still proves the endpoint is reachable.
3. High Memory Usage
Symptoms: Pod OOMKilled. Fix:- Increase memory limit in Helm values.
- Reduce
graph.maxPruneAgeto keep the graph smaller.
Edge Proxy
These sections apply when you have on-prem connections deployed alongside Edge.Verification
Check Pod Status
Running state with 1/1 ready.
Check Handshake Logs
Check Health Endpoint
Check Metrics
Metrics Reference
The Edge Proxy exposes 12 metrics under thenofire_proxy_ namespace on port 8081 at /metrics.
Alerts
Stream Disconnected
High Reconnect Rate
Backend Errors
Semaphore Saturation
edgeProxy.stream.maxConcurrent.
Troubleshooting
”authentication failed” in logs
Cause: TheNOFIRE_API_KEY is incorrect or the nofire-credentials secret is missing.
Fix:
“cluster not found” in logs
Cause: TheclusterName in your Helm values does not match any cluster registered in the NOFire dashboard.
Fix: Verify config.kube.clusterName in your values file matches the cluster name shown in the NOFire dashboard.
”dial failed” or repeated reconnections
Cause: The pod cannot reach NOFire at the configuredserverAddress, which must be edge.nofire.ai:443.
Fix: The Edge Proxy image is distroless and has no shell, so run the probes from a throwaway pod in the same namespace:
nslookup and curl works — substitute one from your own registry if
Docker Hub is not reachable or your PodSecurity policy blocks the pod.
A healthy endpoint resolves and returns 200 application/grpc http/2. Anything else — a
text/html content type, or http/1.1 — means the address is not terminating gRPC.
Check that outbound TCP 443 is allowed through your firewall and network policies.
”PermissionDenied … 403 … content-type text/html”
Symptom: The proxy reconnects in a loop and logs:serverAddress points at an HTTPS endpoint that is not the gRPC endpoint — most often
the dashboard, my.nofire.ai:443. The CDN in front of it rejects content-type: application/grpc
with a 403 HTML page. PermissionDenied here is gRPC’s mapping of HTTP 403, not an
authentication failure: your API key is not the problem, and no NOFire backend code ran.
Fix: Set edgeProxy.stream.serverAddress to edge.nofire.ai:443 and upgrade the release.
”no connector found” for a query
Cause: NOFire sent a query for a connection type that is not configured or is disabled. Fix: CheckonPremConnections in your values file. Ensure the connector has enabled: true (the default) and the type field matches.
”health check request failed” in logs
Cause: The Edge Proxy cannot reach the backend data source, or the credentials are wrong. Fix:“proxy overloaded” responses (HTTP 503)
Cause: More concurrent requests thanmaxConcurrent (default: 10).
Fix: Increase the concurrency limit in your values:
Pod CrashLoopBackOff
Cause: Invalid configuration (missing required fields, bad JSON, invalid log level). Fix:stream.serverAddress, invalid logLevel, connection with enabled: true but no url.
Shared Operations
ServiceMonitor
Whenmonitoring.serviceMonitor.enabled is true in your Helm values, the chart creates ServiceMonitors for both NOFire Edge and the Edge Proxy. This allows Prometheus Operator to automatically scrape the /metrics endpoint of each component.
- Edge: scraped on port
http(8080) at/metrics - Edge Proxy: scraped on port
http(8081) at/metrics(only created whenonPremConnectionsis configured)
Upgrade and Rollback
Both components are managed by the same Helm chart. NOFire Edge is deployed as a Deployment and the Edge Proxy as a Deployment (only created whenonPremConnections is configured).
To upgrade:
The Edge Proxy uses a ConfigMap checksum annotation on its Deployment. Any change to
edgeProxy.* or onPremConnections.* in your Helm values triggers a pod restart on the next helm upgrade. The Edge DaemonSet rolls out automatically when the Helm release is upgraded.The Edge Proxy does not support hot-reload of configuration. A pod restart is required for any configuration change to take effect.

