Kubernetes
Use this page when you run on Kubernetes and want pod logs, node and pod metrics and cluster events in FuseScope, without changing your applications, or when an instrumentation check on the Infrastructure page says a metric or attribute is missing.
The k8s-infra chart, in the same Helm repository, runs OpenTelemetry collectors that
send Kubernetes telemetry to FuseScope:
| Component | Kind | Collects |
|---|---|---|
otel-agent |
DaemonSet | Pod logs, host metrics and kubelet metrics on every node |
otel-deployment |
Deployment | Cluster metrics and Kubernetes events |
Both add Kubernetes attributes (namespace, pod, node, cluster) to the data.
Install
Section titled “Install”global: clusterName: production deploymentEnvironment: production
otelCollectorEndpoint: http://fusescope-otel-collector.fusescope.svc.cluster.local:4318otelInsecure: truehelm repo add fusescope https://fuseone-io.github.io/fusescope-chartshelm install k8s-infra fusescope/k8s-infra -n fusescope -f values-k8s-infra.yamlTo export over gRPC instead, switch exporters and use port 4317:
otelCollectorEndpoint: fusescope-otel-collector.fusescope.svc.cluster.local:4317presets: otlphttpExporter: enabled: false otlpExporter: enabled: trueKey values
Section titled “Key values”| Value | Default | Description |
|---|---|---|
otelCollectorEndpoint |
null |
FuseScope collector endpoint. |
otelInsecure |
true |
Plain-text connection. Set to false for an https:// endpoint. |
global.clusterName |
"" |
Added to every record as k8s.cluster.name. |
global.deploymentEnvironment |
"" |
Added as deployment.environment when not already set. |
presets.logsCollection.enabled |
true |
Pod logs. |
presets.hostMetrics.enabled |
true |
Node CPU, load, memory, disk and more. |
presets.kubeletMetrics.enabled |
true |
Pod and container metrics from the kubelet. |
presets.clusterMetrics.enabled |
true |
Cluster-level object metrics. |
presets.k8sEvents.enabled |
true |
Kubernetes events as logs. |
presets.prometheus.enabled |
false |
Scrape pods annotated with signoz.io/scrape (prefix set by presets.prometheus.annotationsPrefix). |
signoz.io/scrape is an internal name.
All values are in the chart’s
values.yaml.
What each component sends
Section titled “What each component sends”The Infrastructure page checks for the
metrics and attributes below and names the collector component that should produce
each one. Every component is part of the k8s-infra chart and on by default; this
section says which value turns it on, and what to check when a metric is missing.
hostmetrics receiver
Section titled “hostmetrics receiver”Runs in otel-agent on every node and reads the node’s CPU, memory, load, disk,
file system and network: system.cpu.time, system.memory.usage,
system.cpu.load_average.15m, system.filesystem.usage and the process.* metrics.
It feeds the Hosts tab.
- Turned on by
presets.hostMetrics.enabled(defaulttrue). - It reads the node’s file systems through
presets.hostMetrics.rootPath(/hostfs). If CPU and memory arrive butsystem.filesystem.usagedoesn’t, check that the agent pods can mount the host root.
Hosts outside Kubernetes
Section titled “Hosts outside Kubernetes”For a virtual machine or a bare-metal server, run the FuseScope collector (or any
OpenTelemetry Collector) on the host with the hostmetrics receiver and the
resourcedetection processor, and send to FuseScope over OTLP:
receivers: hostmetrics: collection_interval: 30s scrapers: cpu: {} load: {} memory: {} disk: {} filesystem: {} network: {}
processors: resourcedetection: detectors: [env, system] system: hostname_sources: [os]
exporters: otlp: endpoint: fusescope-otel-collector.example.com:4317
service: pipelines: metrics: receivers: [hostmetrics] processors: [resourcedetection] exporters: [otlp]See OTLP endpoints for the endpoint and TLS settings.
kubeletstats receiver
Section titled “kubeletstats receiver”Runs in otel-agent and asks each node’s kubelet for container, pod, node and volume
usage: container.cpu.usage, container.memory.working_set, k8s.pod.cpu.usage,
k8s.pod.memory.working_set, k8s.node.cpu.usage, k8s.node.memory.working_set
and the k8s.volume.* metrics.
- Turned on by
presets.kubeletMetrics.enabled(defaulttrue). - The optional request and limit metrics, such as
k8s.pod.cpu_request_utilizationandk8s.container.memory_limit_utilization, are listed underpresets.kubeletMetrics.metricsand on by default. They only have a value for containers that set CPU or memory requests and limits in their spec. GKE Autopilot clusters don’t expose them. - If nothing arrives, check that the agent’s service account may read the kubelet
API (
nodes/stats); the chart creates that permission.
k8scluster receiver
Section titled “k8scluster receiver”Runs once in otel-deployment and watches the Kubernetes API for the state of
objects: k8s.pod.phase, k8s.container.restarts, k8s.container.ready,
k8s.node.allocatable_cpu, k8s.node.condition_ready, and the desired, current and
ready counts of deployments, daemon sets, stateful sets and jobs.
- Turned on by
presets.clusterMetrics.enabled(defaulttrue). - The optional
k8s.pod.status_reason,k8s.container.status.reasonandk8s.container.status.state, which explain states such asCrashLoopBackOff, are underpresets.clusterMetrics.metricsand on by default.
resourcedetection processor
Section titled “resourcedetection processor”Adds attributes that describe where the data comes from: host.name and os.type on
host metrics, and k8s.cluster.name on everything.
- Turned on by
presets.resourceDetection.enabled(defaulttrue). k8s.cluster.namecomes fromglobal.clusterName. If the check reports it missing, setglobal.clusterNamein your values.
k8sattributes processor
Section titled “k8sattributes processor”Adds the Kubernetes names to metrics, logs and traces: k8s.pod.uid,
k8s.pod.name, k8s.namespace.name, k8s.node.name, k8s.container.name and the
owner (k8s.deployment.name, k8s.statefulset.name, k8s.daemonset.name,
k8s.job.name).
- Turned on by
presets.kubernetesAttributes.enabled(defaulttrue). - It needs permission to read pods, namespaces and replica sets; the chart creates it.
With
presets.kubernetesAttributes.passthrough: truethe agents make no Kubernetes API calls and add no metadata themselves.
Kubernetes events
Section titled “Kubernetes events”presets.k8sEvents.enabled (default true) sends Kubernetes events, such as
Back-off restarting failed container, as logs. They appear on the Events tab of
a pod, node or other object on the Infrastructure page.