aboutsummaryrefslogtreecommitdiff
path: root/telemetry
diff options
context:
space:
mode:
authorMohamed Yassin Jammeli <92410596+MohamedYassin-J@users.noreply.github.com>2025-09-18 22:10:01 +0100
committerGitHub <noreply@github.com>2025-09-18 14:10:01 -0700
commit273720ffc6f91a9ae40af7b2b82abcd4fb9f8266 (patch)
tree091adf31a6ad66f66c4754b304a3e4547d75bea5 /telemetry
parentbb3ebac7294206bf1c033222576a891b5353f8c9 (diff)
downloadseaweedfs-273720ffc6f91a9ae40af7b2b82abcd4fb9f8266.tar.xz
seaweedfs-273720ffc6f91a9ae40af7b2b82abcd4fb9f8266.zip
REFACTOR: Update telemetry deployment docs and README for new Docker flow (#7250)
* fix(telemetry): make server build reproducible with proper context and deps * Update telemetry/server/go.mod: go version Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * telemetry/server: optimize Dockerfile (organize cache deps, copy proto); run as non-root * telemetry: update deployment docs for new Docker build context * telemetry: clarify Docker build/run docs and improve Dockerfile caching - DEPLOYMENT.md: specify docker build must run from repo root; provide full docker run example with flags/port mapping - README.md: remove fragile 'cd ..'; keep instruction to run build from repo root - Dockerfile: remove unnecessary pre-copy before 'go mod download' to improve cache utilization --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Diffstat (limited to 'telemetry')
-rw-r--r--telemetry/DEPLOYMENT.md61
-rw-r--r--telemetry/README.md19
-rw-r--r--telemetry/server/Dockerfile4
3 files changed, 65 insertions, 19 deletions
diff --git a/telemetry/DEPLOYMENT.md b/telemetry/DEPLOYMENT.md
index dec46bff0..a1dd54907 100644
--- a/telemetry/DEPLOYMENT.md
+++ b/telemetry/DEPLOYMENT.md
@@ -1,6 +1,6 @@
# SeaweedFS Telemetry Server Deployment
-This document describes how to deploy the SeaweedFS telemetry server to a remote server using GitHub Actions.
+This document describes how to deploy the SeaweedFS telemetry server to a remote server using GitHub Actions, or via Docker.
## Prerequisites
@@ -162,6 +162,48 @@ To deploy updates, manually trigger deployment:
4. Check "Deploy telemetry server to remote server"
5. Click "Run workflow"
+## Docker Deployment
+
+You can build and run the telemetry server using Docker locally or on a remote host.
+
+### Build
+
+- Using Docker Compose (recommended):
+
+```bash
+docker compose -f telemetry/docker-compose.yml build telemetry-server
+```
+
+- Using docker build directly (from the repository root):
+
+```bash
+docker build -t seaweedfs-telemetry \
+ -f telemetry/server/Dockerfile \
+ .
+```
+
+### Run
+
+- With Docker Compose:
+
+```bash
+docker compose -f telemetry/docker-compose.yml up -d telemetry-server
+```
+
+- With docker run:
+
+```bash
+docker run -d --name telemetry-server \
+ -p 8080:8080 \
+ seaweedfs-telemetry
+```
+
+Notes:
+
+- The container runs as a non-root user by default.
+- The image listens on port `8080` inside the container. Map it with `-p <host_port>:8080`.
+- You can pass flags to the server by appending them after the image name, e.g. `docker run -d -p 8353:8080 seaweedfs-telemetry -port=8353 -dashboard=false`.
+
## Server Directory Structure
After setup, the remote server will have:
@@ -199,12 +241,19 @@ sudo systemctl start telemetry.service
## Accessing the Service
-After deployment, the telemetry server will be available at:
+After deployment, the telemetry server will be available at (default ports shown; adjust if you override with `-port`):
+
+- Docker default: `8080`
+ - **Dashboard**: `http://your-server:8080`
+ - **API**: `http://your-server:8080/api/*`
+ - **Metrics**: `http://your-server:8080/metrics`
+ - **Health Check**: `http://your-server:8080/health`
-- **Dashboard**: `http://your-server:8353`
-- **API**: `http://your-server:8353/api/*`
-- **Metrics**: `http://your-server:8353/metrics`
-- **Health Check**: `http://your-server:8353/health`
+- Systemd example (if you configured a different port, e.g. `8353`):
+ - **Dashboard**: `http://your-server:8353`
+ - **API**: `http://your-server:8353/api/*`
+ - **Metrics**: `http://your-server:8353/metrics`
+ - **Health Check**: `http://your-server:8353/health`
## Optional: Prometheus and Grafana Integration
diff --git a/telemetry/README.md b/telemetry/README.md
index 8066a0f0d..f2d1f1ccf 100644
--- a/telemetry/README.md
+++ b/telemetry/README.md
@@ -75,11 +75,11 @@ message TelemetryData {
```bash
# Clone and start the complete monitoring stack
git clone https://github.com/seaweedfs/seaweedfs.git
-cd seaweedfs/telemetry
-docker-compose up -d
+cd seaweedfs
+docker compose -f telemetry/docker-compose.yml up -d
# Or run the server directly
-cd server
+cd telemetry/server
go run . -port=8080 -dashboard=true
```
@@ -183,7 +183,9 @@ GET /metrics
version: '3.8'
services:
telemetry-server:
- build: ./server
+ build:
+ context: ../
+ dockerfile: telemetry/server/Dockerfile
ports:
- "8080:8080"
command: ["-port=8080", "-dashboard=true", "-cleanup=24h"]
@@ -208,18 +210,17 @@ services:
```bash
# Deploy the stack
-docker-compose up -d
+docker compose -f telemetry/docker-compose.yml up -d
# Scale telemetry server if needed
-docker-compose up -d --scale telemetry-server=3
+docker compose -f telemetry/docker-compose.yml up -d --scale telemetry-server=3
```
### Server Only
```bash
-# Build and run telemetry server
-cd server
-docker build -t seaweedfs-telemetry .
+# Build and run telemetry server (build from repo root to include all sources)
+docker build -t seaweedfs-telemetry -f telemetry/server/Dockerfile .
docker run -p 8080:8080 seaweedfs-telemetry -port=8080 -dashboard=true
```
diff --git a/telemetry/server/Dockerfile b/telemetry/server/Dockerfile
index 27fc3e86d..76fcb54cc 100644
--- a/telemetry/server/Dockerfile
+++ b/telemetry/server/Dockerfile
@@ -3,10 +3,6 @@ FROM golang:1.25-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
-COPY telemetry/server/go.mod telemetry/server/go.sum ./telemetry/server/
-COPY telemetry/proto/ ./telemetry/proto/
-
-WORKDIR /app/telemetry/server
RUN go mod download
WORKDIR /app