Injest-Protokolle als JSON in Container Optimized OS

Sep 29 2020

Ich kann Protokolle in Google Log Viewer mithilfe des Stackdriver-Protokollierungsagenten von Container Optimized OS als JSON verletzen.

Es verletzt Protokolle als Wert für die Nachricht, jedoch nicht als JSON-Nutzdaten mit der Standardkonfiguration

Was habe ich versucht?

Ich habe die fließende Konfiguration in /etc/stackdriver/logging.config.d/fluentd-lakitu.conf wie folgt geändert:

<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>

Es ist jedoch nicht möglich, Protokolle an den Protokollbetrachter zu senden

Betriebssystem: Containeroptimiertes Betriebssystem cos-81-12871-1196-0

Antworten

4 KameliaY Sep 30 2020 at 01:57

Ich habe dieses Problem im Public Issue Tracker von Google gefunden, in dem das gleiche Problem behandelt wird, das Sie in Ihrem Anwendungsfall erwähnt haben. Das Google-Produktteam wurde über diese Einschränkung informiert und arbeitet daran. Sie müssen nur dorthin gehen und auf den Stern neben dem Titel klicken, um Updates zum Problem zu erhalten und das Problem sichtbarer zu machen.

GamerAtmos Dec 28 2020 at 11:20

Wie @Kamelia Y über die erwähntehttps://issuetracker.google.com/issues/137517429

Es wird eine Erwähnung zur verwendeten Problemumgehung gegeben

<filter cos_containers.**>
@type parser
format json
key_name message
reserve_data false
emit_invalid_record_to_error false
</filter>

Das obige Snippet analysiert die Protokolle in JSON und beeinträchtigt die Cloud-Protokollierung.

In dieser Diskussion in Google Groups on Stackdriver haben wir erläutert, wie es mit dem Startskript verwendet wird.

Hier ist das Snippet für das Startskript.

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

Dieses Bild kann verwendet werden, um zufällige JSON-Protokolle zu generieren. https://hub.docker.com/repository/docker/patelathreya/json-random-logger