OpenTelemetry
Exportez les journaux de l’OpenTelemetry Collector vers RustFS avec l’exporteur AWS S3.
Ce guide connecte l’OpenTelemetry Collector — le pipeline de télémétrie de la CNCF — à RustFS via l’exporteur awss3 du collecteur. Vous allez exécuter le collecteur contrib avec un récepteur filelog, envoyer les lignes de journal d’un fichier dans le compartiment (bucket) otel-data, puis vérifier les objets partitionnés dans RustFS. Le flux a été validé avec otel/opentelemetry-collector-contrib:0.138.0 et rustfs/rustfs-x86-musl:v2.3.1.
Vous avez besoin de Docker. Ce déploiement est destiné aux tests d’intégration locaux, pas à la production.
Schéma d’architecture
Le récepteur filelog suit la fin du fichier de journal, et l’exporteur awss3 charge (upload) les lots vers le compartiment, partitionnés en préfixes temporels. Les métriques et les traces peuvent être acheminées par le même exporteur, avec leurs propres pipelines.
Créer les fichiers du projet
Créez d’abord le compartiment — l’exporteur ne crée pas les compartiments :
rc alias set rustfs http://<your-rustfs-endpoint>:9000 <your-access-key> <your-secret-key>
rc mb rustfs/otel-dataCréez la configuration du collecteur, en remplaçant les deux valeurs d’identifiants indicatives :
receivers:
filelog:
include: [/var/log/app.log]
start_at: beginning
exporters:
awss3:
s3uploader:
region: us-east-1
s3_bucket: otel-data
endpoint: http://rustfs:9000
s3_force_path_style: true
disable_ssl: true
file_prefix: logs/app
marshaler: body
service:
pipelines:
logs:
receivers: [filelog]
exporters: [awss3]L’exporteur lit les identifiants dans les variables d’environnement standard AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY et AWS_REGION. marshaler: body écrit chaque ligne de journal en texte brut ; omettez-le pour stocker du JSON OTLP à la place. s3_force_path_style et disable_ssl sont requis pour un point de terminaison non AWS en HTTP non chiffré.
Créez le fichier Compose :
services:
collector:
image: otel/opentelemetry-collector-contrib:0.138.0
command: ["--config=/etc/otelcol-contrib/config.yaml"]
environment:
AWS_ACCESS_KEY_ID: <your-access-key>
AWS_SECRET_ACCESS_KEY: <your-secret-key>
AWS_REGION: us-east-1
volumes:
- ./config.yaml:/etc/otelcol-contrib/config.yaml:ro
- ./app.log:/var/log/app.log
networks:
- otel
networks:
otel:Démarrer le collecteur et produire des journaux
Démarrez la pile et ajoutez des lignes au fichier surveillé :
echo "otel demo log line one" > app.log
docker compose up -d
echo "second line after start" >> app.logLe collecteur suit le fichier depuis le début et charge chaque tampon lorsque la partition bascule ; attendez donc environ une minute après la dernière ligne avant de vérifier.
Vérifier les objets dans RustFS
Listez le compartiment :
rc ls rustfs/otel-data/ -rLes enregistrements de journal sont chargés sous des partitions temporelles, avec le préfixe de fichier configuré :
year=2026/month=09/day=21/hour=15/minute=53/logs/applogs_288361608.txtRelisez un objet pour confirmer que les lignes sont arrivées intactes :
rc cat rustfs/otel-data/year=2026/month=09/day=21/hour=15/minute=53/logs/applogs_288361608.txtotel demo log line one
second line after start
Arrêter ou réinitialiser le déploiement
Arrêtez le collecteur en conservant les données :
docker compose downLes objets restent dans le compartiment otel-data. Pour les supprimer, supprimez le compartiment :
rc rb rustfs/otel-data --forceDépannage
has invalid keys au démarrage du collecteur
Le schéma de l’exporteur awss3 diffère selon les versions du collecteur. La version 0.138 imbrique les réglages de chargement sous s3uploader, comme ci-dessus ; la clé du point de terminaison est endpoint (et non s3_endpoint). Les versions plus récentes déplacent ces clés au premier niveau — consultez le README de votre version exacte du collecteur.
Rien n’apparaît dans le compartiment
Vérifiez que les variables d’environnement d’identifiants sont définies sur le conteneur du collecteur, que s3_force_path_style vaut true, et que l’exporteur peut joindre http://rustfs:9000 depuis l’intérieur du réseau Compose. Activez l’exporteur debug sur le même pipeline pour voir si des enregistrements circulent.
Étapes suivantes
- Consultez les notes de compatibilité S3 avant d’adopter d’autres opérations du collecteur.
- Créez des identifiants de production dédiés avec la gestion des clés d’accès.
- Suivez la documentation de l’exporteur AWS S3 pour ajouter des pipelines de métriques et de traces.