Injest-Protokolle als JSON in Container Optimized OS
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
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.
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