Files

239 lines
9.8 KiB
Go Template

name: {{ $.Metadata.Name }}
services:
{{- range $replicaIdx := until (int $.Spec.TelemetryKeeper.Spec.Cluster.Replicas) }}
{{ $.Metadata.Name }}-telemetrykeeper-{{ $.Spec.TelemetryKeeper.Kind }}-{{ $replicaIdx }}:
container_name: {{ $.Metadata.Name }}-telemetrykeeper-{{ $.Spec.TelemetryKeeper.Kind }}-{{ $replicaIdx }}
image: {{ $.Spec.TelemetryKeeper.Spec.Image }}
networks:
- {{ $.Metadata.Name }}-network
{{- if $.Spec.TelemetryKeeper.Spec.Env }}
environment:
{{- range $key, $value := $.Spec.TelemetryKeeper.Spec.Env }}
- {{ $key }}={{ $value }}
{{- end }}
{{- end }}
volumes:
- {{ $.Metadata.Name }}-telemetrykeeper-{{ $replicaIdx }}-data:/var/lib/clickhouse-keeper
- ./telemetrykeeper/{{ $.Spec.TelemetryKeeper.Kind }}/keeper-{{ $replicaIdx }}.yaml:/etc/clickhouse-keeper/keeper.yaml:ro
entrypoint:
- /usr/bin/clickhouse-keeper
- --config-file=/etc/clickhouse-keeper/keeper.yaml
healthcheck:
test:
- "CMD"
- "clickhouse-keeper-client"
- "-h"
- "localhost"
- "-p"
- "9181"
- "-q"
- "ls"
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
{{- end }}
{{- range $shardIdx := until (int $.Spec.TelemetryStore.Spec.Cluster.Shards) }}
{{- range $replicaIdx := until (int (add 1 (int $.Spec.TelemetryStore.Spec.Cluster.Replicas))) }}
{{ $.Metadata.Name }}-telemetrystore-{{ $.Spec.TelemetryStore.Kind }}-{{ $shardIdx }}-{{ $replicaIdx }}:
container_name: {{ $.Metadata.Name }}-telemetrystore-{{ $.Spec.TelemetryStore.Kind }}-{{ $shardIdx }}-{{ $replicaIdx }}
depends_on:
{{ $.Metadata.Name }}-telemetrystore-{{ $.Spec.TelemetryStore.Kind }}-user-scripts:
condition: service_completed_successfully
{{- range $keeperIdx := until (int $.Spec.TelemetryKeeper.Spec.Cluster.Replicas) }}
{{ $.Metadata.Name }}-telemetrykeeper-{{ $.Spec.TelemetryKeeper.Kind }}-{{ $keeperIdx }}:
condition: service_healthy
{{- end }}
image: {{ $.Spec.TelemetryStore.Spec.Image }}
networks:
- {{ $.Metadata.Name }}-network
environment:
- CLICKHOUSE_SKIP_USER_SETUP=1
- CLICKHOUSE_CONFIG=/etc/clickhouse-server/config.yaml
{{- if $.Spec.TelemetryStore.Spec.Env }}
{{- range $key, $value := $.Spec.TelemetryStore.Spec.Env }}
- {{ $key }}={{ $value }}
{{- end }}
{{- end }}
volumes:
- {{ $.Metadata.Name }}-telemetrystore-{{ $shardIdx }}-{{ $replicaIdx }}-data:/var/lib/clickhouse
- {{ $.Metadata.Name }}-telemetrystore-user-scripts:/var/lib/clickhouse/user_scripts:ro
- ./telemetrystore/{{ $.Spec.TelemetryStore.Kind }}/config-{{ $shardIdx }}-{{ $replicaIdx }}.yaml:/etc/clickhouse-server/config.yaml:ro
- ./telemetrystore/{{ $.Spec.TelemetryStore.Kind }}/functions.yaml:/etc/clickhouse-server/functions.yaml:ro
healthcheck:
test:
- "CMD"
- "wget"
- "--spider"
- "-q"
- "http://localhost:8123/ping"
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
{{- end }}
{{- end }}
{{ $.Metadata.Name }}-telemetrystore-{{ $.Spec.TelemetryStore.Kind }}-user-scripts:
container_name: {{ $.Metadata.Name }}-telemetrystore-{{ $.Spec.TelemetryStore.Kind }}-user-scripts
image: {{ $.Spec.TelemetryStore.Spec.Image }}
networks:
- {{ $.Metadata.Name }}-network
volumes:
- {{ $.Metadata.Name }}-telemetrystore-user-scripts:/var/lib/clickhouse/user_scripts
command:
- bash
- -c
- |-
version="v0.0.1"
node_os=$$(uname -s | tr '[:upper:]' '[:lower:]')
node_arch=$$(uname -m | sed s/aarch64/arm64/ | sed s/x86_64/amd64/)
echo "Fetching histogram-binary for $${node_os}/$${node_arch}"
cd /tmp
wget -O histogram-quantile.tar.gz "https://github.com/Hanzo O11y/o11y/releases/download/histogram-quantile%2F$${version}/histogram-quantile_$${node_os}_$${node_arch}.tar.gz"
tar -xvzf histogram-quantile.tar.gz
mv histogram-quantile /var/lib/clickhouse/user_scripts/histogramQuantile
{{- if ne $.Spec.MetaStore.Kind.String "sqlite" }}
{{- range $replicaIdx := until (int $.Spec.MetaStore.Spec.Cluster.Replicas) }}
{{ $.Metadata.Name }}-metastore-{{ $.Spec.MetaStore.Kind }}-{{ $replicaIdx }}:
container_name: {{ $.Metadata.Name }}-metastore-{{ $.Spec.MetaStore.Kind }}-{{ $replicaIdx }}
image: {{ $.Spec.MetaStore.Spec.Image }}
networks:
- {{ $.Metadata.Name }}-network
{{- if $.Spec.MetaStore.Spec.Env }}
environment:
- POSTGRES_USER=o11y
- POSTGRES_PASSWORD=o11y
- POSTGRES_DB=o11y
volumes:
- {{ $.Metadata.Name }}-metastore-{{ $.Spec.MetaStore.Kind }}-{{ $replicaIdx }}-data:/var/lib/postgresql/data
healthcheck:
test:
- "CMD-SHELL"
- "pg_isready -U o11y -d o11y"
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
{{- end }}
{{- end }}
{{- end }}
{{- $ingesterReplicas := int $.Spec.Ingester.Spec.Cluster.Replicas }}
ingester:
image: {{ $.Spec.Ingester.Spec.Image }}
networks:
{{ $.Metadata.Name }}-network:
aliases:
- {{ $.Metadata.Name }}-ingester
entrypoint:
- /bin/sh
command:
- -c
- |
/signoz-otel-collector migrate sync check &&
/signoz-otel-collector --config=/etc/otel-collector-config.yaml --manager-config=/etc/opamp-config.yaml --copy-path=/var/tmp/collector-config.yaml
volumes:
- ./ingester/ingester.yaml:/etc/otel-collector-config.yaml:ro
- ./ingester/opamp.yaml:/etc/opamp-config.yaml:ro
{{- if eq $ingesterReplicas 1 }}
ports:
- "4317:4317"
- "4318:4318"
{{- else }}
expose:
- "4317"
- "4318"
{{- end }}
environment:
{{ if and $.Spec.TelemetryStore.Spec.Enabled $.Spec.TelemetryStore.Status.Addresses.TCP (index $.Spec.TelemetryStore.Status.Addresses.TCP 0) }}
- SIGNOZ_OTEL_COLLECTOR_CLICKHOUSE_DSN={{ index $.Spec.TelemetryStore.Status.Addresses.TCP 0 }}
{{ end }}
{{- if $.Spec.Ingester.Spec.Env }}
{{- range $key, $value := $.Spec.Ingester.Spec.Env }}
- {{ $key }}={{ $value }}
{{- end }}
{{- end }}
deploy:
replicas: {{ int $.Spec.Ingester.Spec.Cluster.Replicas }}
{{- range $replicaIdx := until (int $.Spec.O11y.Spec.Cluster.Replicas) }}
{{ $.Metadata.Name }}-o11y:
image: {{ $.Spec.O11y.Spec.Image }}
networks:
- {{ $.Metadata.Name }}-network
{{- if $.Spec.O11y.Spec.Env }}
environment:
- HANZO_ALERTMANAGER_PROVIDER=o11y
- HANZO_TELEMETRYSTORE_CLICKHOUSE_DSN=tcp://{{ $.Metadata.Name }}-telemetrystore-{{ $.Spec.TelemetryStore.Kind }}-0-0:9000
- HANZO_SQLSTORE_SQLITE_PATH=/var/lib/o11y/o11y.db
- DASHBOARDS_PATH=/root/config/dashboards
- STORAGE=clickhouse
- GODEBUG=netdns=go
- TELEMETRY_ENABLED=true
- DEPLOYMENT_TYPE=docker-standalone-amd
- DOT_METRICS_ENABLED=true
ports:
- "{{ add 8080 (mul $replicaIdx 1000) }}:8080"
{{- if eq $.Spec.MetaStore.Kind.String "sqlite" }}
volumes:
- {{ $.Metadata.Name }}-metastore-{{ $.Spec.MetaStore.Kind }}-{{ $replicaIdx }}-data:{{ dir (index $.Spec.O11y.Spec.Env "SIGNOZ_SQLSTORE_SQLITE_PATH") }}
{{- end }}
healthcheck:
test:
- "CMD"
- "wget"
- "--spider"
- "-q"
- "http://localhost:8080/api/v1/health"
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
deploy:
replicas: {{ int $.Spec.O11y.Spec.Cluster.Replicas }}
volumes:
- {{ $.Metadata.Name }}-o11y-{{ $replicaIdx }}-data:/var/lib/o11y
{{- end }}
{{ $.Metadata.Name }}-telemetrystore-migrator:
container_name: {{ $.Metadata.Name }}-telemetrystore-migrator
image: {{ $.Spec.Ingester.Spec.Image }}
networks:
- {{ $.Metadata.Name }}-network
entrypoint:
- /bin/sh
command:
- /o11y-otel-collector migrate bootstrap --clickhouse-dsn tcp://{{ $.Metadata.Name }}-telemetrystore-{{ $.Spec.TelemetryStore.Kind }}-0-0:9000
- /o11y-otel-collector migrate sync up --clickhouse-dsn tcp://{{ $.Metadata.Name }}-telemetrystore-{{ $.Spec.TelemetryStore.Kind }}-0-0:9000
- /o11y-otel-collector migrate async up --clickhouse-dsn tcp://{{ $.Metadata.Name }}-telemetrystore-{{ $.Spec.TelemetryStore.Kind }}-0-0:9000
depends_on:
{{- range $shardIdx := $.Spec.TelemetryStore.Spec.Cluster.Shards }}
{{- range $replicaIdx := add $.Spec.TelemetryStore.Spec.Cluster.Replicas 1 }}
{{ $.Metadata.Name }}-telemetrystore-{{ $.Spec.TelemetryStore.Kind }}-{{ $shardIdx }}-{{ $replicaIdx }}:
condition: service_healthy
{{- end }}
{{- end }}
{{- end }}
networks:
{{ $.Metadata.Name }}-network:
name: {{ $.Metadata.Name }}-network
volumes:
{{- range $replicaIdx := until (int $.Spec.TelemetryKeeper.Spec.Cluster.Replicas) }}
{{ $.Metadata.Name }}-telemetrykeeper-{{ $replicaIdx }}-data:
name: {{ $.Metadata.Name }}-telemetrykeeper-{{ $replicaIdx }}-data
{{- end }}
{{- range $shardIdx := until (int $.Spec.TelemetryStore.Spec.Cluster.Shards) }}
{{- range $replicaIdx := until (int (add 1 (int $.Spec.TelemetryStore.Spec.Cluster.Replicas))) }}
{{ $.Metadata.Name }}-telemetrystore-{{ $shardIdx }}-{{ $replicaIdx }}-data:
name: {{ $.Metadata.Name }}-telemetrystore-{{ $shardIdx }}-{{ $replicaIdx }}-data
{{- end }}
{{- end }}
{{ $.Metadata.Name }}-telemetrystore-user-scripts:
name: {{ $.Metadata.Name }}-telemetrystore-user-scripts
{{- if ne $.Spec.MetaStore.Kind.String "sqlite" }}
{{- range $replicaIdx := until (int $.Spec.MetaStore.Spec.Cluster.Replicas) }}
{{ $.Metadata.Name }}-metastore-{{ $.Spec.MetaStore.Kind }}-{{ $replicaIdx }}-data:
name: {{ $.Metadata.Name }}-metastore-{{ $.Spec.MetaStore.Kind }}-{{ $replicaIdx }}-data
{{- end }}
{{- end }}
{{- range $replicaIdx := until (int $.Spec.O11y.Spec.Cluster.Replicas) }}
{{ $.Metadata.Name }}-o11y-{{ $replicaIdx }}-data:
{{- end }}