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.
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 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:
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.
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.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.