Overview
The kit uses SigNoz for observability, with OpenTelemetry for instrumentation. Thesignoz-k8s-infra component deploys collectors that ship telemetry data to SigNoz Cloud.
Architecture
SigNoz Setup
1
Create a SigNoz Cloud account
Sign up at signoz.io/teams and create a new project.
2
Get your ingestion key
In SigNoz Cloud:
- Go to Settings → Ingestion Settings
- Copy the Ingestion Key
- Note the Region (us or eu)
3
Store the key in AWS Secrets Manager
The secret name follows the pattern Note the JSON format - the key name
{prefix}-{region}-{env}-eks-signoz-apikey. For example:signoz-apikey must match the apiKeyExistingSecretKey value.4
Configure signoz-k8s-infra
The chart uses an umbrella wrapper around the upstream Then configure environment-specific values in
k8s-infra chart.Edit kubernetes/src/infrastructure/signoz-k8s-infra/values.yaml (base configuration):values.staging.yaml:5
Review the ExternalSecret template
The ExternalSecret is already templated at This extracts the secret from AWS Secrets Manager using the path defined in
kubernetes/src/infrastructure/signoz-k8s-infra/templates/ExternalSecret.signoz-apikey.yaml:signozApiKeyAwsSecret.Instrument Your Application
Go Applications
The kit’sgo-backend example includes OpenTelemetry instrumentation:
Environment Variables
Configure the OTel SDK via environment variables in your Deployment:View Telemetry in SigNoz
Traces
- Open SigNoz Cloud dashboard
- Navigate to Traces
- Filter by service name or trace ID
- Click a trace to see the waterfall view
Metrics
- Navigate to Dashboards
- Create custom dashboards or use built-in templates
- Query metrics using PromQL syntax
Logs
- Navigate to Logs
- Filter by service, severity, or search text
- Click a log line to see structured fields
Kubernetes Metrics
The signoz-k8s-infra collector automatically gathers:- Node metrics (CPU, memory, disk)
- Pod metrics (resource usage, restarts)
- Container metrics
- Kubernetes events
Custom Metrics
Instrument your application with custom metrics:Alerts
Configure alerts in SigNoz Cloud:1
Create an alert rule
- Go to Alerts → New Alert
- Define the condition (e.g., error rate > 5%)
- Set severity and notification channels
2
Configure notification channels
Supported channels:
- Slack
- PagerDuty
- Webhooks
Local Development
For local development with Tilt, signoz-k8s-infra is not deployed by default. You can:- Skip observability locally - Traces go nowhere, which is fine for development
-
Run SigNoz locally (optional):
-
Configure the collector endpoint:
Troubleshooting
No traces appearing in SigNoz
-
Verify the collector is running:
-
Check collector logs:
-
Verify the ingestion key secret exists:
-
Check application OTel configuration:
High cardinality warnings
If you see cardinality warnings:- Review your metric labels/attributes
- Avoid high-cardinality values (user IDs, request IDs)
- Use buckets for continuous values
Missing Kubernetes metrics
- Verify the kube-state-metrics pod is running
- Check RBAC permissions for the collector service account
- Review collector configuration for kubelet access
Switching Observability Providers
The kit is designed to work with any OpenTelemetry-compatible backend. To switch from SigNoz:-
Disable signoz-k8s-infra in
kubernetes/src/argocd/infrastructure/values.yaml - Add your provider’s collector (e.g., Datadog, Grafana Cloud)
- Update application OTLP endpoints to point to the new collector
Best Practices
- Use semantic conventions - Follow OpenTelemetry naming standards
- Set service.name - Always identify your service in traces
- Add context - Include request IDs, user IDs (hashed) in spans
- Sample appropriately - Use head-based sampling for high-volume services
- Alert on SLOs - Focus alerts on user-impacting metrics