houseme 4f347a92c1 feat: integrate event-notifier system with rustfs
- Rename package from rustfs-event-notifier to event-notifier for consistency
- Add shutdown hooks for event notification system in main process
- Handle graceful termination of notification services on server shutdown
- Implement initialization and configuration loading for event notification
- Fix environment variable configuration to properly parse adapter arrays
- Update example code to demonstrate proper configuration usage

This change ensures proper integration between rustfs and the event
notification system, with clean startup and shutdown sequences to prevent
resource leaks during application lifecycle.
2025-04-22 20:49:39 +08:00
2025-03-14 23:26:54 +08:00
2025-04-08 22:32:24 +08:00
2025-04-11 20:53:51 +08:00
2025-04-13 12:55:56 +08:00
2025-04-09 02:41:06 +00:00
2025-04-11 20:53:51 +08:00
2025-04-11 20:53:51 +08:00
2025-04-21 15:27:58 +08:00
2025-04-22 09:14:09 +08:00
2025-03-14 23:26:54 +08:00
2025-04-03 01:59:28 +08:00
2025-03-11 16:12:34 +08:00
2024-07-01 19:33:20 +08:00
2025-03-20 01:16:55 +08:00

How to compile RustFS

Must package Version download link
Rust 1.8.5 https://www.rust-lang.org/tools/install
protoc 30.2 protoc-30.2-linux-x86_64.zip
flatc 24.0+ Linux.flatc.binary.g++-13.zip

Download Links:

https://github.com/google/flatbuffers/releases/download/v25.2.10/Linux.flatc.binary.g++-13.zip

https://github.com/protocolbuffers/protobuf/releases/download/v30.2/protoc-30.2-linux-x86_64.zip

generate protobuf code:

cargo run --bin gproto

Or use Docker:

- uses: arduino/setup-protoc@v3
  with:
  version: "30.2"

- uses: Nugine/setup-flatc@v1
  with:
  version: "25.2.10"

How to add Console web

  1. wget https://dl.rustfs.com/artifacts/console/rustfs-console-latest.zip

  2. mkdir in this repos folder ./rustfs/static

  3. Compile RustFS

Star RustFS

Add Env Information:

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"
# 具体路径修改为配置文件真实路径obs.example.toml 仅供参考 其中`RUSTFS_OBS_CONFIG` 和下面变量二选一
export RUSTFS_OBS_CONFIG="./deploy/config/obs.example.toml"

# 如下变量需要必须参数都有值才可以,以及会覆盖配置文件`obs.example.toml`中的值
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__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

You need replace your real data folder:

./rustfs /data/rustfs

How to deploy the observability stack

The OpenTelemetry Collector offers a vendor-agnostic implementation on how to receive, process, and export telemetry data. It removes the need to run, operate, and maintain multiple agents/collectors in order to support open-source observability data formats (e.g. Jaeger, Prometheus, etc.) sending to one or more open-source or commercial back-ends.

  1. Enter the .docker/observability directory,
  2. Run the following command:
docker-compose -f docker-compose.yml up -d
  1. Access the Grafana dashboard by navigating to http://localhost:3000 in your browser. The default username and password are admin and admin, respectively.

  2. Access the Jaeger dashboard by navigating to http://localhost:16686 in your browser.

  3. Access the Prometheus dashboard by navigating to http://localhost:9090 in your browser.

Create a new Observability configuration file

1. Enter the deploy/config directory,

2. Copy obs.toml.example to obs.toml

3. Modify the obs.toml configuration file

3.1. Modify the endpoint value to the address of the OpenTelemetry Collector
3.2. Modify the service_name value to the name of the service
3.3. Modify the service_version value to the version of the service
3.4. Modify the environment value to the environment of the service
3.5. Modify the meter_interval value to export interval
3.6. Modify the sample_ratio value to the sample ratio
3.7. Modify the use_stdout value to export to stdout
3.8. Modify the logger_level value to the logger level
Languages
Rust 98.1%
Shell 1.5%
Makefile 0.2%
Just 0.1%