mirror of
https://github.com/rustfs/rustfs.git
synced 2026-01-17 01:30:33 +00:00
797d7218eed795dde2a88ad79bb1287479eacde6
Added ARM64 macOS (Apple Silicon) build target support to the CI/CD pipeline by: 1. Including `aarch64-apple-darwin` as a new build variant in the build matrix 2. Adding proper exclusion rules to ensure the target only runs on macOS runners 3. Ensuring compatibility with the existing build scripts and packaging process This change enables native builds for Apple Silicon Macs, improving performance for users with M1/M2/M3/M4 processors while maintaining the same artifact organization and deployment process.
RustFS
English Documentation |中文文档
Prerequisites
| Package | Version | Download Link |
|---|---|---|
| Rust | 1.8.5+ | rust-lang.org/tools/install |
| protoc | 30.2+ | protoc-30.2-linux-x86_64.zip |
| flatc | 24.0+ | Linux.flatc.binary.g++-13.zip |
Building RustFS
Generate Protobuf Code
cargo run --bin gproto
Using Docker for Prerequisites
- uses: arduino/setup-protoc@v3
with:
version: "30.2"
- uses: Nugine/setup-flatc@v1
with:
version: "25.2.10"
Adding Console Web UI
- Download the latest console UI:
wget https://dl.rustfs.com/artifacts/console/rustfs-console-latest.zip - Create the static directory:
mkdir -p ./rustfs/static - Extract and compile RustFS:
unzip rustfs-console-latest.zip -d ./rustfs/static cargo build
Running RustFS
Configuration
Set the required environment variables:
# Basic config
export RUSTFS_VOLUMES="./target/volume/test"
export RUSTFS_ADDRESS="0.0.0.0:9000"
export RUSTFS_CONSOLE_ENABLE=true
export RUSTFS_CONSOLE_ADDRESS="0.0.0.0:9001"
# Observability config (option 1: config file)
export RUSTFS_OBS_CONFIG="./deploy/config/obs.toml"
# Observability config (option 2: environment variables)
export RUSTFS__OBSERVABILITY__ENDPOINT=http://localhost:4317
export RUSTFS__OBSERVABILITY__USE_STDOUT=true
export RUSTFS__OBSERVABILITY__SAMPLE_RATIO=2.0
export RUSTFS__OBSERVABILITY__METER_INTERVAL=30
export RUSTFS__OBSERVABILITY__SERVICE_NAME=rustfs
export RUSTFS__OBSERVABILITY__SERVICE_VERSION=0.1.0
export RUSTFS__OBSERVABILITY__ENVIRONMENT=develop
export RUSTFS__OBSERVABILITY__LOGGER_LEVEL=info
export RUSTFS__OBSERVABILITY__LOCAL_LOGGING_ENABLED=true
# Logging sinks
export RUSTFS__SINKS__FILE__ENABLED=true
export RUSTFS__SINKS__FILE__PATH="./deploy/logs/rustfs.log"
export RUSTFS__SINKS__WEBHOOK__ENABLED=false
export RUSTFS__SINKS__WEBHOOK__ENDPOINT=""
export RUSTFS__SINKS__WEBHOOK__AUTH_TOKEN=""
export RUSTFS__SINKS__KAFKA__ENABLED=false
export RUSTFS__SINKS__KAFKA__BOOTSTRAP_SERVERS=""
export RUSTFS__SINKS__KAFKA__TOPIC=""
export RUSTFS__LOGGER__QUEUE_CAPACITY=10
Start the service
./rustfs /data/rustfs
Observability Stack
Deployment
-
Navigate to the observability directory:
cd .docker/observability -
Start the observability stack:
docker compose -f docker-compose.yml up -d
Access Monitoring Dashboards
- Grafana:
http://localhost:3000(credentials:admin/admin) - Jaeger:
http://localhost:16686 - Prometheus:
http://localhost:9090
Configuring Observability
-
Copy the example configuration:
cd deploy/config cp obs.toml.example obs.toml -
Edit
obs.tomlwith the following parameters:
| Parameter | Description | Example |
|---|---|---|
| endpoint | OpenTelemetry Collector address | http://localhost:4317 |
| service_name | Service name | rustfs |
| service_version | Service version | 1.0.0 |
| environment | Runtime environment | production |
| meter_interval | Metrics export interval (seconds) | 30 |
| sample_ratio | Sampling ratio | 1.0 |
| use_stdout | Output to console | true/false |
| logger_level | Log level | info |
| local_logging_enable | stdout | true/false |
Description
Languages
Rust
98.1%
Shell
1.5%
Makefile
0.2%
Just
0.1%