Cloud Native 8 min read

How to Deploy and Use SigNoz for Full‑Stack Observability on Kubernetes

This guide walks you through installing the open‑source SigNoz APM platform on Kubernetes, configuring its components, exploring link tracing with a demo app, and setting up logging and alerting for comprehensive cloud‑native observability.

Ops Development Stories
Ops Development Stories
Ops Development Stories
How to Deploy and Use SigNoz for Full‑Stack Observability on Kubernetes

Preface

SigNoz is an open‑source application performance monitoring (APM) tool that provides metrics, tracing, infrastructure monitoring, and log management, similar to a Datalog‑style solution.

Key capabilities include:

Monitoring application metrics such as latency, requests per second, error rate.

Monitoring infrastructure metrics like CPU and memory usage.

Tracing user requests across services.

Setting alerts on metrics.

Finding root causes by following exact traces.

Viewing detailed flame graphs for individual request traces.

SigNoz architecture
SigNoz architecture

SigNoz consists of the following components:

OpenTelemetry Collector : collects telemetry data from services.

ClickHouse : high‑performance columnar OLAP database.

Query Service : API between the frontend and ClickHouse.

Frontend : UI built with ReactJS and TypeScript.

Installation

Prerequisites

Kubernetes >= 1.21

x86/amd64 architecture

helm >= 3.8

Minimum resources: 4 CPU, 8 GB RAM, 30 GB storage

Default StorageClass available

Installation steps

(1) Add the Helm repository

<code>helm repo add signoz https://charts.signoz.io
helm repo update</code>

(2) Create a namespace

<code>kubectl create ns signoz</code>

(3) Deploy SigNoz

<code>helm install sigonz -n signoz signoz/signoz</code>

(4) Verify the deployment

<code># kubectl get po -n signoz
NAME                                 READY   STATUS    RESTARTS   AGE
chi-signoz-clickhouse-cluster-0-0-0 1/1     Running   0          46m
signoz-alertmanager-0                1/1     Running   0          48m
signoz-clickhouse-operator-7d4677bb47-dzbzm 2/2 Running 0 48m
signoz-frontend-67db9bcf9b-l8x5h   1/1     Running   0          48m
... (additional pods) ...</code>

(5) Access the frontend via NodePort (screenshots omitted for brevity).

Link Tracing

Official demo

Deploy the HotROD sample application to explore tracing.

<code># curl -sL https://github.com/SigNoz/signoz/raw/main/sample-apps/hotrod/hotrod-install.sh | HELM_RELEASE=signoz SIGNOZ_NAMESPACE=signoz bash</code>
HELM_RELEASE and SIGNOZ_NAMESPACE should be set according to your environment.

After deployment, run a load generator:

<code>kubectl --namespace sample-application run strzal --image=djbingham/curl \
  --restart='OnFailure' -i --tty --rm --command -- \
  curl -X POST -F 'locust_count=6' -F 'hatch_rate=2' http://locust-master:8089/swarm</code>

The UI shows request chains, flame graphs, and per‑service latency/error panels (images omitted).

Application Integration

SigNoz supports many languages (e.g., Python, Java, Go). For Java, add the OpenTelemetry Java agent and configure the exporter endpoint:

<code>java -javaagent:/path/opentelemetry-javaagent.jar \
    -Dotel.exporter.otlp.endpoint=http://<IP of SigNoz Backend>:4317 \
    -Dotel.resource.attributes=service.name=<app_name> \
    -jar <myapp>.jar</code>

Logging

By default SigNoz collects Kubernetes pod logs. Logs can be filtered, for example by namespace:

Log filtering
Log filtering

The logging configuration resides in

values.yaml

:

<code>k8s-infra:
  presets:
    loggingExporter:
      enabled: false
    logsCollection:
      enabled: true
      include:
        - /var/log/pods/*/*/*.log
      startAt: beginning
      includeFilePath: true
      includeFileName: false
      blacklist:
        enabled: true
        signozLogs: false
        namespaces:
          - kube-system
        pods:
          - hotrod
          - locust
        containers: []
        additionalExclude: []</code>

Alerting

Add a notification channel (e.g., Webhook) and configure alert policies through the UI (screenshots omitted). Once configured, alerts are sent to the chosen endpoint.

cloud nativeAPMObservabilityKubernetesOpenTelemetryHelmSigNoz
Ops Development Stories
Written by

Ops Development Stories

Maintained by a like‑minded team, covering both operations and development. Topics span Linux ops, DevOps toolchain, Kubernetes containerization, monitoring, log collection, network security, and Python or Go development. Team members: Qiao Ke, wanger, Dong Ge, Su Xin, Hua Zai, Zheng Ge, Teacher Xia.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.