|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +# Copyright (c) 2021-2025 community-scripts ORG |
| 4 | +# Author: Slaviša Arežina (tremor021) |
| 5 | +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE |
| 6 | +# Source: https://signoz.io/ |
| 7 | + |
| 8 | +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" |
| 9 | +color |
| 10 | +verb_ip6 |
| 11 | +catch_errors |
| 12 | +setting_up_container |
| 13 | +network_check |
| 14 | +update_os |
| 15 | + |
| 16 | +msg_info "Installing Dependencies" |
| 17 | +$STD apt-get install -y \ |
| 18 | + apt-transport-https \ |
| 19 | + ca-certificates |
| 20 | +msg_ok "Installed Dependencies" |
| 21 | + |
| 22 | +JAVA_VERSION="21" setup_java |
| 23 | + |
| 24 | +msg_info "Setting up ClickHouse" |
| 25 | +curl -fsSL "https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key" | gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg |
| 26 | +echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg arch=amd64] https://packages.clickhouse.com/deb stable main" >/etc/apt/sources.list.d/clickhouse.list |
| 27 | +$STD apt-get update |
| 28 | +export DEBIAN_FRONTEND=noninteractive |
| 29 | +$STD apt-get install -y clickhouse-server clickhouse-client |
| 30 | +msg_ok "Setup ClickHouse" |
| 31 | + |
| 32 | +msg_info "Setting up Zookeeper" |
| 33 | +curl -fsSL "https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz" -o "$HOME/zookeeper.tar.gz" |
| 34 | +tar -xzf "$HOME/zookeeper.tar.gz" -C "$HOME" |
| 35 | +mkdir -p /opt/zookeeper |
| 36 | +mkdir -p /var/lib/zookeeper |
| 37 | +mkdir -p /var/log/zookeeper |
| 38 | +cp -r ~/apache-zookeeper-3.8.4-bin/* /opt/zookeeper |
| 39 | + |
| 40 | +cat <<EOF >/opt/zookeeper/conf/zoo.cfg |
| 41 | +tickTime=2000 |
| 42 | +dataDir=/var/lib/zookeeper |
| 43 | +clientPort=2181 |
| 44 | +admin.serverPort=3181 |
| 45 | +EOF |
| 46 | + |
| 47 | +cat <<EOF >/opt/zookeeper/conf/zoo.env |
| 48 | +ZOO_LOG_DIR=/var/log/zookeeper |
| 49 | +EOF |
| 50 | + |
| 51 | +cat <<EOF >/etc/systemd/system/zookeeper.service |
| 52 | +[Unit] |
| 53 | +Description=Zookeeper |
| 54 | +Documentation=http://zookeeper.apache.org |
| 55 | +
|
| 56 | +[Service] |
| 57 | +EnvironmentFile=/opt/zookeeper/conf/zoo.env |
| 58 | +Type=forking |
| 59 | +WorkingDirectory=/opt/zookeeper |
| 60 | +ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg |
| 61 | +ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg |
| 62 | +ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg |
| 63 | +TimeoutSec=30 |
| 64 | +Restart=on-failure |
| 65 | +
|
| 66 | +[Install] |
| 67 | +WantedBy=multi-user.target |
| 68 | +EOF |
| 69 | +systemctl enable -q --now zookeeper |
| 70 | +msg_ok "Setup Zookeeper" |
| 71 | + |
| 72 | +msg_info "Configuring ClickHouse" |
| 73 | +cat <<EOF >/etc/clickhouse-server/config.d/cluster.xml |
| 74 | +<clickhouse replace="true"> |
| 75 | + <distributed_ddl> |
| 76 | + <path>/clickhouse/task_queue/ddl</path> |
| 77 | + </distributed_ddl> |
| 78 | + <remote_servers> |
| 79 | + <cluster> |
| 80 | + <shard> |
| 81 | + <replica> |
| 82 | + <host>127.0.0.1</host> |
| 83 | + <port>9000</port> |
| 84 | + </replica> |
| 85 | + </shard> |
| 86 | + </cluster> |
| 87 | + </remote_servers> |
| 88 | + <zookeeper> |
| 89 | + <node> |
| 90 | + <host>127.0.0.1</host> |
| 91 | + <port>2181</port> |
| 92 | + </node> |
| 93 | + </zookeeper> |
| 94 | + <macros> |
| 95 | + <shard>01</shard> |
| 96 | + <replica>01</replica> |
| 97 | + </macros> |
| 98 | +</clickhouse> |
| 99 | +EOF |
| 100 | +systemctl enable -q --now clickhouse-server |
| 101 | +msg_ok "Configured ClickHouse" |
| 102 | + |
| 103 | +fetch_and_deploy_gh_release "signoz-schema-migrator" "SigNoz/signoz-otel-collector" "prebuild" "latest" "/opt/signoz-schema-migrator" "signoz-schema-migrator_linux_amd64.tar.gz" |
| 104 | + |
| 105 | +msg_info "Running ClickHouse migrations" |
| 106 | +cd /opt/signoz-schema-migrator/bin |
| 107 | +$STD ./signoz-schema-migrator sync --dsn="tcp://localhost:9000?password=" --replication=true --up= |
| 108 | +$STD ./signoz-schema-migrator async --dsn="tcp://localhost:9000?password=" --replication=true --up= |
| 109 | +msg_ok "ClickHouse Migrations Completed" |
| 110 | + |
| 111 | +fetch_and_deploy_gh_release "signoz" "SigNoz/signoz" "prebuild" "latest" "/opt/signoz" "signoz-community_linux_amd64.tar.gz" |
| 112 | + |
| 113 | +msg_info "Setting up SigNoz" |
| 114 | +mkdir -p /var/lib/signoz |
| 115 | +cat <<EOF >/opt/signoz/conf/systemd.env |
| 116 | +SIGNOZ_INSTRUMENTATION_LOGS_LEVEL=info |
| 117 | +INVITE_EMAIL_TEMPLATE=/opt/signoz/templates/invitation_email_template.html |
| 118 | +SIGNOZ_SQLSTORE_SQLITE_PATH=/var/lib/signoz/signoz.db |
| 119 | +SIGNOZ_WEB_ENABLED=true |
| 120 | +SIGNOZ_WEB_DIRECTORY=/opt/signoz/web |
| 121 | +SIGNOZ_JWT_SECRET=secret |
| 122 | +SIGNOZ_ALERTMANAGER_PROVIDER=signoz |
| 123 | +SIGNOZ_TELEMETRYSTORE_PROVIDER=clickhouse |
| 124 | +SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN=tcp://localhost:9000?password= |
| 125 | +DOT_METRICS_ENABLED=true |
| 126 | +EOF |
| 127 | + |
| 128 | +cat <<EOF >/etc/systemd/system/signoz.service |
| 129 | +[Unit] |
| 130 | +Description=SigNoz |
| 131 | +Documentation=https://signoz.io/docs |
| 132 | +After=clickhouse-server.service |
| 133 | +
|
| 134 | +[Service] |
| 135 | +Type=simple |
| 136 | +KillMode=mixed |
| 137 | +Restart=on-failure |
| 138 | +WorkingDirectory=/opt/signoz |
| 139 | +EnvironmentFile=/opt/signoz/conf/systemd.env |
| 140 | +ExecStart=/opt/signoz/bin/signoz server |
| 141 | +
|
| 142 | +[Install] |
| 143 | +WantedBy=multi-user.target |
| 144 | +EOF |
| 145 | +systemctl enable -q --now signoz |
| 146 | +msg_ok "Setup Signoz" |
| 147 | + |
| 148 | +fetch_and_deploy_gh_release "signoz-otel-collector" "SigNoz/signoz-otel-collector" "prebuild" "latest" "/opt/signoz-otel-collector" "signoz-otel-collector_linux_amd64.tar.gz" |
| 149 | + |
| 150 | +msg_info "Setting up SigNoz OTel Collector" |
| 151 | +mkdir -p /var/lib/signoz-otel-collector |
| 152 | +cat <<EOF >/opt/signoz-otel-collector/conf/config.yaml |
| 153 | +receivers: |
| 154 | + otlp: |
| 155 | + protocols: |
| 156 | + grpc: |
| 157 | + endpoint: 0.0.0.0:4317 |
| 158 | + max_recv_msg_size_mib: 16 |
| 159 | + http: |
| 160 | + endpoint: 0.0.0.0:4318 |
| 161 | + jaeger: |
| 162 | + protocols: |
| 163 | + grpc: |
| 164 | + endpoint: 0.0.0.0:14250 |
| 165 | + thrift_http: |
| 166 | + endpoint: 0.0.0.0:14268 |
| 167 | + httplogreceiver/heroku: |
| 168 | + endpoint: 0.0.0.0:8081 |
| 169 | + source: heroku |
| 170 | + httplogreceiver/json: |
| 171 | + endpoint: 0.0.0.0:8082 |
| 172 | + source: json |
| 173 | +processors: |
| 174 | + batch: |
| 175 | + send_batch_size: 50000 |
| 176 | + timeout: 1s |
| 177 | + signozspanmetrics/delta: |
| 178 | + metrics_exporter: signozclickhousemetrics |
| 179 | + latency_histogram_buckets: [100us, 1ms, 2ms, 6ms, 10ms, 50ms, 100ms, 250ms, 500ms, 1000ms, 1400ms, 2000ms, 5s, 10s, 20s, 40s, 60s] |
| 180 | + dimensions_cache_size: 100000 |
| 181 | + dimensions: |
| 182 | + - name: service.namespace |
| 183 | + default: default |
| 184 | + - name: deployment.environment |
| 185 | + default: default |
| 186 | + - name: signoz.collector.id |
| 187 | + aggregation_temporality: AGGREGATION_TEMPORALITY_DELTA |
| 188 | +extensions: |
| 189 | + health_check: |
| 190 | + endpoint: 0.0.0.0:13133 |
| 191 | + zpages: |
| 192 | + endpoint: localhost:55679 |
| 193 | + pprof: |
| 194 | + endpoint: localhost:1777 |
| 195 | +exporters: |
| 196 | + clickhousetraces: |
| 197 | + datasource: tcp://localhost:9000/signoz_traces?password= |
| 198 | + use_new_schema: true |
| 199 | + signozclickhousemetrics: |
| 200 | + dsn: tcp://localhost:9000/signoz_metrics?password= |
| 201 | + timeout: 45s |
| 202 | + clickhouselogsexporter: |
| 203 | + dsn: tcp://localhost:9000/signoz_logs?password= |
| 204 | + timeout: 10s |
| 205 | + use_new_schema: true |
| 206 | + metadataexporter: |
| 207 | + dsn: tcp://localhost:9000/signoz_metadata?password= |
| 208 | + timeout: 10s |
| 209 | + tenant_id: default |
| 210 | + cache: |
| 211 | + provider: in_memory |
| 212 | +service: |
| 213 | + telemetry: |
| 214 | + logs: |
| 215 | + encoding: json |
| 216 | + extensions: [health_check, zpages, pprof] |
| 217 | + pipelines: |
| 218 | + traces: |
| 219 | + receivers: [otlp, jaeger] |
| 220 | + processors: [signozspanmetrics/delta, batch] |
| 221 | + exporters: [clickhousetraces, metadataexporter] |
| 222 | + metrics: |
| 223 | + receivers: [otlp] |
| 224 | + processors: [batch] |
| 225 | + exporters: [metadataexporter, signozclickhousemetrics] |
| 226 | + logs: |
| 227 | + receivers: [otlp, httplogreceiver/heroku, httplogreceiver/json] |
| 228 | + processors: [batch] |
| 229 | + exporters: [clickhouselogsexporter, metadataexporter] |
| 230 | +EOF |
| 231 | + |
| 232 | +cat <<EOF >/opt/signoz-otel-collector/conf/opamp.yaml |
| 233 | +server_endpoint: ws://127.0.0.1:4320/v1/opamp |
| 234 | +EOF |
| 235 | + |
| 236 | +cat <<EOF >/etc/systemd/system/signoz-otel-collector.service |
| 237 | +[Unit] |
| 238 | +Description=SigNoz OTel Collector |
| 239 | +Documentation=https://signoz.io/docs |
| 240 | +After=clickhouse-server.service |
| 241 | +
|
| 242 | +[Service] |
| 243 | +Type=simple |
| 244 | +KillMode=mixed |
| 245 | +Restart=on-failure |
| 246 | +WorkingDirectory=/opt/signoz-otel-collector |
| 247 | +ExecStart=/opt/signoz-otel-collector/bin/signoz-otel-collector --config=/opt/signoz-otel-collector/conf/config.yaml --manager-config=/opt/signoz-otel-collector/conf/opamp.yaml --copy-path=/var/lib/signoz-otel-collector/config.yaml |
| 248 | +
|
| 249 | +[Install] |
| 250 | +WantedBy=multi-user.target |
| 251 | +EOF |
| 252 | +systemctl enable -q --now signoz-otel-collector |
| 253 | + |
| 254 | +motd_ssh |
| 255 | +customize |
| 256 | + |
| 257 | +msg_info "Cleaning up" |
| 258 | +rm -rf ~/zookeeper.tar.gz |
| 259 | +rm -rf ~/apache-zookeeper-3.8.4-bin |
| 260 | +$STD apt-get -y autoremove |
| 261 | +$STD apt-get -y autoclean |
| 262 | +msg_ok "Cleaned" |
0 commit comments