Browse Source

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>
pull/4306/merge
Mohamed Yassin Jammeli 2 weeks ago
committed by GitHub
parent
commit
273720ffc6
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 61
      telemetry/DEPLOYMENT.md
  2. 19
      telemetry/README.md
  3. 4
      telemetry/server/Dockerfile

61
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

19
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
```

4
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

Loading…
Cancel
Save