Injest logs en JSON dans Container Optimized OS

Sep 29 2020

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

4 KameliaY Sep 30 2020 at 01:57

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.

GamerAtmos Dec 28 2020 at 11:20

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