Injest logs en JSON dans Container Optimized OS
Je suis en mesure d'injester les journaux dans Google Log Viewer à l'aide de l'agent de journalisation stackdriver de Container Optimized OS au format JSON.
Il injests les journaux en tant que valeur du message, mais pas en tant que charge utile json avec la configuration par défaut
Qu'est-ce que j'ai essayé?
J'ai changé la configuration fluentd dans /etc/stackdriver/logging.config.d/fluentd-lakitu.conf comme suit:
<source>
@type tail
format json
path /var/lib/docker/containers/*/*.log
<parse>
@type json
</parse>
pos_file /var/log/google-fluentd/containers.log.pos
tag reform_contain
read_from_head true
</source>
Mais il est incapable d'envoyer les journaux à la visionneuse de journaux
OS: Système d'exploitation optimisé pour les conteneurs cos-81-12871-1196-0
Réponses
J'ai trouvé ce problème sur l' outil de suivi des problèmes publics de Google, qui traite du même problème que vous avez mentionné dans votre cas d'utilisation. L'équipe produit Google a été informée de cette limitation et elle y travaille. Il vous suffit d'y aller et de cliquer sur l'étoile à côté du titre pour obtenir des mises à jour sur le problème et donner plus de visibilité au problème.
Comme @Kamelia Y l'a mentionné à propos duhttps://issuetracker.google.com/issues/137517429
Il y a une mention sur la solution de contournement utilisée
<filter cos_containers.**>
@type parser
format json
key_name message
reserve_data false
emit_invalid_record_to_error false
</filter>
L'extrait de code ci-dessus analyse les journaux en JSON et les envoie à Cloud Logging.
Dans cette discussion dans Google Groupes sur Stackdriver, nous avons expliqué comment l'utiliser avec startup-script.
Voici l'extrait du script de démarrage.
cp /etc/stackdriver/logging.config.d/fluentd-lakitu.conf /etc/stackdriver/logging.config.d/fluentd-lakitu.conf-save
# Shorter version of the above: cp /etc/stackdriver/logging.config.d/fluentd-lakitu.conf{,-save}
(
head -n -2 /etc/stackdriver/logging.config.d/fluentd-lakitu.conf-save; cat <<EOF
<filter cos_containers.**>
@type parser
format json
key_name message
reserve_data false
emit_invalid_record_to_error false
</filter>
EOF
) > /etc/stackdriver/logging.config.d/fluentd-lakitu.conf
sudo systemctl start stackdriver-logging
Cette image peut être utilisée pour générer des journaux JSON aléatoires. https://hub.docker.com/repository/docker/patelathreya/json-random-logger