Prerequisites
- You must have a Kubernetes cluster
- Kubernetes version >=
1.22 - Currently supports
x86-64,amd64andarm64architectures - Helm version >=
3.8 - You must have
kubectlaccess to your cluster The 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: In case you do not have any other storage class which supports volume expansion, you can patch default storage class definition by setting
allowVolumeExpansiontoTrue(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}'
Install SigNoz
Helm Installation
The SigNoz Helm chart will install the following components into your Kubernetes cluster:
- SigNoz
- SigNoz Collector
- Clickhouse
- Zookeeper
Find a storage class to use in your cluster:
kubectl get storageclassCreate a
values.yamlfile that will contain the configuration for the chart. Here is a minimal example to get started:global: storageClass: <storage-class> clickhouse: installCustomStorageClass: trueYou can find an exhaustive list of the parameters here.
Install SigNoz:
helm repo add signoz https://charts.signoz.io helm repo update helm install signoz signoz/signoz \ --namespace <namespace> --create-namespace \ --wait \ --timeout 1h \ -f values.yaml
Test the installation
In another terminal, port-forward signoz on its http port. (By default, signoz exposes its http server on port 8080.)
kubectl port-forward -n <namespace> svc/signoz 8080:8080Run the following command to check the health of signoz:
curl -X GET http://localhost:8080/api/v1/healthIf the installation is successful, you should see the following output:
{"status":"ok"}
(Optional) Install OpenTelemetry Demo
The OpenTelemetry Demo is a microservice-based distributed system intended to illustrate the implementation of OpenTelemetry in a near real-world environment. See more details at OpenTelemetry Demo.
Get the address of the SigNoz collector:
kubectl get -n <namespace> svc/signoz-otel-collectorThis value will be used in the next step to configure the OpenTelemetry Demo to send data to the SigNoz collector.
Create a
values.yamlfile that will contain the configuration for the chart and send it to your SigNoz installation:default: env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: "metadata.labels['app.kubernetes.io/component']" - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: OTEL_RESOURCE_ATTRIBUTES value: 'service.name=$(OTEL_SERVICE_NAME),service.namespace=opentelemetry-demo,service.version={{ .Chart.appVersion }}' - name: OTEL_COLLECTOR_NAME value: signoz-otel-collector.<namespace>.svc.cluster.localNote: The
OTEL_COLLECTOR_NAMEis the address obtained in the previous step.Install OpenTelemetry Demo:
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm repo update helm install otel-demo open-telemetry/opentelemetry-demo -f values.yamlMore details on the installation can be found here.