Docker & Portainer

Maak van Container Logs querybare tabellen.

Elke container die door de daemon wordt uitgevoerd, schrijft een log. Query ze allemaal tegelijk — met de echte naam van de container, de image en de Compose-service, in plaats van een map vol ID's van 64 tekens.

Gebruik de resultaten in Excel, Google Sheets, AI-tools en je apps via de Database REST API.

Elk type connector is beschikbaar in Free. Begin met 2 gegevensbronnen en 1 agent.

ContainerlogboekenBestanden worden gelezen waar ze staan
Binnen je netwerkVraagstromen Netwerk Agent

Lezen, ordenen en bevragen op uw machine.

Alleen-lezenquery's · uitgaande verbinding

Bronbestanden blijven op hun plek. Uw tools ontvangen queryresultaten.

Bron → agent → toegestane resultaten

Query Streams maakt van Docker json-file-logs, handmatig opgeslagen docker logs-exports en het eigen serverlog van Portainer live SQL-tabellen die leesbaar zijn vanuit Microsoft Excel, Google Sheets, AI-assistenten via MCP, de REST API en Power BI. Het lastige probleem dat hiermee wordt opgelost, is de identificatie: deze bestanden hebben op schijf de container-ID als naam. Daarom koppelt de agent elk bestand terug aan de echte naam van de container, de image en de Compose-service voordat de rijen worden ingelezen. Er wordt niets geüpload: de agent leest de bestanden op de host en alleen queryresultaten verlaten uw netwerk.

  • Echte containernamen, geen ID's
  • Image en Compose-service per rij
  • stdout en stderr blijven gescheiden

Verbind Container Logs met de juiste instellingen.

Laat de verbinding via de Network Agent lopen. Dit zijn de instellingen die specifiek zijn voor Container Logs.

Map
De logmap van de daemon op de containerhost, of een map met geëxporteerde logs
Bronnen
Docker json-file-logs, opgeslagen docker logs-exports en het serverlog van Portainer
Identificatie
De containernaam, image en Compose-service worden opgehaald bij de daemon, zodat rijen niet aan een ID van 64 tekens zijn gekoppeld
Rotatie
Wordt gevolgd wanneer de daemon roteert, plus de tien benoemde rotatiepatronen voor geëxporteerde bestanden
Niet-overeenkomende regels
Ongewijzigd bewaard in events_raw_lines, nooit verwijderd
Inloggegevens
Geen — de agent leest de bestanden ter plekke op de host
SQL-dialect
DuckDB — standaard-SQL, u hoeft niets containerspecifieks te leren

De agent leest de logbestanden die de daemon al heeft geschreven. De agent maakt geen verbinding met containers, houdt de daemon-socket niet open voor streaming en schrijft zelf nooit naar die bestanden of roteert ze niet. Een connector die blijft draaien, kan dus niets veranderen aan het gedrag van de host.

Ontworpen voor de werking van Container Logs.

Het lastige is de identificatie, niet het parsen

Docker's json-file-driver schrijft de log van elke container naar een map met de ID van 64 tekens als naam. De JSON parsen is eenvoudig; weten om welke container het gaat niet — en juist dat maakt de tabel bruikbaar.

  • Elke rij bevat de echte naam van de container, de image en de Compose-service. Die worden opgehaald bij de daemon en niet afgeleid uit het pad.
  • Dat betekent dat 'fouten in de api-service vanochtend' een WHERE-clausule is, geen opzoektabel die u zelf moet bijhouden.
  • Ook de stream wordt bijgehouden, zodat stdout en stderr van elkaar te onderscheiden blijven in plaats van te worden samengevoegd tot één tekstkolom.
  • De rijen die een verwijderde container al heeft geproduceerd, blijven behouden — de geschiedenis verdwijnt niet samen met de container.
-- Welke services produceren momenteel de meeste uitvoer
SELECT   service, stream, COUNT(*) AS lines
FROM     fileset.events
WHERE    stream = 'stderr'
GROUP BY service, stream
ORDER BY lines DESC

Drie dingen, niet één

De json-file-logs van de daemon zijn het belangrijkste, maar niet de enige containerlogs die het waard zijn om te queryen: een handmatig opgeslagen docker logs-export heeft een andere indeling en Portainer schrijft een eigen serverlog. Voor alle drie zijn er profielen, zodat u zelf kiest wat u leest in plaats van te hopen dat één parser alles aankan.

De indelingen en het gedrag, in detail.

Open de referentie die u nodig hebt voor Container Logs.

Eén map met containerlogboeken wordt één tabel.
Het grote idee

Eén map met containerlogboeken wordt één tabel.

Query Streams leest de bestanden die de daemon al schrijft, houdt het formaat vast en biedt getypeerde kolommen met naast elke rij de naam van de container. Geen sidecar, geen verzendpipeline en geen index om te onderhouden — en een regel die de parser niet kan lezen, blijft behouden als rij met een reden in plaats van stilzwijgend te worden weggelaten.

Logmapop de host
a3f9c1…-json.logDocker
Dockershopfront-stack_api.logexporteren
portainer.logPortainer

Rotaties, gecomprimeerde archieven en opnieuw gelezen bestanden — geregeld

noisy-containers.sqlSQL
SELECT app, compose_service,
       graaf(*) AS lijnen
VAN   fileset.events
WAAR  stroom = 'stderr'
GROEP DOOR app, compose_service
ORDER BY lijnen DESC
Resultaatstderr door container
appdienstlijnen
winkelfront-apiAPI1,284
winkelmedewerkerwerknemer417
winkelfront-webweb62
winkelgevel-camouflagecache3

Voeg het in dezelfde query toe aan uw applicatiedatabase.

Bestanden die de daemon al schrijft, nu een tabel waarover je kunt rapporteren.

Twee tools, drie formaten, geen bijzaak.
Bronnen

Twee tools, drie formaten, geen bijzaak.

Op elke kaart staan de exacte bestanden die Query Streams leest en waar ze zich bevinden. U hoeft uw loggingdriver niet te wijzigen om dit te laten werken — json-bestand Dit is de standaardinstelling van Docker, en de standaardinstelling is de ondersteunde instelling.

Ondersteunde containerlogboeken

3 formaten · 2 tools
Docker-logo - Query Streams leest Docker JSON-bestandcontainerlogs en Docker-logexports. Dockerjson-bestand logboekstuurprogramma
  • Een {"logstream टैग"} envelop per regel, geschreven door de daemon.
  • De containernaam komt uit Docker's eigen config.v2.json naast de boomstam
  • Het Image and Compose-project/deze dienst rijdt mee als columnisten.
  • Gebruikelijk /var/lib/docker/containers
  • Bijlagen; genummerde rotaties en .gz gevolgd
Docker-logo - Query Streams leest Docker-logs --timestamps exportbestanden Dockerdocker logs exporteren
  • Bestanden die u hebt opgeslagen met docker logs --timestamps
  • Een RFC 3339-tijdstempel met nanoseconden, gevolgd door de eigen regel van de container
  • Containerbannerlijnen worden bewust overgeslagen, niet bij toeval.
  • Elke map waarin je de exportbestanden bewaart.
  • Eén bestand per service; de naam is afgeleid van de bestandsnaam.
Portainer-logo - Query Streams leest de zerolog-consolelogboeken van de Portainer-server. PortainerServerlogboek, Zerolog-console
  • portainer.log of de eigen uitvoer van de container
  • ANSI-kleurcodes worden verwijderd vóór het parsen, dus een niveau is een niveau.
  • De sleutel=waarde De staart wordt kolommen; de rest komt terecht in gegevens
  • Ook de regels met een afwijkende indeling van de ingebedde tunnelserver worden gelezen
  • Tijdstempels met een resolutie van één minuut, afgelezen als UTC.
Meer op komstDit is het begin, niet het eindpunt.

Met elke nieuwe Agent-release worden nieuwe containerlogformaten toegevoegd. Omdat Agents zichzelf automatisch bijwerken, verschijnt een later toegevoegd formaat in uw connector zonder dat iemand een server hoeft te bezoeken.

Alle drie de parsers zijn gebouwd en getest met echte containerlogs — json-file-logs, grote docker logs exports van een Swarm-host en het serverlogboek van Portainer CE 2.39.1. Om alvast te weten: op Docker Desktop voor Windows en Mac staan de json-file-logboeken in de virtuele machine, waar een Agent die als service draait er niet bij kan. Exporteer ze met docker logs --timestamps en gebruik het tweede profiel.
Containers in elke regio, logs lezen waar ze zich bevinden
Overal waar het loopt

Containers in elke regio, logboeken gelezen waar ze zitten

Containers draaien zelden allemaal op één plek. Een host op kantoor, een Swarm-cluster in één cloudregio, een losse machine in een ander land. Op elke locatie draait een Network Agent die de logbestanden leest waar ze zich al bevinden en verbinding maakt met Query Streams. Voor uw firewall is dat een gewone uitgaande verbinding — u hoeft niets open te zetten en geen VPN op te zetten.

Hoofdkantoor Een Docker-host op lokale schijf, json-file-logboeken in de map van de daemon belt uit
eu-west Een zwermcluster, één docker logs export per dienst belt uit
ons-oost Portainer beheert een handvol hosts, met een eigen serverlogboek. belt uit

Drie uitgaande verbindingen, één plek om ze te doorzoeken — geen inkomende poort, geen VPN, geen firewallwijziging

Eén agent per locatie

Een Agent bestrijkt een hele locatie, niet slechts één map: elk logformaat dat u daar wilt gebruiken, krijgt een eigen File Set-connector op diezelfde Agent. Eén Agent per locatie is de gebruikelijke opzet. Het Free-abonnement ondersteunt één Agent; betaalde abonnementen ondersteunen er meer.

1 locatie = 1 agent = veel connectoren

Niets om te openen

De Agent maakt één versleutelde uitgaande verbinding, en zowel het verzoek naar buiten als de rijen terug lopen via die verbinding. Geen inkomende poort, geen VPN en geen firewallwijziging waarvoor u toestemming moet vragen — en inloggegevens blijven binnen uw netwerk.

één verbinding, beide richtingen

Eén zoekopdracht op meerdere sites

Elke bron in een gefedereerde query geeft zijn eigen Agent een naam, zodat één statement een logboek in het ene land en een logboek in een ander land kan lezen en één resultaat kan teruggeven — of een van beide aan een database kan koppelen. Inbegrepen bij Business en Enterprise.

2 landen → 1 resultatenset

Ze houden zichzelf op de hoogte.

Agents werken zichzelf bij, waardoor een containerlogformaat dat in een latere release is toegevoegd, elke site bereikt zonder dat iemand hoeft in te loggen op een server om het te installeren. Dat maakt de bovenstaande lijst een uitgangspunt in plaats van een vaste lijst.

Nieuwe formaten verschijnen met de Agent.

Namen, klokken en kleurcodes
Het moeilijke gedeelte

Namen, klokken en kleurcodes

Een containerlogboek is geen tekstbestand met een datum erop. Er gaan doorgaans drie dingen mis als je een containerlogboek als data probeert te behandelen, en elk van deze problemen wordt hier expliciet beschreven in plaats van op giswerk af te gaan.

Namen, geen hexadecimale ID's

Docker geeft elke logmap een naam die overeenkomt met de container-ID, waardoor een gegroepeerde query onleesbaar wordt. Query Streams leest de record die Docker naast het logbestand schrijft en gebruikt de echte naam, waarbij de ID als een aparte kolom wordt bewaard.

a3f9c1…-json.log → app = shopfront-api

De klok van de daemon

Een container die zijn eigen tijdstempel in epochseconden afdrukt, komt in 1970 terecht als u die gelooft. De gebeurtenistijd is het moment waarop de daemon de regel vastlegde; de eigen tijdstempel van de container wordt als kolom bewaard, maar niet vertrouwd.

tijdstip van de envelop → event_time

Kleurcodes in het bestand

Console-logging schrijft terminal-escape-sequenties rechtstreeks naar het logboek. Die worden vóór het parseren verwijderd, zodat een niveau als een niveau wordt weergegeven en niet als een niveau tussen escape-tekens — de oorspronkelijke bytes blijven ongewijzigd.

escape-codes verwijderd → level = INF

Niets telde dubbel.

Elk bestand wordt geïdentificeerd aan de hand van de eerste 4 KB, waardoor een geroteerd bestand als hetzelfde bestand wordt herkend in plaats van opnieuw vanaf het begin te worden gelezen. Een verschuivend duplicatievenster detecteert de overlapping wanneer een schrijver zijn einde opnieuw afspeelt.

Prefix-hash van 4 KB · venster van 20.000 records

De kolommen die je daadwerkelijk krijgt
Het schema

De kolommen die je daadwerkelijk krijgt

Geen tekstblok met een tijdstempel ernaast. Elk formaat wordt geparseerd naar getypeerde kolommen waarop u rechtstreeks kunt filteren, groeperen en aggregeren — en wanneer een container gestructureerde JSON logt, worden ook de eigen velden uitgepakt naar kolommen.

Docker-logo
json-bestand containerlogDocker-daemon
stroomniveauloggerberichtgastheerdienstgegevens
Docker-logo
docker logs exporterenDocker CLI
bericht
Portainer-logo
zerolog console logPortainer
niveaubellerberichtfoutgegevens

Elke rij bevat ook event_time, de ruwe tijdstempel waaruit deze is gelezen en het bestand waaruit deze afkomstig is. Elk formaat voegt zijn identiteitskolom toe — app voor json-bestanden en Portainer, container voor een export — en json-file-rijen bevatten daarnaast afbeelding, compose_project, compose_service en container_idDe single bericht kolom in een export is bewust zo gekozen: de eigen regel van de container blijft intact, in plaats van dat er iets uit wordt afgeleid.

Wat dit bewust niet doet

Wat dit bewust niet doet

Het is geen live weergave. Query Streams leest de bestanden zoals ze op de schijf staan op het moment dat u de query uitvoert. Een herstartlus wordt daarom weergegeven als rijen in plaats van als een stream die u kunt volgen. Als u binnen een seconde een melding wilt ontvangen wanneer een regel wordt afgedrukt, is een logpipeline de juiste oplossing.

De uitvoer van een container is vrije tekst, met een belangrijk gevolg dat we duidelijk moeten benoemen: alles wat uw toepassing afdrukt, komt in de tabel terecht. Als er een token of e-mailadres van een klant wordt gelogd, staat die tekenreeks al in het logbestand en komt die dus ook in de kolom terecht. Er is geen header-toewijzing waarmee u velden kunt uitsluiten, zoals bij een webserverlogboek — behandel de resulterende tabel net zo zorgvuldig als het bestand.

Twee kleinere limieten, die wel benoemd zijn, maar niet verborgen. Op een docker logs bij export blijft de eigen regel van de container volledig behouden in één bericht kolom; de binnenste regel opnieuw parseren op basis van het eigen formaat kan nog niet. Ook worden de optionele kenmerken die Docker met een loggingtag kan toevoegen alleen op basis van hun vorm herkend — geen enkele container in het vastgelegde corpus gebruikte ze, dus die mogelijkheid is wel beschreven, maar niet bewezen.

De rest volgt het gebruikelijke ontwerp. De agent maakt verbinding met de buitenwereld en leest bestanden; er wordt niets in de container geïnstalleerd, er wordt niets teruggeschreven, de Docker-socket en API worden nooit aangeraakt en de toegang is alleen-lezen. Het veld voor de bewaartermijn begint bij 30 dagen voor deze preset en u kunt dit wijzigen.

Van verbinding naar bruikbare resultaten.

  1. Installeer de Network Agent op de containerhost, zodat deze toegang heeft tot de logmap van de daemon.
  2. Wijs de connector ernaartoe. Het json-file-logboek van elke container wordt gevonden; u kunt de selectie met patronen verfijnen.
  3. De Agent koppelt elke map met een naam van 64 tekens terug aan de container waartoe die behoort — de echte naam, image en Compose-service — zodat de rijen leesbaar zijn voordat u SQL schrijft.
  4. Elke regel wordt een rij, met de stream (stdout of stderr) en de tijdstempel van de daemon; logrotatie wordt gevolgd wanneer de daemon de bestanden roteert.
  5. Voer er query's op uit. Fouten in alle containers tegelijk, één service afzonderlijk of een vergelijking vóór en na een implementatie.

Gebruik uw resultaten van Container Logs.

Eén verbinding bedient je spreadsheets, apps en AI-tools. Deel toestemming om een opgeslagen query uit te voeren; ontvangers zien de toegestane resultaten, terwijl de SQL-code en de inloggegevens van de gegevensbron verborgen blijven.

Voor uw team, leveranciers en partners

Haal actuele resultaten van Container Logs rechtstreeks op in een werkblad en vernieuw ze wanneer u wilt — in Excel voor desktop, Excel Online of Microsoft 365.

Ontdek Excel

Stel een vraag in gewone taal. Nova kent uw Container Logs-tabellen al, schrijft en voert de SQL uit, legt het antwoord uit en maakt er een diagram van — u hoeft geen query te schrijven of inloggegevens te delen.

Hoe Nova werkt

Deel een actueel Container Logs-resultaat met iedereen — een collega, leverancier of partner — als een bladwijzerbare tabel die bij het openen opnieuw actuele gegevens ophaalt, op een telefoon, tablet of desktop. Ze zien de resultaten, nooit de SQL of de bestanden.

Hoe de gegevensviewer werkt

Voor apps en systemen

Publiceer een query voor Container Logs als een geauthenticeerd JSON-eindpunt dat elke toepassing kan aanroepen, met een OpenAPI 3.1-specificatie en kant-en-klare collecties voor Postman, Insomnia en Hoppscotch. Er wordt geen databasepoort geopend.

REST API verkennen

Plak de gegenereerde Power Query M in de Geavanceerde editor van Power BI. Het rapport leest dan live resultaten van Container Logs via HTTPS — zonder ODBC-driver en zonder een databasepoort te openen.

Power BI verkennen

Voor AI-tools

Geef een AI-assistent alleen-lezen toegang tot Container Logs en het schema dat nodig is om correcte SQL te schrijven — zonder inloggegevens in de chat.

Ontdek MCP

Bezorgd aan mensen

Koppel Container Logs aan de rest van je gegevens.

Breng databases, zakelijke API's, bestanden en logs samen in één alleen-lezenquery. Elke connector ondersteunt Federated Queries.

Vermeld de verbindingen en tabellen. Query Streams verwerkt de query's voor de gegevensbronnen en combineert de resultaten.

Federated Queries verkennen
Voorbeeldquery voor meerdere gegevensbronnen
-- niets gekopieerd, niets samengevoegd, niets ingepland
SELECT   c.region, COUNT(*) AS orders, SUM(i.amount_due) AS invoiced
VAN     containerlogs.fileset.orders1 f
JOIN     pg_crm.publieke.klanten2      c ON c.id = f.customer_id
JOIN     facturering.stripe.facturen3      i ON i.customer = c.stripe_id
GROEP DOOR c.regio
ORDER BY gefactureerd DESC;

Gebruik je eigen verbindings-, schema-, tabel- en kolomnamen.

Gedeeld binnen de connectorfamilie.

Elke logconnector levert je ook

  • events — één rij per geparseerde regel, met de tijdstempel, de velden die de grammaticaregels benoemen en _source_file met de naam van het bestand waaruit de regel afkomstig is.
  • events_raw_lines — regels die niet overeenkomen met de grammaticaregels, letterlijk bewaard in plaats van weggegooid, zodat je ook vragen kunt beantwoorden over een formaat dat je niet had verwacht.
  • files_current en files_events — de actuele inventaris en het auditspoor: wat is verschenen, wat is geroteerd, wat is verdwenen en wat is achtergehouden, inclusief de bestandsnaam en de reden.
  • Rotatie wordt begrepen, niet omzeild — tien benoemde rotatiepatronen plus gewone, niet-geroteerde bestanden, zodat het logbestand van gisteren en het gecomprimeerde archief ervan dezelfde tabel zijn als dat van vandaag.

Goed om te weten

  • Alleen-lezen, afgedwongen — één statement tegelijk, alleen SELECT en vergelijkbare opdrachten. Uw logs worden door ons nooit geschreven, verplaatst, geroteerd of afgekapt.
  • Er wordt niets geüpload — regels worden op uw eigen machine, naast de agent, geparseerd en versleuteld in de cache opgeslagen. Alleen het resultaat van een query verlaat uw netwerk.
  • Alleen nieuwe bytes worden gelezen — de agent gaat in elk bestand verder waar hij gebleven was, in plaats van het opnieuw te lezen. Zo kost een druk logbestand niet elke dag meer.
  • Het SQL-dialect is DuckDB — dezelfde SQL die je voor elke andere connector zou schrijven.

Vragen over Container Logs

Waar kan ik queryresultaten van Container Logs gebruiken?

Gebruik resultaten van Container Logs in Excel, Google Sheets, de Data Viewer, je apps via de Database REST API en AI-tools via MCP of Nova. Opgeslagen resultaten kunnen ook worden gebruikt voor ondersteunde Automation-bestemmingen, rapporten en waarschuwingen. Beschikbaarheid van bestemmingen en limieten zijn afhankelijk van je abonnement.

Moet ik een inkomende poort openen voor Container Logs?

Nee. Installeer de Network Agent op een machine die toegang heeft tot Container Logs. De agent maakt uitgaand verbinding met Query Streams; er is geen inkomende poort of VPN nodig. Je bron moet de agentmachine nog wel toestaan verbinding te maken volgens de eigen toegangsregels.

Worden mijn Container Logs-bestanden geüpload?

De Network Agent leest bestanden op hun huidige locatie en bewaart de cache op de agentmachine. Bronbestanden worden niet geüpload, verplaatst of herschreven. Alleen de opgevraagde queryresultaten verlaten uw netwerk via de versleutelde uitgaande verbinding.

Wat heb ik nodig om verbinding te maken met Container Logs?

Map: De logmap van de daemon op de containerhost, of een map met geëxporteerde logs. Bronnen: Docker json-file-logs, opgeslagen exports van docker logs en het serverlog van Portainer. Identiteit: Containernaam, image en Compose-service worden bepaald aan de hand van de daemon, zodat rijen niet worden geïdentificeerd met een ID van 64 tekens. Rotatie: Wordt gevolgd wanneer de daemon roteert, plus de tien benoemde rotatiepatronen voor geëxporteerde bestanden

Kan ik Container Logs koppelen aan andere verbonden bronnen?

Ja. Federated Queries ondersteunen elk type connector, waaronder databases, zakelijke API's, bestanden en logs. Vermeld de verbindingen en tabellen in één alleen-lezenquery. Query Streams vertaalt waar nodig de queryonderdelen voor de gegevensbronnen en combineert de resultaten. Bekijk hoe Federated Queries werken.

Moet ik mijn Docker-loggingstuurprogramma wijzigen?

Nee. json-bestand is het standaardstuurprogramma van Docker en het wordt ondersteund. Als je logging nooit hebt geconfigureerd, staan de bestanden er al en hebben ze al de juiste indeling.

Als u bent overgestapt naar een andere stuurprogramma, dan docker logs --timestamps Exporteren is de inkomende route: het werkt ongeacht de driver, omdat de CLI de daemon doorleest.

Hoe weet het systeem de naam van de container en niet alleen de ID?

Docker schrijft een eigen record van een container in dezelfde map als het logbestand. Query Streams leest de naam uit dat bestand en gebruikt deze als de identificatiekolom, waarbij de image, het Compose-project en de service als kolommen ernaast worden bewaard. De map-ID van 64 tekens wordt behouden als container_idDus er gaat niets verloren.

Als die record ontbreekt, onleesbaar is of geen naam bevat, wordt in plaats daarvan de mapnaam gebruikt en telt de scan hoe vaak dat is gebeurd — zo is een terugval zichtbaar als een getal dat je kunt bekijken, niet als een stille vervanging.

Ik gebruik Docker Desktop voor Windows of Mac. Werkt dit?

Niet rechtstreeks tegen de JSON-logbestanden. Docker Desktop bewaart die in zijn eigen virtuele machine, en een agent die als service op de host draait, heeft er geen toegang toe.

De oplossing is het exporteren van het profiel: docker logs --timestamps <container> omgeleid naar een bestand in een map die de Agent kan lezen. Dat is een volwaardig ondersteund formaat, geen workaround — het is dezelfde aanpak die mensen al gebruiken om een kopie van een logbestand te bewaren nadat een container is verdwenen.

Is dit realtime?

Het werkt op aanvraag en niet als stream. De bestanden worden gelezen zoals ze zijn op het moment dat de query wordt uitgevoerd. Nieuwe regels verschijnen dus zodra je containers ze schrijven en het bestand wordt opgepikt — niet volgens een vast nachtschema, maar ook niet als een live tail.

Om de afgelopen weken in elke container een vraag te stellen en de antwoorden in een spreadsheet te zetten, is dit een handige methode die aanzienlijk minder machinerie vereist dan een houtstapel.

En wat vind je van Kubernetes of Podman?

Geen van beide heeft vandaag een eigen profiel, en we zeggen dat liever dan dat we dekking suggereren. Wat wel van toepassing is, is het exportformaat: het profiel is gekoppeld aan de exacte vorm. docker logs --timestamps schrijft — een RFC 3339-tijdstempel met nanoseconden, een spatie en vervolgens de eigen regel van de container, één bestand per service. Hulpmiddelen die dezelfde indeling schrijven, kunnen ermee worden gelezen.

De meest betrouwbare manier om dit voor uw eigen bestanden te controleren, is door de verbinding te testen. Deze functie meldt wat er is herkend voordat u ergens mee aan de slag gaat.

Mijn containers loggen in JSON-formaat. Krijg ik hun velden als kolommen te zien?

Ja, voor json-file-logs. De omhulling van de daemon wordt verwijderd en de eigen JSON van de container wordt uitgesplitst in kolommen — level, logger, message, host en service, indien aanwezig. Alles wat niet aan een benoemde kolom kan worden toegewezen, wordt bewaard in een gegevens De kolom wordt niet weggegooid, waardoor een ongebruikelijk veld nog steeds opvraagbaar is.

Het enige dat niet uit de JSON van de container wordt overgenomen, is de tijdstempel. Die komt van de daemon, omdat de eigen tijdstempel van een toepassing elke indeling kan hebben en een verkeerde interpretatie de rij ongemerkt op het verkeerde tijdstip plaatst.

Wat als de parser een regel niet kan lezen?

Het wordt bewaard, niet verwijderd. Een regel die niet overeenkomt met het vastgezette formaat wordt bewaard als een onbewerkte rij met een bijbehorende reden. Zo wordt een onjuist opgemaakte invoer of een onverwachte formaatwijziging zichtbaar en kun je deze opvragen, in plaats van dat het een onzichtbare hiaat in je cijfers vormt.

Gebruik Container Logs daar waar het werk gebeurt.

Begin met Free: elk type connector, 2 gegevensbronnen en 1 Network Agent. Voeg abonnementslimieten toe naarmate je behoeften groeien.