diff --git a/public/svgs/signoz.svg b/public/svgs/signoz.svg new file mode 100644 index 000000000..ac47e1c93 --- /dev/null +++ b/public/svgs/signoz.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/templates/compose/signoz.yaml b/templates/compose/signoz.yaml new file mode 100644 index 000000000..42e21790c --- /dev/null +++ b/templates/compose/signoz.yaml @@ -0,0 +1,627 @@ +# documentation: https://signoz.io/docs/introduction/ +# slogan: An observability platform native to OpenTelemetry with logs, traces and metrics. +# tags: telemetry, server, applications, interface, logs, monitoring, traces, metrics +# logo: svgs/signoz.svg +# port: 8080 + +services: + init-clickhouse: + image: clickhouse/clickhouse-server:25.5.6-alpine + 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/SigNoz/signoz/releases/download/histogram-quantile%2F$${version}/histogram-quantile_$${node_os}_$${node_arch}.tar.gz" + tar -xvzf histogram-quantile.tar.gz + mkdir -p /var/lib/clickhouse/user_scripts/histogramQuantile + mv histogram-quantile /var/lib/clickhouse/user_scripts/histogramQuantile + restart: on-failure + exclude_from_hc: true + logging: + options: + max-size: 50m + max-file: "3" + + zookeeper: + image: signoz/zookeeper:3.9.3 + user: root + healthcheck: + test: + - CMD-SHELL + - curl -s -m 2 http://localhost:8080/commands/ruok | grep error | grep null + interval: 30s + timeout: 5s + retries: 3 + logging: + options: + max-size: 50m + max-file: "3" + volumes: + - zookeeper:/bitnami/zookeeper + environment: + - ALLOW_ANONYMOUS_LOGIN=${ZOO_ALLOW_ANONYMOUS_LOGIN:-yes} + - ZOO_AUTOPURGE_INTERVAL=${ZOO_AUTOPURGE_INTERVAL:-1} + - ZOO_ENABLE_PROMETHEUS_METRICS=${ZOO_ENABLE_PROMETHEUS_METRICS:-yes} + - ZOO_PROMETHEUS_METRICS_PORT_NUMBER=${ZOO_PROMETHEUS_METRICS_PORT_NUMBER:-9141} + + clickhouse: + # addding non LTS version due to this fix https://github.com/ClickHouse/ClickHouse/commit/32caf8716352f45c1b617274c7508c86b7d1afab + image: clickhouse/clickhouse-server:25.5.6-alpine + tty: true + depends_on: + init-clickhouse: + condition: service_completed_successfully + zookeeper: + condition: service_healthy + healthcheck: + test: + - CMD + - wget + - --spider + - -q + - 0.0.0.0:8123/ping + interval: 30s + timeout: 5s + retries: 3 + ulimits: + nproc: 65535 + nofile: + soft: 262144 + hard: 262144 + logging: + options: + max-size: 50m + max-file: "3" + environment: + - "CLICKHOUSE_SKIP_USER_SETUP=1" + volumes: + - type: volume + source: clickhouse + target: /var/lib/clickhouse/ + - type: bind + source: ./clickhouse/custom-function.xml + target: /etc/clickhouse-server/custom-function.xml + content: | + + + executable + histogramQuantile + Float64 + + Array(Float64) + buckets + + + Array(Float64) + counts + + + Float64 + quantile + + CSV + ./histogramQuantile + + + - type: bind + source: ./clickhouse/cluster.xml + target: /etc/clickhouse-server/config.d/cluster.xml + content: | + + + + + + zookeeper + 2181 + + + + + + + + + + + + + + + clickhouse + 9000 + + + + + + + + + - type: bind + source: ./clickhouse/users.xml + target: /etc/clickhouse-server/users.xml + content: | + + + + + + + + + + 10000000000 + + + random + + + + + 1 + + + + + + + + + + + + + ::/0 + + + + default + + + default + + + + + + + + + + + + + + 3600 + + + 0 + 0 + 0 + 0 + 0 + + + + + - type: bind + source: ./clickhouse/config.xml + target: /etc/clickhouse-server/config.xml + content: | + + + 4096 + 3 + 100 + 5368709120 + 1000 + 134217728 + 10000 + + *_dictionary.xml + *function.xml + /var/lib/clickhouse/user_scripts/ + 8123 + 9000 + 9004 + 9005 + 9009 + + information + + json + + + + 01 + example01-01-1 + + + /metrics + 9363 + true + true + true + true + + + engine MergeTree + partition by toYYYYMM(finish_date) + order by (finish_date, finish_time_us, trace_id) + + + + hide encrypt/decrypt arguments + ((?:aes_)?(?:encrypt|decrypt)(?:_mysql)?)\s*\(\s*(?:'(?:\\'|.)+'|.*?)\s*\) + \1(???) + + + + false + false + https://6f33034cfe684dd7a3ab9875e57b1c8d@o388870.ingest.sentry.io/5226277 + + + 268435456 + true + + + + + users.xml + + + + /var/lib/clickhouse/access/ + + + default + + + /clickhouse/task_queue/ddl + + + + signoz: + image: signoz/signoz:v0.97.1 + depends_on: + clickhouse: + condition: service_healthy + schema-migrator-sync: + condition: service_completed_successfully + logging: + options: + max-size: 50m + max-file: "3" + command: + - --config=/root/config/prometheus.yml + volumes: + - type: bind + source: ./prometheus.yml + target: /root/config/prometheus.yml + content: | + # my global config + global: + scrape_interval: 5s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + + # Alertmanager configuration + alerting: + alertmanagers: + - static_configs: + - targets: + - alertmanager:9093 + + # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. + rule_files: [] + # - "first_rules.yml" + # - "second_rules.yml" + # - 'alerts.yml' + + # A scrape configuration containing exactly one endpoint to scrape: + # Here it's Prometheus itself. + scrape_configs: [] + + remote_read: + - url: tcp://clickhouse:9000/signoz_metrics + - type: volume + source: sqlite + target: /var/lib/signoz/ + environment: + - SERVICE_URL_SIGNOZ_8080 + - SIGNOZ_JWT_SECRET=${SERVICE_REALBASE64_JWTSECRET} + - SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN=tcp://clickhouse:9000 + - SIGNOZ_SQLSTORE_SQLITE_PATH=/var/lib/signoz/signoz.db + - DASHBOARDS_PATH=/root/config/dashboards + - STORAGE=clickhouse + - GODEBUG=netdns=go + - DEPLOYMENT_TYPE=docker-standalone-amd + - SIGNOZ_STATSREPORTER_ENABLED=${SIGNOZ_STATSREPORTER_ENABLED:-true} + - SIGNOZ_EMAILING_ENABLED=${SIGNOZ_EMAILING_ENABLED:-false} + - SIGNOZ_EMAILING_SMTP_ADDRESS=${SIGNOZ_EMAILING_SMTP_ADDRESS} + - SIGNOZ_EMAILING_SMTP_FROM=${SIGNOZ_EMAILING_SMTP_FROM} + - SIGNOZ_EMAILING_SMTP_AUTH_USERNAME=${SIGNOZ_EMAILING_SMTP_AUTH_USERNAME} + - SIGNOZ_EMAILING_SMTP_AUTH_PASSWORD=${SIGNOZ_EMAILING_SMTP_AUTH_PASSWORD} + - SIGNOZ_ALERTMANAGER_PROVIDER=signoz + - SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__AUTH__PASSWORD=${SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__AUTH__PASSWORD} + - SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__AUTH__USERNAME=${SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__AUTH__USERNAME} + - SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__FROM=${SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__FROM} + - SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__SMARTHOST=${SIGNOZ_ALERTMANAGER_SIGNOZ_GLOBAL_SMTP__SMARTHOST} + - DOT_METRICS_ENABELD=true + healthcheck: + test: + - CMD + - wget + - --spider + - -q + - localhost:8080/api/v1/health + interval: 30s + timeout: 5s + retries: 3 + + otel-collector: + image: signoz/signoz-otel-collector:v0.129.7 + depends_on: + clickhouse: + condition: service_healthy + schema-migrator-sync: + condition: service_completed_successfully + signoz: + condition: service_healthy + logging: + options: + max-size: 50m + max-file: "3" + command: + - --config=/etc/otel-collector-config.yaml + - --manager-config=/etc/manager-config.yaml + - --copy-path=/var/tmp/collector-config.yaml + - --feature-gates=-pkg.translator.prometheus.NormalizeName + volumes: + - type: bind + source: ./otel-collector-config.yaml + target: /etc/otel-collector-config.yaml + content: | + receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 + http: + endpoint: 0.0.0.0:4318 + prometheus: + config: + global: + scrape_interval: 60s + scrape_configs: + - job_name: otel-collector + static_configs: + - targets: + - localhost:8888 + labels: + job_name: otel-collector + processors: + batch: + send_batch_size: 10000 + send_batch_max_size: 11000 + timeout: 10s + resourcedetection: + # Using OTEL_RESOURCE_ATTRIBUTES envvar, env detector adds custom labels. + detectors: [env, system] + timeout: 2s + signozspanmetrics/delta: + metrics_exporter: signozclickhousemetrics + metrics_flush_interval: 60s + latency_histogram_buckets: [100us, 1ms, 2ms, 6ms, 10ms, 50ms, 100ms, 250ms, 500ms, 1000ms, 1400ms, 2000ms, 5s, 10s, 20s, 40s, 60s ] + dimensions_cache_size: 100000 + aggregation_temporality: AGGREGATION_TEMPORALITY_DELTA + enable_exp_histogram: true + dimensions: + - name: service.namespace + default: default + - name: deployment.environment + default: default + # This is added to ensure the uniqueness of the timeseries + # Otherwise, identical timeseries produced by multiple replicas of + # collectors result in incorrect APM metrics + - name: signoz.collector.id + - name: service.version + - name: browser.platform + - name: browser.mobile + - name: k8s.cluster.name + - name: k8s.node.name + - name: k8s.namespace.name + - name: host.name + - name: host.type + - name: container.name + extensions: + health_check: + endpoint: 0.0.0.0:13133 + pprof: + endpoint: 0.0.0.0:1777 + exporters: + clickhousetraces: + datasource: tcp://clickhouse:9000/signoz_traces + low_cardinal_exception_grouping: ${env:LOW_CARDINAL_EXCEPTION_GROUPING} + use_new_schema: true + signozclickhousemetrics: + dsn: tcp://clickhouse:9000/signoz_metrics + clickhouselogsexporter: + dsn: tcp://clickhouse:9000/signoz_logs + timeout: 10s + use_new_schema: true + service: + telemetry: + logs: + encoding: json + extensions: + - health_check + - pprof + pipelines: + traces: + receivers: [otlp] + processors: [signozspanmetrics/delta, batch] + exporters: [clickhousetraces] + metrics: + receivers: [otlp] + processors: [batch] + exporters: [signozclickhousemetrics] + metrics/prometheus: + receivers: [prometheus] + processors: [batch] + exporters: [signozclickhousemetrics] + logs: + receivers: [otlp] + processors: [batch] + exporters: [clickhouselogsexporter] + - type: bind + source: ./otel-collector-opamp-config.yaml + target: /etc/manager-config.yaml + content: | + server_endpoint: ws://signoz:4320/v1/opamp + environment: + - SERVICE_URL_OTELCOLLECTORHTTP_4318 + - OTEL_RESOURCE_ATTRIBUTES=host.name=signoz-host,os.type=linux + - LOW_CARDINAL_EXCEPTION_GROUPING=false + healthcheck: + test: bash -c "exec 6<> /dev/tcp/localhost/13133" + interval: 30s + timeout: 5s + retries: 3 + + schema-migrator-sync: + image: signoz/signoz-schema-migrator:v0.129.7 + command: + - sync + - --dsn=tcp://clickhouse:9000 + - --up= + depends_on: + clickhouse: + condition: service_healthy + restart: on-failure + exclude_from_hc: true + logging: + options: + max-size: 50m + max-file: "3" + + schema-migrator-async: + image: signoz/signoz-schema-migrator:v0.129.7 + depends_on: + clickhouse: + condition: service_healthy + schema-migrator-sync: + condition: service_completed_successfully + restart: on-failure + exclude_from_hc: true + logging: + options: + max-size: 50m + max-file: "3" + command: + - async + - --dsn=tcp://clickhouse:9000 + - --up=