Deploying with Helm directly
Follow the steps on this page for instructions to install SigNoz on other Kubernetes Cloud Platform and bare-metal servers with Helm.
Follow the steps on this page to install SigNoz on Kubernetes with Helm.
The SigNoz Helm chart will install the following components into your Kubernetes cluster:
- Query Service (backend service)
- Web UI (frontend)
- ClickHouse (datastore)
- OpenTelemetry collector
- Alertmanager
Prerequisites​
- You must have a Kubernetes cluster
Kubernetes version >=
1.21
x86-64
/amd64
workloads as currentlyarm64
architecture is not supportedYou must have
kubectl
access to your clusterThe following table describes the hardware requirements that are needed to install SigNoz on Kubernetes:
Component Minimal Requirements Recommended Memory 8 GB 16 GB CPU 4 cores 8 cores Storage 30 GB 80 GB
- Suggestion: you can execute the commands below for setting
allowVolumeExpansion
toTrue
for the default storage class definition (this enables PVC resize).
DEFAULT_STORAGE_CLASS=$(kubectl get storageclass -o=jsonpath='{.items[?(@.metadata.annotations.storageclass\.kubernetes\.io/is-default-class=="true")].metadata.name}')
kubectl patch storageclass "$DEFAULT_STORAGE_CLASS" -p '{"allowVolumeExpansion": true}'
info
In case you would like to use your own storage class, you can set storageClass
configuration.
To list storage class in your Kubernetes cluster: kubectl get storageclass
.
Chart configuration​
You can find an overview of the parameters that can be configured during installation under chart configuration.
Install SigNoz on Kubernetes with Helm​
- Add the SigNoz Helm repository to your client with name
signoz
by running the following command:
helm repo add signoz https://charts.signoz.io
- Verify that the repository is accessible to the Helm CLI by entering the following command:
helm repo list
- Use the
kubectl create ns
command to create a new namespace. SigNoz recommends you useplatform
for your new namespace:
kubectl create ns platform
- Run the following command to install the chart with the release name
my-release
and namespaceplatform
:
helm --namespace platform install my-release signoz/signoz
Output:
NAME: my-release
LAST DEPLOYED: Mon May 23 20:34:55 2022
NAMESPACE: platform
STATUS: deployed
REVISION: 1
NOTES:
1. You have just deployed SigNoz cluster:
- frontend version: '0.8.0'
- query-service version: '0.8.0'
- alertmanager version: '0.23.0-0.1'
- otel-collector version: '0.43.0-0.1'
- otel-collector-metrics version: '0.43.0-0.1'
*Note that the above command installs the latest stable version of SigNoz.
(Optional) To install a different version, you can use the --set
flag to specify the version you wish to install. The following example command installs SigNoz version 0.8.0
:
helm --namespace platform install my-release signoz/signoz \
--set frontend.image.tag="0.8.0" \
--set queryService.image.tag="0.8.0"
info
- If you use the
--set
flag, ensure that you specify the same versions for thefrontend
andqueryService
images. Specifying different versions could lead the SigNoz cluster to behave abnormally. - Do not use the
latest
ordevelop
tags in a production environment. Specifying these tags could install different versions of SigNoz on your cluster and could lead to data loss.
- You can access SigNoz by setting up port forwarding and browsing to the specified port. The following
kubectl port-forward
example command forwards all connections made tolocalhost:3301
to<signoz-frontend-service>:3301
:
export SERVICE_NAME=$(kubectl get svc --namespace platform -l "app.kubernetes.io/component=frontend" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace platform port-forward svc/$SERVICE_NAME 3301:3301
Verify the Installation​
Using the kubectl -n platform get pods
command, monitor the SigNoz deployment process.
Wait for all the pods to be in running state:
kubectl -n platform get pods
Output:
NAME READY STATUS RESTARTS AGE
chi-signoz-cluster-0-0-0 1/1 Running 0 8m21s
clickhouse-operator-8cff468-n5s99 2/2 Running 0 8m55s
my-release-signoz-alertmanager-0 1/1 Running 0 8m54s
my-release-signoz-frontend-78774f44d7-wl87p 1/1 Running 0 8m55s
my-release-signoz-otel-collector-66c8c7dc9d-d8v5c 1/1 Running 0 8m55s
my-release-signoz-otel-collector-metrics-68bcfd5556-9tkgh 1/1 Running 0 8m55s
my-release-signoz-query-service-0 1/1 Running 0 8m54s
my-release-zookeeper-0 1/1 Running 0 8m54s
(Optional) Install a Sample Application and Generate Tracing Data​
Follow the steps in this section to install a sample application named HotR.O.D, and generate tracing data.
- Use the HotROD install script below to create a
sample-application
namespace and deploy HotROD application on it:
curl -sL https://github.com/SigNoz/signoz/raw/main/sample-apps/hotrod/hotrod-install.sh \
| HELM_RELEASE=my-release SIGNOZ_NAMESPACE=platform bash
- Using the
kubectl -n sample-application get pods
command, monitor the sample application pods. Wait for all the pods to be in running state:
kubectl -n sample-application get pods
Output:
NAME READY STATUS RESTARTS AGE
hotrod-55bd58cc8d-mzxq8 1/1 Running 0 2m
locust-master-b65744bbf-l7v7n 1/1 Running 0 2m
locust-slave-688c86bcb7-ngx7w 1/1 Running 0 2m
- Use the following command to generate load:
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
Browse to
http://localhost:3301
and see the metrics and traces for your sample application.Use the following command to stop load generation:
kubectl -n sample-application run strzal --image=djbingham/curl \
--restart='OnFailure' -i --tty --rm --command -- curl \
http://locust-master:8089/stop
Go to Kubernetes Operate section for detailed instructions.