Machen Sie Container Logs zu abfragbaren Tabellen.
Jeder Container, den der Daemon ausführt, schreibt ein Log. Fragen Sie alle gleichzeitig ab – mit dem tatsächlichen Namen des Containers, seinem Image und seinem Compose-Dienst, statt mit einem Verzeichnis voller 64-stelliger IDs.
Verwende die Ergebnisse in Excel, Google Sheets, KI-Tools und deinen Apps über die Database REST API.
Jeder Connector-Typ ist im Free-Tarif verfügbar. Starte mit 2 Datenquellen und 1 Agent.
Auf Ihrem Computer lesen, organisieren und abfragen.
Schreibgeschützte Abfragen · ausgehende VerbindungDie Quelldateien bleiben an ihrem Speicherort. Ihre Tools erhalten Abfrageergebnisse.
Query Streams macht aus den json-file-Logs von Docker, den manuell gespeicherten docker logs-Exporten und dem eigenen Server-Log von Portainer Live-SQL-Tabellen, die sich aus Microsoft Excel, Google Sheets, KI-Assistenten über MCP, der REST API und Power BI lesen lassen. Das schwierige Problem, das es löst, ist die Identität: Auf der Festplatte sind diese Dateien nach der Container-ID benannt. Deshalb ordnet der Agent jede Datei wieder dem tatsächlichen Namen des Containers, seinem Image und seinem Compose-Dienst zu, bevor die Zeilen geladen werden. Es wird nichts hochgeladen – der Agent liest die Dateien auf dem Host, und nur Abfrageergebnisse verlassen Ihr Netzwerk.
- Echte Containernamen statt IDs
- Image und Compose-Dienst in jeder Zeile
- stdout und stderr bleiben getrennt
Verbinden Sie Container Logs mit den richtigen Einstellungen.
Lassen Sie die Verbindung über den Network Agent laufen. Dies sind die spezifischen Angaben für Container Logs.
- Ordner
- Das Log-Verzeichnis des Daemons auf dem Container-Host oder ein Ordner mit exportierten Logs
- Quellen
- Docker-json-file-Logs, gespeicherte docker logs-Exporte und das Server-Log von Portainer
- Identität
- Name, Image und Compose-Dienst des Containers werden anhand des Daemons ermittelt. Die Zeilen sind daher nicht über eine 64-stellige ID identifiziert.
- Rotation
- Wird bei der Rotation durch den Daemon weiterverfolgt; für exportierte Dateien werden außerdem zehn benannte Rotationsmuster unterstützt.
- Nicht zugeordnete Zeilen
- Unverändert in events_raw_lines gespeichert und niemals verworfen
- Anmeldedaten
- Keine – der Agent liest die Dateien direkt auf dem Host.
- SQL-Dialekt
- DuckDB – Standard-SQL, ohne dass Sie etwas Containerspezifisches lernen müssen
Der Agent liest die Log-Dateien, die der Daemon bereits geschrieben hat. Er verbindet sich nicht mit Containern, hält den Daemon-Socket nicht für Streaming offen und schreibt oder rotiert diese Dateien niemals selbst. Ein dauerhaft laufender Connector kann daher das Verhalten des Hosts nicht verändern.
Entwickelt für die Funktionsweise von Container Logs.
Die Herausforderung ist die Identität, nicht das Parsen
Der json-file-Treiber von Docker schreibt das Log jedes Containers in ein Verzeichnis, das nach dessen 64-stelliger ID benannt ist. Das JSON zu parsen ist trivial. Herauszufinden, zu welchem Container es gehört, ist es nicht – und genau das macht die Tabelle nutzbar.
- Jede Zeile enthält den tatsächlichen Namen des Containers, sein Image und seinen Compose-Dienst, ermittelt anhand des Daemons und nicht aus dem Pfad abgeleitet.
- Das bedeutet: „Fehler im api-Dienst heute Morgen“ ist eine WHERE-Klausel und keine manuell gepflegte Nachschlagetabelle.
- Auch der Stream bleibt erhalten, sodass stdout und stderr unterscheidbar bleiben, statt in einer einzigen Textspalte zusammengeführt zu werden.
- Bei einem entfernten Container bleiben die bereits erzeugten Zeilen erhalten – die Historie verschwindet nicht mit dem Container.
-- Welche Dienste sind gerade am lautesten
SELECT service, stream, COUNT(*) AS lines
FROM fileset.events
WHERE stream = 'stderr'
GROUP BY service, stream
ORDER BY lines DESCDrei Dinge statt nur eines
Die json-file-Logs des Daemons sind der Hauptanwendungsfall, aber nicht die einzigen Container-Logs, die sich abfragen lassen: Ein manuell gespeicherter docker logs-Export hat ein anderes Format, und Portainer schreibt ein eigenes Server-Log. Für alle drei gibt es Profile. So wählen Sie gezielt aus, was Sie lesen, statt darauf zu hoffen, dass ein Parser mit allem zurechtkommt.
Formate und Verhalten im Detail.
Öffnen Sie die Referenz, die Sie für Container Logs benötigen.
Ein Ordner mit Containerprotokollen wird zu einer Tabelle.
Ein Ordner mit Containerprotokollen wird zu einer Tabelle.
Query Streams liest die Dateien, die der Daemon bereits schreibt, legt das Format fest und stellt typisierte Spalten bereit, in denen neben jeder Zeile der Name des Containers steht. Kein Sidecar, keine Versand-Pipeline, kein zu pflegender Index – und eine Zeile, die der Parser nicht lesen kann, bleibt mit einer Begründung als Zeile erhalten, statt stillschweigend verworfen zu werden.
Rotationen, komprimierte Archive und erneut gelesene Dateien – alles wird verarbeitet
SELECT App, Compose-Service,
zählen(*) AS Linien
VON fileset.events
WHERE Strom = 'stderr'
GROUP BY App, Compose-Service
ORDER BY Linien DESCVerknüpfen Sie es in derselben Abfrage mit Ihrer Anwendungsdatenbank.
Dateien, die der Daemon bereits schreibt, jetzt eine Tabelle, über die Sie Berichte erstellen können.
Zwei Werkzeuge, drei Formate, kein Sidecar
Zwei Werkzeuge, drei Formate, kein Sidecar
Auf jeder Karte sind die genauen Dateien benannt, die Query Streams liest, sowie deren Speicherort. Sie müssen Ihren Logging-Treiber dafür nicht ändern – JSON-Datei ist die Docker-Standardeinstellung, und die Standardeinstellung ist die unterstützte Einstellung.
Unterstützte Containerprotokolle
3 Formate · 2 Tools- Eins
{"log","stream","time"}Umschlag pro Zeile, geschrieben vom Dämon - Der Containername stammt aus den eigenen Daten von Docker
config.v2.jsonneben dem Holzstamm - Bild- und Kompositionsprojekt/-dienst als Spalten
- Normalerweise
/var/lib/docker/containers - Anhänge; nummerierte Drehungen und
.gzfolgte
- Dateien, die Sie gespeichert haben mit
docker logs --timestamps - Ein RFC-3339-Zeitstempel mit Nanosekunden, dann die eigene Zeile des Containers
- Container-Bannerzeilen werden durch Deklaration übersprungen, nicht durch Zufall.
- In welchem Ordner auch immer Sie die Exporte speichern
- Eine Datei pro Dienst; der Name leitet sich vom Dateinamen ab
portainer.logoder die eigene Ausgabe des Containers- Die ANSI-Farbcodes werden vor der Analyse entfernt, daher ist ein Level ein Level.
- Der
Schlüssel=WertDer Rest des Schwanzes wird zu Spalten; der Rest landet inDaten - Auch die anders formatierten Zeilen des eingebetteten Tunnelservers werden gelesen
- Minutengenaue Zeitstempel, gelesen als UTC
Mit jeder Agentenversion werden neue Container-Logformate hinzugefügt. Da sich die Agenten selbst aktualisieren, wird ein später hinzugefügtes Format in Ihrem Connector angezeigt, ohne dass ein Server besucht werden muss.
docker logs Exporte von einem Swarm-Host und das Serverprotokoll von Portainer CE 2.39.1. Vorab ein wichtiger Hinweis: Unter Docker Desktop für Windows und Mac befinden sich die json-file-Protokolle in der virtuellen Maschine, auf die ein als Dienst laufender Agent nicht zugreifen kann. Exportieren Sie sie mit docker logs --timestamps und verwenden Sie das zweite Profil.
Container in jeder Region, Protokolle dort lesen, wo sie liegen
Container in jeder Region, Protokolle gelesen wo sie sitzen
Container laufen selten alle am selben Ort. Ein Host im Büro, ein Swarm-Cluster in einer Cloud-Region, ein einzelner Rechner in einem anderen Land. An jedem Standort läuft ein Network Agent, der die Protokolldateien direkt vor Ort liest und eine ausgehende Verbindung zu Query Streams aufbaut. Aus Sicht Ihrer Firewall ist das eine gewöhnliche ausgehende Verbindung – Sie müssen nichts öffnen und kein VPN einrichten.
docker logs Export pro Dienstleistung
Wählt aus
Drei ausgehende Verbindungen, ein Ort, an dem Sie sie abfragen können – kein eingehender Port, kein VPN, keine Änderung an der Firewall
Ein Agent pro Standort
Ein Agent deckt einen ganzen Standort ab, nicht nur einen einzelnen Ordner: Jedes dort gewünschte Protokollformat erhält einen eigenen File-Set-Connector auf demselben Agent. Ein Agent pro Standort ist der Normalfall. Im Free-Tarif läuft ein einzelner Agent, in den kostenpflichtigen Tarifen sind es mehr.
1 Standort = 1 Agent = viele Konnektoren
Nichts zum Öffnen
Der Agent stellt eine verschlüsselte ausgehende Verbindung her; sowohl die ausgehende Anfrage als auch die zurückkommenden Zeilen werden darüber übertragen. Kein eingehender Port, kein VPN, keine Änderung an der Firewall, die Sie erst beantragen müssen – und die Zugangsdaten bleiben in Ihrem Netzwerk.
eine Verbindung, in beide Richtungen
Eine standortübergreifende Abfrage
Jede Quelle in einem föderierte Abfrage benennt seinen eigenen Agent. So kann eine einzelne Anweisung ein Protokoll in einem Land und ein anderes in einem weiteren Land lesen und ein gemeinsames Ergebnis zurückgeben – oder eines davon mit einer Datenbank verknüpfen. In Business und Enterprise enthalten.
2 Länder → 1 Ergebnismenge
Sie halten sich auf dem Laufenden
Die Agenten aktualisieren sich selbst, sodass ein in einer späteren Version hinzugefügtes Container-Logformat jede Website erreicht, ohne dass sich jemand auf einem Server anmelden und es installieren muss. Deshalb ist die obige Liste eher ein Ausgangspunkt als eine feste Liste.
Neue Formate kommen mit dem Agenten.
Namen, Uhren und Farbcodes
Namen, Uhren und Farbcodes
Ein Container-Log ist keine Textdatei mit einem Datum. Drei Dinge gehen regelmäßig schief, wenn man versucht, ein solches Log als Daten zu behandeln, und jedes dieser Probleme wird hier durch Deklaration und nicht durch Raten gelöst.
Namen, nicht Hex-IDs
Docker benennt jeden Logordner nach der Container-ID, was gruppierte Abfragen unlesbar macht. Query Streams liest den von Docker neben dem Log geschriebenen Eintrag und verwendet den tatsächlichen Namen, wobei die ID als separate Spalte beibehalten wird.
a3f9c1…-json.log → app = shopfront-api
Die Uhr des Daemons
Ein Container, der seinen eigenen Zeitstempel in Epoch-Sekunden ausgibt, landet im Jahr 1970, wenn man ihm glaubt. Als Ereigniszeit gilt der Erfassungszeitpunkt des Daemons; der eigene Zeitstempel des Containers wird als Spalte gespeichert, statt ihm zu vertrauen.
Zeitstempel des Umschlags → event_time
Farbcodes in der Datei
Konsolen-Logger schreiben Terminal-Escape-Sequenzen direkt in das Protokoll. Vor dem Parsen werden sie entfernt, sodass eine Ebene als Ebene und nicht von Escape-Zeichen umschlossen gelesen wird – die ursprünglichen Bytes bleiben unverändert.
Escape-Codes entfernt → level = INF
Nichts zählte doppelt
Jede Datei wird anhand ihrer ersten 4 KB eindeutig identifiziert, sodass eine gedrehte Datei als dieselbe Datei erkannt wird und nicht erneut von oben gelesen werden muss. Ein gleitendes Duplikatfenster erfasst die Überlappung, wenn ein Schreibvorgang den letzten Teil der Datei erneut abspielt.
4-KB-Präfix-Hash · 20.000-Datensatz-Fenster
Die Spalten, die Sie tatsächlich erhalten
Die Spalten, die Sie tatsächlich erhalten
Kein Textblock mit einem danebenstehenden Zeitstempel. Jedes Format wird in typisierte Spalten geparst, nach denen Sie direkt filtern, gruppieren und aggregieren können – und wenn ein Container strukturierte JSON-Daten protokolliert, werden auch seine Felder in Spalten aufgeschlüsselt.
Jede Reihe trägt außerdem Ereigniszeit, der ursprüngliche Zeitstempel, aus dem sie gelesen wurde, und die Datei, aus der sie stammt. Jedes Format ergänzt eine Identitätsspalte – App für JSON-Dateien und Portainer, Container für einen Export – und json-file-Zeilen enthalten zusätzlich Bild, compose_project, compose_service und Container-IDDie Single Nachricht Die Spalte in einem Export ist bewusst vorgesehen: Die eigene Zeile des Containers bleibt vollständig erhalten, statt interpretiert zu werden.
Was dies absichtlich nicht tut
Was dies absichtlich nicht tut
Es handelt sich nicht um eine Live-Ausgabe. Query Streams liest die Dateien so, wie sie sich beim Ausführen der Abfrage auf der Festplatte befinden. Daher wird eine Neustartschleife als Zeilen und nicht als beobachteter Datenstrom angezeigt. Wenn Sie Benachrichtigungen im Subsekundenbereich benötigen, sobald eine Zeile ausgegeben wird, ist eine Log-Pipeline das richtige Werkzeug.
Die Ausgabe eines Containers ist frei formatiert, und daraus ergibt sich eine wichtige Konsequenz, die klar ausgesprochen werden sollte: Was auch immer Ihre Anwendung ausgibt, landet in der Tabelle. Wenn sie ein Token oder die E-Mail-Adresse eines Kunden protokolliert, steht diese Zeichenfolge bereits in der Protokolldatei und erscheint auch in der Spalte. Es gibt keine Header-Zuordnung, mit der Sie Einträge ausschließen können, wie bei einem Webserver-Protokoll – behandeln Sie die resultierende Tabelle mit genau derselben Sorgfalt wie die Datei.
Zwei kleinere Grenzwerte, benannt statt versteckt. docker logs Beim Export bleibt die eigene Zeile des Containers vollständig in einer Nachricht Spalte erhalten; die innere Zeile nach ihrem eigenen Format erneut zu parsen, ist derzeit noch nicht möglich. Und optionale Attribute, die Docker über ein Logging-Tag anhängen kann, werden nur anhand ihrer Form erkannt – im erfassten Korpus wurden sie von keinem Container verwendet. Dieser Pfad ist also zwar vorgesehen, aber nicht nachgewiesen.
Der Rest entspricht dem üblichen Design. Der Agent stellt eine ausgehende Verbindung her und liest Dateien; es wird nichts im Container installiert, nichts wird zurückgeschrieben, der Docker-Socket und die API bleiben unberührt, und der Zugriff ist schreibgeschützt. Die Aufbewahrungsdauer beginnt bei dieser Voreinstellung bei 30 Tagen und kann von Ihnen angepasst werden.
Von der Verbindung zu nützlichen Ergebnissen.
- Installieren Sie den Network Agent auf dem Container-Host, wo er auf das Protokollverzeichnis des Daemons zugreifen kann.
- Verweisen Sie den Connector darauf. Die json-file-Protokolle aller Container werden erfasst; mit Mustern können Sie die Auswahl eingrenzen.
- Der Agent ordnet jedes 64 Zeichen lange Verzeichnis wieder dem zugehörigen Container zu – mit echtem Namen, Image und Compose-Dienst. So sind die Zeilen lesbar, bevor Sie SQL schreiben.
- Jede Zeile wird zu einer Tabellenzeile mit ihrem Stream (stdout oder stderr) und dem Zeitstempel des Daemons; auch die Rotation wird beim Rotieren durch den Daemon berücksichtigt.
- Führen Sie Abfragen aus: Fehler aus allen Containern auf einmal, einen einzelnen Dienst für sich oder ein Vorher und Nachher rund um ein Deployment.
Nutzen Sie Ihre Container-Logs-Ergebnisse.
Eine Verbindung versorgt Ihre Tabellen, Apps und KI-Tools. Erteilen Sie die Berechtigung, eine gespeicherte Abfrage auszuführen; Empfänger sehen die zulässigen Ergebnisse, während SQL und Quell-Login verborgen bleiben.
Für Ihr Team, Ihre Lieferanten und Partner
Übernehmen Sie aktuelle Container-Logs-Ergebnisse direkt in ein Arbeitsblatt und aktualisieren Sie sie bei Bedarf – in Excel für den Desktop, Excel Online oder Microsoft 365.
Excel entdeckenFühren Sie eine gespeicherte Container-Logs-Abfrage über die Seitenleiste aus und übernehmen Sie die Zeilen in das Tabellenblatt. Freigegebene Mitwirkende können sie selbst aktualisieren.
Google Sheets entdeckenStellen Sie eine Frage in einfachem Englisch. Nova kennt Ihre Container-Logs-Tabellen bereits, schreibt und führt SQL aus, erklärt die Antwort und erstellt ein Diagramm – keine Abfrage erforderlich, keine Zugangsdaten müssen weitergegeben werden.
So funktioniert NovaTeilen Sie ein aktuelles Container-Logs-Ergebnis mit beliebigen Personen – Kolleginnen und Kollegen, einem Anbieter oder einem Partner – als speicherbares Lesezeichen für eine Tabelle, die beim Öffnen neu abgefragt wird, auf Smartphone, Tablet oder Desktop. Die Empfänger sehen die Ergebnisse, niemals das SQL oder die Dateien.
So funktioniert der DatenbetrachterFür Apps und Systeme
Veröffentlichen Sie eine Container-Logs-Abfrage als authentifizierten JSON-Endpunkt, den jede Anwendung aufrufen kann, einschließlich OpenAPI-3.1-Spezifikation und sofort verwendbarer Postman-, Insomnia- und Hoppscotch-Sammlungen. Es wird kein Datenbank-Port geöffnet.
REST API erkundenFügen Sie die generierte Power-Query-M-Abfrage in den Power-BI-Editor für erweiterte Abfragen ein. Der Bericht liest dann aktuelle Container-Logs-Ergebnisse über HTTPS – ohne ODBC-Treiber und ohne geöffneten Datenbank-Port.
Power BI erkundenSynchronisieren Sie Container-Logs-Zeilen nach einem Zeitplan mit einer Airtable-Basis oder rufen Sie sie innerhalb eines Airtable-Automatisierungsskripts ab.
Airtable entdeckenSpeisen Sie eine Baserow-Tabelle über den REST-Endpunkt mit Container Logs – selbst gehostet oder in der Baserow-Cloud.
Baserow entdeckenHalten Sie eine SeaTable-Basis mit Container-Logs-Daten aktuell, ohne eine Datei zu exportieren oder die Datenbank offenzulegen.
SeaTable entdeckenÜbertragen Sie Container-Logs-Ergebnisse in ein Smartsheet-Raster, damit Pläne und Berichte die Daten aus dem Quellsystem verwenden und nicht aus dem Export der letzten Woche.
Smartsheet entdeckenBinden Sie eine Anvil-Python-App über den REST-Endpunkt an Container Logs an, statt Datenbankzugangsdaten in die App einzubetten.
Anvil entdeckenFür KI-Tools
Geben Sie einem KI-Assistenten schreibgeschützten Zugriff auf Container Logs und das Schema, das er benötigt, um korrektes SQL zu schreiben – ohne Zugangsdaten im Chat.
MCP entdeckenAn Personen geliefert
Legen Sie eine Container-Logs-Abfrage nach Zeitplan an und lassen Sie die Zeilen an Slack, Discord, per E-Mail oder über einen signierten Webhook zustellen – oder halten Sie die Nachricht zurück, bis eine Zeilenanzahl, ein Schwellenwert oder eine prozentuale Änderung den von Ihnen festgelegten Grenzwert überschreitet.
So funktionieren Benachrichtigungen und BerichteFühren Sie Container Logs mit Ihren übrigen Daten zusammen.
Führen Sie Datenbanken, Business-APIs, Dateien und Protokolle in einer schreibgeschützten Abfrage zusammen. Jeder Connector unterstützt föderierte Abfragen.
Geben Sie Verbindungen und Tabellen an. Query Streams übernimmt die Quellabfragen und führt die Ergebnisse zusammen.
Föderierte Abfragen erkunden– nichts kopiert, nichts zusammengeführt, nichts geplant
SELECT c.region, COUNT(*) AS orders, SUM(i.amount_due) AS invoiced
VON containerlogs.fileset.orders1 f
JOIN pg_crm.public.customers2 c ON c.id = f.customer_id
JOIN Abrechnung.stripe.invoices3 i ON i.customer = c.stripe_id
GROUP BY c.region
ORDER BY in Rechnung gestellte Beschreibung;Verwenden Sie Ihre eigenen Namen für Verbindungen, Schemas, Tabellen und Spalten.
Gilt für die gesamte Connector-Familie.
Jeder Log-Connector stellt außerdem Folgendes bereit:
- events – eine Zeile pro geparster Zeile, mit Zeitstempel, den von der Grammatik benannten Feldern und _source_file, das die Quelldatei angibt.
- events_raw_lines – Zeilen, auf die die Grammatik nicht zutraf, werden unverändert beibehalten statt verworfen, sodass Sie auch zu einem nicht vorhergesehenen Format noch Fragen stellen können.
- files_current und files_events – das aktuelle Inventar und der Prüfpfad: was hinzugekommen ist, rotiert wurde oder verschwunden ist sowie alles, was zurückgehalten wurde, jeweils mit Dateiname und Grund.
- Rotation wird verstanden, nicht umgangen – zehn benannte Rotationsmuster plus nicht rotierte Dateien, sodass das Log von gestern und sein komprimiertes Archiv dieselbe Tabelle sind wie die Dateien von heute.
Gut zu wissen
- Schreibgeschützt und strikt durchgesetzt – jeweils nur eine Anweisung, ausschließlich SELECT und ähnliche Befehle. Ihre Logs werden von uns niemals geschrieben, verschoben, rotiert oder gekürzt.
- Es wird nichts hochgeladen – die Zeilen werden auf Ihrem eigenen Rechner neben dem Agenten analysiert und verschlüsselt zwischengespeichert. Nur das Ergebnis einer Abfrage verlässt Ihr Netzwerk.
- Es werden nur neue Bytes gelesen – der Agent setzt in jeder Datei dort fort, wo er aufgehört hat, statt sie erneut einzulesen. So verursacht ein stark ausgelastetes Log nicht jeden Tag mehr Aufwand.
- Der SQL-Dialekt ist DuckDB – dieselbe SQL-Sprache, die Sie auch für jeden anderen Connector verwenden würden.
Fragen zu Container Logs
Wo kann ich Abfrageergebnisse aus Container Logs verwenden?
Verwenden Sie Ergebnisse aus Container Logs in Excel, Google Sheets und im Data Viewer, in Ihren Apps über die Database REST API sowie in KI-Tools über MCP oder Nova. Gespeicherte Ergebnisse speisen außerdem unterstützte Ziele für Automatisierungen, Berichte und Warnmeldungen. Die verfügbaren Ziele und Kontingente hängen von Ihrem Tarif ab.
Muss ich für Container Logs einen eingehenden Port öffnen?
Nein. Installieren Sie den Network Agent auf einem Rechner, der Container Logs erreichen kann. Der Agent verbindet sich ausgehend mit Query Streams; ein eingehender Port oder VPN ist nicht erforderlich. Ihre Quelle muss dem Agent-Rechner gemäß ihren eigenen Zugriffsregeln weiterhin eine Verbindung erlauben.
Werden meine Container-Logs-Dateien hochgeladen?
Der Network Agent liest Dateien an ihrem Speicherort und speichert seinen Cache auf dem Agent-Computer. Quelldateien werden weder hochgeladen noch verschoben oder umgeschrieben. Nur angeforderte Abfrageergebnisse verlassen Ihr Netzwerk über die verschlüsselte ausgehende Verbindung.
Was benötige ich, um Container Logs zu verbinden?
Ordner: Das Protokollverzeichnis des Daemons auf dem Container-Host oder ein Ordner mit exportierten Protokollen. Quellen: Docker-json-file-Protokolle, gespeicherte Exporte von docker logs und das Serverprotokoll von Portainer. Identität: Containername, Image und Compose-Service werden vom Daemon aufgelöst, sodass Zeilen nicht über eine 64 Zeichen lange ID identifiziert werden. Rotation: Wird verfolgt, wenn der Daemon rotiert, zusätzlich zu den zehn benannten Rotationsmustern für exportierte Dateien
Kann ich Container Logs mit anderen verbundenen Quellen verknüpfen?
Ja. Föderierte Abfragen unterstützen alle Connector-Typen, einschließlich Datenbanken, Business-APIs, Dateien und Protokollen. Geben Sie Verbindungen und Tabellen in einer einzigen schreibgeschützten Abfrage an. Query Streams übersetzt die Quellabschnitte bei Bedarf und führt die Ergebnisse zusammen. Erfahren Sie, wie föderierte Abfragen funktionieren.
Muss ich meinen Docker-Logging-Treiber ändern?
NEIN. JSON-Datei ist der Standardtreiber von Docker und wird unterstützt. Wenn Sie die Protokollierung nie konfiguriert haben, sind die Dateien bereits vorhanden und haben bereits das richtige Format.
Wenn Sie zu einem anderen Treiber gewechselt haben, docker logs --timestamps Der Export ist der richtige Weg: Er funktioniert unabhängig vom Treiber, da die CLI über den Daemon liest.
Woher kennt das System den Namen des Containers und nicht nur seine ID?
Docker speichert einen eigenen Container-Eintrag im selben Ordner wie das Log. Query Streams liest den Namen aus dieser Datei und verwendet ihn als Identitätsspalte. Image, Compose-Projekt und -Dienst werden als Spalten daneben gespeichert. Die 64-stellige Ordner-ID bleibt erhalten. Container-IDSo geht nichts verloren.
Fehlt dieser Datensatz, ist er nicht lesbar oder enthält er keinen Namen, wird stattdessen der Ordnername verwendet. Bei der Bestandsaufnahme wird gezählt, wie oft das vorkam – ein Fallback wird also als Zahl angezeigt, die Sie einsehen können, und nicht stillschweigend eingesetzt.
Ich nutze Docker Desktop für Windows oder Mac. Funktioniert das?
Nicht direkt in den JSON-Dateiprotokollen. Docker Desktop speichert diese in einer eigenen virtuellen Maschine, und ein als Dienst auf dem Host laufender Agent kann nicht darauf zugreifen.
Der Weg dorthin führt über das Exportprofil: docker logs --timestamps <Container> in eine Datei umgeleitet, in einem beliebigen Ordner, den der Agent lesen kann. Das ist ein eigenständig unterstütztes Format und kein Workaround – es ist derselbe Weg, den viele bereits nutzen, um eine Kopie eines Logs aufzubewahren, nachdem ein Container nicht mehr vorhanden ist.
Ist das Echtzeit?
Die Dateien werden bei Bedarf statt kontinuierlich ausgelesen. Beim Ausführen der Abfrage werden sie so gelesen, wie sie gerade vorliegen. Neue Zeilen erscheinen also, sobald Ihre Container sie schreiben und die Datei eingelesen wird – nicht nach einem festen nächtlichen Zeitplan, aber auch nicht als Live-Tail.
Um eine Frage zu stellen, die sich auf die letzten paar Wochen in jedem Container bezieht, und die Antwort in eine Tabellenkalkulation einzutragen, ist das die nützliche Form und erfordert wesentlich weniger Maschinen als ein Holzstapel.
Wie wäre es mit Kubernetes oder Podman?
Keines der beiden Programme hat derzeit ein eigenes Profil, und wir möchten dies lieber klarstellen, als eine Abdeckung anzudeuten. Was jedoch gilt, ist das Exportformat: Das Profil ist exakt auf die Form abgestimmt. docker logs --timestamps schreibt – einen Zeitstempel im RFC-3339-Nanosekundenformat, ein Leerzeichen und dann die eigene Zeile des Containers; eine Datei pro Service. Mit Tools, die dasselbe Format schreiben, lassen sich diese Dateien ebenfalls einlesen.
Die zuverlässigste Methode, dies für Ihre eigenen Dateien herauszufinden, ist die Testverbindung, die meldet, was sie erkannt hat, bevor Sie irgendetwas festlegen.
Meine Container protokollieren JSON. Werden mir deren Felder als Spalten angezeigt?
Ja, für json-file-Protokolle. Die Hülle des Daemons wird entfernt und das eigene JSON des Containers darin wird zu Spalten abgeflacht – level, logger, message, host und service, sofern vorhanden. Alles, was sich keiner benannten Spalte zuordnen lässt, wird in einem Daten Die Spalte wird nicht verworfen, sodass ein ungewöhnliches Feld weiterhin abfragbar ist.
Der Zeitstempel ist das Einzige, was nicht aus dem JSON des Containers übernommen wird. Er stammt vom Daemon, denn der Zeitstempel einer Anwendung kann beliebig formatiert sein und eine falsche Interpretation würde die Zeile unbemerkt zeitlich falsch einordnen.
Was passiert mit einer Zeile, die der Parser nicht lesen kann?
Sie wird beibehalten, nicht verworfen. Eine Zeile, die nicht dem festgelegten Format entspricht, wird als Rohdatensatz mit einer Begründung gespeichert, sodass ein fehlerhafter Eintrag oder eine unerwartete Formatänderung sichtbar und abfragbar ist und nicht als stille Lücke in Ihren Zahlen erscheint.
Nutzen Sie Container Logs dort, wo die Arbeit stattfindet.
Beginnen Sie mit Free: alle Connector-Typen, 2 Datenquellen und 1 Network Agent. Erweitern Sie die Plan-Kontingente, wenn Ihr Bedarf wächst.

