Bonjour,
J'essaye de sortir les logs de mon cluster kubernetes de test vers la plateforme de logs ovh mais je reste bloqué pour le moment.
J'ai crée une image qui lance fluentd avec un plugin permettant d'envoyer les infos via le gem gelf https://github.com/Graylog2/gelf-rb
J'ai crée un pod qui se charge bien, fluentd récupère bien les logs, le plugin est bien appelé et appel la fonction notify de la gem avec l'objet suivant (en json) :
> {"timestamp":1477915664.0,"_tag":"kubernetes.var.log.containers.fluentd-gelf_default_docker-fluentd-kubernetes-gelf-ea6231fcd00d6c393dec95dd740410605e6af450fccb9c5e3a4668c5c8e55925.log","facility":null,"_stream":"stdout","host":"fluentd-gelf","_version":"1.1","short_message":"2016-10-31 12:07:44 +0000 info]: reading config file path=\"/etc/fluent/fluent.conf\"\n","_X-OVH-TOKEN":"MON TOKEN"}
Le probléme c'est que ça remonte pas du tout dans la partie temps réel alors qu'en appelant la ligne de commande suivante ça fonctionne :slight_smile:
> echo -e '{"timestamp":1477915664.0,"_tag":"kubernetes.var.log.containers.fluentd-gelf_default_docker-fluentd-kubernetes-gelf-ea6231fcd00d6c393dec95dd740410605e6af450fccb9c5e3a4668c5c8e55925.log","facility":null,"_stream":"stdout","host":"fluentd-gelf","_version":"1.1","short_message":"2016-10-31 12:07:44 +0000 [info]: reading config file path=\"/etc/fluent/fluent.conf\"\n","_X-OVH-TOKEN":"MON TOKEN"}\0' | openssl s_client -quiet -no_ign_eof -connect laas.runabove.com:12202
Avez-vous des pistes ? La librairie ne semble pas correctement envoyer les logs mais je n'ai pas d'exception, c'est peut être pas la bonne config gelf que j'utilise ?
J'ai essayer en tcp et udp sur le même port sans sucées.
Voici le github de mon image/pod : [https://github.com/dgoujard/docker-fluentd-kubernetes-gelf-ovh
> kubectl create -f fluentd-pod.yaml --record --validate=false
Logs & Metrics-old - Envoi des logs depuis un cluster kubernetes via fluentd
Related questions
- Evaluer le volume envoyé de logs
10063
28.10.2016 00:07
- [ Metrics ] New release : 2.0
9614
26.06.2017 22:06
- [Metrics] Grafana completely broken (fixed)
7446
02.01.2017 10:44
- Coupures de service ?
7355
29.05.2019 16:10
- Supprimer data/Metrics sur opentsdb
7190
05.03.2018 15:48
- Problème de performances sur la partie metrics
6381
17.01.2019 08:01
- Fluent-bit Parser for logback JSON
5990
04.10.2022 08:38
- [FR] [Metrics] Support du protocole Graphite disponible !
5698
28.12.2017 14:08
- Erreur lors de la commande d'options
5495
10.05.2017 10:53
Hello,
Superbe exemple, merci.
2 pistes:
- Est ce que votre implémentation supporte bien le tls ? Dans le doute, tester TCP 2202 (UDP est d'ailleurs aussi sur ce port).
- Est ce que sur le transport TCP, vous envoyez bien le délimiteur Gelf \0 entre chaque message ?
Merci :grin: j'ai trouvé l'explication je pense, j'utilise le port tcp/tls mais c'est une connexion de type tcp que je lance.
J'ai regarder la gem elle semble faire le \0
Quand je rentre de la promenade en ville je test et si c'est ça je met à jour mon image que vous pourrez utiliser en exemple/tuto je pense que c'est un exemple qui va être utile à d'autres
Ok donc ça marche, c'était un problème de port /protocol.

J'ai eu des soucis de resolution DNS apres mais un reboot de mes VM et c'était bon.
L'image est à jour (ou en cours) j'ai retiré des variables d'environnement dans mon pod car par défaut c'est pour ovh.
Il me reste encore des soucis avec le filter kubernetes_metadata qui devrait remplir des variables sympa dans le log gelf.
Affaire à suivre donc.
Edit: C'est bon c'est fait pour le filter
@dgoujard
J'essaye de faire marcher votre solution en suivant votre repo.
tout ce déploie sans problème.
A la seule différence qu'aucune log n'arrive ds graylog.
voici les logs de l'un des pod :
kubectl --namespace kube-system logs fluentd-gelf-1rctl
2017-03-13 17:13:15 +0000 [info]: reading config file path="/etc/fluent/fluent.conf"
2017-03-13 17:13:15 +0000 [info]: starting fluentd-0.14.8
2017-03-13 17:13:15 +0000 [info]: spawn command to main: /opt/rh/rh-ruby23/root/usr/bin/ruby -Eascii-8bit:ascii-8bit /usr/bin/fluentd --under-supervisor
2017-03-13 17:13:15 +0000 [info]: reading config file path="/etc/fluent/fluent.conf"
2017-03-13 17:13:15 +0000 [info]: starting fluentd-0.14.8 without supervision
2017-03-13 17:13:15 +0000 [info]: gem 'fluent-plugin-forest' version '0.3.3'
2017-03-13 17:13:15 +0000 [info]: gem 'fluent-plugin-kubernetes_metadata_filter' version '0.26.3'
2017-03-13 17:13:15 +0000 [info]: gem 'fluentd' version '0.14.8'
2017-03-13 17:13:15 +0000 [info]: adding filter pattern="kubernetes.**" type="kubernetes_metadata"
2017-03-13 17:13:15 +0000 [info]: adding filter pattern="kubernetes.**" type="record_transformer"
2017-03-13 17:13:15 +0000 [info]: adding match pattern="kubernetes.**" type="copy"
2017-03-13 17:13:15 +0000 [info]: adding source type="tail"
2017-03-13 17:13:16 +0000 [info]: using configuration file:
@type tail
path "/var/log/containers/*.log"
pos_file "/var/log/es-containers.log.pos"
time_format %Y-%m-%dT%H:%M:%S
tag "kubernetes.*"
format json
read_from_head true
@type json
time_format %Y-%m-%dT%H:%M:%S
@type kubernetes_metadata
@type record_transformer
renew_record true
enable_ruby true
keep_keys "facility,stream"
host ${Socket.gethostname}
version 1.1
short_message ${log}
X-OVH-TOKEN XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (edité evidemment)
kubernetes_namespace ${kubernetes["namespace_name"]}
kubernetes_pod ${kubernetes["pod_name"]}
kubernetes_container ${kubernetes["container_name"]}
@type copy
@type "gelf"
host "laas.runabove.com"
port 12202
protocol "tcp"
tls "true"
use_record_host true
flush_interval 5s
flush_mode interval
retry_type exponential_backoff
flush_interval 5s
Pouverz vous m'aider?
Bonjour @ClaireM,
Je n'ai pas de Kubernetes sous la main pour tester votre configuration, mais pourriez-vous changer _laas.runabove.com_ par **discover.logs.ovh.com** (le premier domaine n'étant plus supporté).
Cordialement,
Je confirme c'est ça le problème.

J'ai mis à jour mon image docker et je vais pusher la modif sur le github.
Je vais essayer à nouveau.