Logo Container Logs

Docker i Portainer Nowy

Łączyć Dzienniki kontenerowe do Excela, Arkuszy i AI

Docker zapisuje dziennik dla każdego kontenera — przeszukaj wszystkie naraz. Plik json rejestruje zapisywany przez demona dziennik, dzienniki dokera eksporty, które zapisujesz ręcznie, oraz własny dziennik serwera Portainer. Skieruj strumień zapytań na folder, a każdy wiersz stanie się wierszem — zawierającym prawdziwą nazwę kontenera, jego obraz i usługę Compose, zamiast katalogu pełnego 64-znakowych identyfikatorów.

1połączenie
0porty przychodzące
tylko do odczytuwyegzekwowane
3 formaty dziennika kontenerowego Docker · Portainer Nazwana według kontenera, obrazu i usługi Tylko do odczytu · nic nie zostało zainstalowane w kontenerze
Wielki pomysł

Jeden folder dzienników kontenerów staje się jedną tabelą.

Query Streams odczytuje pliki zapisane przez demona, przypina format i zwraca kolumny z kontenerem o określonej liczbie znaków obok każdego wiersza. Bez sidecara, bez potoku wysyłkowego, bez indeksu do utrzymania — a wiersz, którego parser nie może odczytać, jest przechowywany jako wiersz z uzasadnieniem, a nie po cichu usuwany.

Folder dziennikana hoście
a3f9c1…-json.logDoker
Dokershopfront-stack_api.logeksport
portainer.logPortainer

Obsłużono rotacje, skompresowane archiwa i ponownie odczytane pliki

hałaśliwe-kontenery.sqlSQL
SELECT aplikacja, usługa tworzenia,
       liczyć(*) AS kwestia
Z   zestaw_plików.zdarzenia
GDZIE  strumień = 'stderr'
GROUP BY aplikacja, usługa tworzenia
ORDER BY kwestia DESC
Wynikstderr według kontenera
aplikacjapracakwestia
interfejs API witryny sklepowejAPI1,284
pracownik witryny sklepowejpracownik417
witryna sklepowa-internetsieć62
pamięć podręczna witryny sklepowejkryjówka3

Połącz go z bazą danych swojej aplikacji w tym samym zapytaniu

Pliki, które demon już zapisuje, teraz w postaci tabeli, na podstawie której można generować raporty

Źródła

Dwa narzędzia, trzy formaty, bez sidecara

Każda karta zawiera nazwy plików odczytywanych przez Query Streams i ich lokalizację. Nie musisz zmieniać sterownika rejestrowania, aby to działało — plik json jest ustawieniem domyślnym Dockera i jest ustawieniem domyślnym obsługiwanym.

Obsługiwane dzienniki kontenerów

3 formaty · 2 narzędzia
Dokersterownik rejestrowania plików json
  • Jeden {"log","strumień","czas"} koperta na wiersz, napisana przez demona
  • Nazwa kontenera pochodzi od własnej nazwy Dockera konfiguracja.v2.json obok kłody
  • Projekt/usługa „Image and Compose” w formie kolumn
  • Zazwyczaj /var/lib/docker/containers
  • Dołącza; ponumerowane obroty i .gz śledzony
Dokereksport dzienników Dockera
  • Pliki, które zapisałeś dzienniki dokera --znaczniki czasu
  • Znaczek nanosekundowy RFC 3339, a następnie własna linia kontenera
  • Linie banerów kontenerowych są pomijane ze względu na deklarację, a nie szczęście
  • Dowolny folder, w którym przechowujesz eksporty
  • Jeden plik na usługę; nazwa pochodzi od rdzenia pliku
PortainerDziennik serwera, konsola zerolog
  • portainer.log lub własnego wyjścia kontenera
  • Kody kolorów ANSI są usuwane przed analizą, więc poziom jest poziomem
  • Ten klucz=wartość ogon staje się kolumnami; reszta ląduje w dane
  • Odczytywane są również linie o różnym kształcie wbudowanego serwera tunelowego
  • Znaczki z rozdzielczością minutową, odczytywane jako UTC
Nadchodzi więcejto początek, a nie sufit

Nowe formaty dzienników kontenerów są dodawane z każdą wersją Agenta. Ponieważ Agenty są na bieżąco aktualizowane, format dodany później pojawia się w konektorze bez konieczności odwiedzania serwera.

Wszystkie trzy parsery zostały zbudowane i przetestowane na rzeczywistych dziennikach kontenerów — dziennikach plików JSON, dużych dziennikach dzienniki dokera Eksportuje z hosta Swarm i log serwera Portainer CE 2.39.1. Jedna rzecz, którą warto wiedzieć na początku: w Docker Desktop dla systemów Windows i Mac logi w plikach json znajdują się na maszynie wirtualnej, gdzie agent działający jako usługa nie może się z nimi połączyć. Wyeksportuj je za pomocą dzienniki dokera --znaczniki czasu i użyj drugiego profilu.
Gdziekolwiek to działa

Kontenery w każdym regionie, odczyt dzienników gdzie siedzą

Kontenery rzadko działają w jednym miejscu. Host w biurze, klaster Swarm w jednym regionie chmury, pojedyncze urządzenie w innym kraju. W każdej lokalizacji działa agent sieciowy, który odczytuje pliki dziennika tam, gdzie się one znajdują, i nawiązuje połączenie z Query Streams. Z punktu widzenia zapory sieciowej jest to zwykłe połączenie wychodzące — nie ma niczego do otwarcia ani konieczności budowania sieci VPN.

Siedziba główna Host Dockera na dysku lokalnym, dzienniki plików json w folderze demona wybiera numery
ue-zachód Klaster roju, jeden dzienniki dokera eksport na usługę wybiera numery
wschód USA Portainer zarządza garścią hostów, posiada własny dziennik serwera obok wybiera numery

Trzy połączenia wychodzące, jedno miejsce do ich sprawdzania — bez portu przychodzącego, bez VPN, bez zmiany zapory sieciowej

Jeden agent na lokalizację

Agent obejmuje całą witrynę, a nie pojedynczy folder: każdy format dziennika, który chcesz tam umieścić, staje się osobnym łącznikiem zestawu plików w tym samym agencie. Standardowo jeden agent na lokalizację to jeden. W ramach darmowego poziomu działa jeden agent, a w wyższych poziomach – więcej.

1 witryna = 1 agent = wiele łączników

Nic do otwarcia

Agent nawiązuje jedno szyfrowane połączenie wychodzące, przez które zarówno żądanie wychodzące, jak i dane z powrotem są przesyłane. Nie ma potrzeby zmiany portu przychodzącego, VPN-a ani zmiany zapory sieciowej – a dane uwierzytelniające pozostają w sieci.

jedno połączenie, w obu kierunkach

Jedno zapytanie we wszystkich witrynach

Każde źródło w zapytanie federacyjne nadaje nazwę własnemu agentowi, dzięki czemu jedno polecenie może odczytać dziennik w jednym kraju i dziennik w innym, zwracając jeden wynik — lub dołączyć dowolny z nich do bazy danych. Dostępne w wersjach Business i Enterprise.

2 kraje → 1 zestaw wyników

Utrzymują się na bieżąco

Agenci aktualizują się sami, więc format dziennika kontenerów dodany w późniejszej wersji dociera do każdej witryny bez konieczności logowania się na serwerze w celu jego instalacji. To właśnie sprawia, że ściana powyżej jest punktem początkowym, a nie stałą listą.

nowe formaty pojawiają się wraz z Agentem

Najtrudniejsza część

Nazwy, zegary i kody kolorów

Log kontenera to nie plik tekstowy z datą. Trzy rzeczy rutynowo idą nie tak, gdy próbujesz traktować go jako dane, a każda z nich jest tutaj obsługiwana poprzez deklarację, a nie przez zgadywanie.

Nazwy, nie identyfikatory szesnastkowe

Docker nadaje nazwę każdemu folderowi logów na podstawie identyfikatora kontenera, co sprawia, że zapytanie grupowe jest nieczytelne. Strumienie zapytań odczytują rekord zapisany przez Dockera obok logu i przyjmują jego prawdziwą nazwę, zachowując identyfikator jako osobną kolumnę.

a3f9c1…-json.log → aplikacja = sklep-api

Zegar demona

Kontener, który drukuje swój własny znacznik czasu w sekundach epoki, ląduje w 1970 roku, jeśli w to wierzysz. Czas zdarzenia to czas przechwycenia demona; znacznik kontenera jest przechowywany jako kolumna, a nie jest zaufany.

czas koperty → czas_wydarzenia

Kody kolorów w pliku

Rejestratory konsoli zapisują sekwencje ucieczki terminala bezpośrednio do logu. Są one usuwane przed analizą składniową, więc poziom jest odczytywany jako poziom, a nie jako poziom ujęty w znaki ucieczki — a oryginalne bajty pozostają nietknięte.

usunięto kody wyjścia → poziom = INF

Nic nie liczyło się dwa razy

Każdy plik jest oznaczany odciskiem palca na podstawie pierwszych 4 KB, dzięki czemu obrócony plik jest rozpoznawany jako ten sam plik, a nie odczytywany ponownie od góry. Przesuwające się okno duplikatu wychwytuje nakładanie się, gdy zapisujący odtwarza jego ogon.

4 KB prefiksu hash · okno 20 000 rekordów

Schemat

Kolumny, które faktycznie otrzymujesz

Nie jest to kleks tekstu ze znacznikiem czasu. Każdy format jest analizowany w postaci kolumn, które można bezpośrednio filtrować, grupować i agregować — a podczas gdy kontener rejestruje ustrukturyzowany JSON, jego pola również są rozpakowywane do postaci kolumn.

Logo Dockera
dziennik kontenera plików jsonDemon Dockera
strumieńpoziomdrwalwiadomośćgospodarzpracadane
Logo Dockera
eksport dzienników DockeraInterfejs wiersza poleceń Dockera
wiadomość
Logo Portainera
dziennik konsoli zerologPortainer
poziomgośćwiadomośćbłąddane

Każdy rząd również niesie czas_wydarzenia, surowy znaczek, z którego został odczytany, oraz plik, z którego pochodzi. Każdy format dodaje swoją kolumnę identyfikacyjną — aplikacja dla pliku json i Portainera, pojemnik do eksportu — a wiersze pliku JSON dodatkowo zawierają obraz, compose_project, usługa_kompozycji oraz identyfikator_kontenera. Singiel wiadomość Kolumna w eksporcie jest celowa: wiersz kontenera jest zachowywany w całości, a nie odgadywany.

Jedno połączenie, każda powierzchnia

Gdzie mogą trafić dane z dziennika kontenera

Pliki dziennika nie są ślepą uliczką. Podłącz folder raz, a to samo połączenie tylko do odczytu będzie dostępne dla każdej powierzchni obsługiwanej przez Query Streams — bez konieczności drugiej konfiguracji, drugiej kopii danych i bez różnicy w obsłudze ze strony łącznika bazy danych.

Obsługiwane

Rejestry kontenerów do programu Excel

Microsoft Excel · Dodatek do programu Excel

Przeciągnij wyniki dziennika kontenerów na żywo bezpośrednio do arkusza kalkulacyjnego i odświeżaj je na żądanie — w programie Excel na komputerze stacjonarnym, w programie Excel Online, w programie Microsoft 365.

Jak działa Excel
Obsługiwane

Rejestry kontenerów w Arkuszach Google

Dodatek Arkuszy

Uruchom zapisany dziennik kontenera z paska bocznego i upuść wiersze do arkusza. Współpracownicy korzystający z udostępnionego konta mogą je samodzielnie odświeżyć.

Jak działają Arkusze Google
Obsługiwane

Kontener rejestruje serwer MCP

Claude, klienci Cursor i MCP · Serwer MCP

Udziel asystentowi AI dostępu tylko do odczytu dziennika kontenera ze schematem potrzebnym do pisania prawidłowych instrukcji SQL — bez konieczności podawania danych uwierzytelniających w czacie.

Jak działa MCP
Obsługiwane

Logi kontenerów REST API

Punkt końcowy HTTP

Opublikuj zapytanie do dziennika kontenera jako uwierzytelniony punkt końcowy JSON, który może wywołać dowolna aplikacja, ze specyfikacją OpenAPI 3.1 i gotowymi kolekcjami Postman, Insomnia i Hoppscotch. Port bazy danych nie jest otwarty.

Jak działa REST API
Obsługiwane

Rejestry kontenerów do Airtable

Platforma automatyzacji

Synchronizuj wiersze dziennika kontenera z bazą Airtable zgodnie z harmonogramem lub pobieraj je za pomocą skryptu automatyzacji Airtable.

Jak działa Airtable
Obsługiwane

Kontenerowe kłody do Baserow

Platforma automatyzacji

Przekaż tabelę Baserow z dziennika kontenera do punktu końcowego REST — hostowanego samodzielnie lub w chmurze Baserow.

Jak działa Baserow
Obsługiwane

Rejestry kontenerów do SeaTable

Platforma automatyzacji

Utrzymuj bazę SeaTable na bieżąco, korzystając z danych dziennika kontenera, bez konieczności eksportowania pliku lub udostępniania bazy danych.

Jak działa SeaTable
Obsługiwane

Rejestry kontenerów do Smartsheet

Platforma automatyzacji

Prześlij wyniki rejestrowania kontenerów do siatki Smartsheet, aby plany i raporty były odczytywane z systemu źródłowego, a nie z eksportu z poprzedniego tygodnia.

Jak działa Smartsheet
Obsługiwane

Kontenerowe kłody do Anvil

Anvil Works · Platforma aplikacji

Wspieraj aplikację Anvil Python za pomocą dziennika kontenera przez punkt końcowy REST zamiast osadzać poświadczenia bazy danych w aplikacji.

Jak działa Anvil
Obsługiwane

Rejestry kontenerów w usłudze Power BI

Power Query M

Wklej wygenerowany kod Power Query M do Edytora zaawansowanego usługi Power BI, a raport odczyta wyniki dziennika kontenera na żywo przesyłane przez protokół HTTPS — bez sterownika ODBC i bez otwartego portu bazy danych.

Jak działa Power BI
Obsługiwane

Alerty i raporty dotyczące kontenerów

Slack · Discord · E-mail · Webhook

Utwórz harmonogram zapytań do kontenera, aby wiersze były dostarczane do Slacka, Discorda, poczty e-mail lub podpisanego webhooka — albo wstrzymaj wiadomość, aż liczba wierszy, próg lub zmiana procentowa przekroczy ustawioną linię.

Jak działają alerty i raporty
Karta alertów to ta, którą warto ponownie sprawdzić w kontekście kontenerów: zaplanowane zapytanie o liczbę błędów nie wymaga od nikogo obserwowania terminala, więc pętla restartu sama dociera do Slacka. Przewodniki krok po kroku dotyczące konkretnych logów nie zostały jeszcze napisane — powiązane strony opisują działanie każdej z nich.

Czego to celowo nie robi

To nie jest żywy ogon. Query Streams odczytuje pliki w momencie ich obecności na dysku podczas uruchamiania zapytania, więc pętla restartu wyświetla się jako wiersze, a nie jako strumień, który można obserwować. Jeśli potrzebujesz alertów na temat wiersza w trakcie jego drukowania z dokładnością do mniej niż sekundy, odpowiednim narzędziem jest potok logów.

Dane wyjściowe kontenera są dowolne, co ma swoją konsekwencję, którą należy jasno powiedzieć: wszystko, co wypisuje Twoja aplikacja, trafia do tabeli. Jeśli rejestruje token lub adres e-mail klienta, ten ciąg znaków znajduje się już w pliku dziennika i będzie również w kolumnie. Nie ma mapy nagłówków, która wykluczałaby to, co ma miejsce w przypadku dziennika serwera WWW — traktuj wynikową tabelę z taką samą ostrożnością, z jaką traktowałbyś plik.

Dwa mniejsze limity, nazwane, a nie ukryte. Na dzienniki dokera eksport własnej linii kontenera jest przechowywany w całości w jednym wiadomość kolumna; ponowne analizowanie tego wewnętrznego wiersza według jego własnego formatu nie zostało jeszcze zbudowane. A opcjonalne atrybuty, które Docker może dołączyć za pomocą znacznika rejestrowania, są rozpoznawane tylko po kształcie — żaden kontener w przechwyconym korpusie ich nie używał, więc ścieżka jest zadeklarowana, a nie sprawdzona.

Reszta działa zgodnie ze standardową strukturą. Agent łączy się z serwerem wychodzącym i odczytuje pliki; nic nie jest instalowane w kontenerze, nic nie jest zapisywane z powrotem, gniazdo Dockera i API nie są modyfikowane, a dostęp jest tylko do odczytu. Okres przechowywania danych dla tego ustawienia wstępnego wynosi 30 dni i można go zmienić.

Jak to działa

Trzy kroki i nic nie zostaje zainstalowane w kontenerze.

01

Wskaż folder dziennika

Udziel agentowi strumieni zapytań dostępu do odczytu miejsca, w którym znajdują się już logi — /var/lib/docker/containers na hoście Docker, folderze zapisanych eksportów lub udziale, w którym je gromadzisz.

02

Rozpoznaje format

Query Streams identyfikuje format na podstawie zawartości wierszy, a nie nazwy pliku — dzięki temu zmieniona nazwa kopii nadal daje się odczytać, a plik, który nie pasuje do przypiętego formatu, jest parkowany z określonego powodu, zamiast uszkadzać tabelę.

03

Zapytaj o to lub dołącz do nas

Uruchamiaj polecenia SQL z poziomu portalu, wdrażaj je w programie Microsoft Excel lub Arkuszach Google albo używaj zapytań federacyjnych, aby łączyć dzienniki kontenerów z użytkownikami i zamówieniami w bazie danych aplikacji — za pomocą jednego polecenia.

Często zadawane pytania dotyczące dziennika kontenerów

Czy muszę zmienić sterownik rejestrujący Docker?

NIE. plik json to domyślny sterownik Dockera i jest obsługiwany. Jeśli nigdy nie konfigurowałeś rejestrowania, pliki już tam są i mają odpowiednią formę.

Jeśli zmieniłeś sterownik, dzienniki dokera --znaczniki czasu export jest właściwą drogą: działa niezależnie od sterownika, ponieważ CLI odczytuje dane za pomocą demona.

Skąd zna nazwę kontenera, a nie tylko jego identyfikator?

Docker zapisuje własny rekord kontenera w tym samym folderze co dziennik. Query Streams odczytuje nazwę z tego pliku i używa jej jako kolumny tożsamości, a obraz oraz projekt i usługa Compose są przechowywane jako kolumny obok. 64-znakowy identyfikator folderu jest zachowywany jako identyfikator_kontenera, więc nic nie jest stracone.

Jeśli rekordu brakuje, jest nieczytelny lub nie ma nazwy, używana jest nazwa folderu, a proces sprawdzania zlicza, ile razy taka sytuacja miała miejsce — dzięki temu informacja zapasowa pojawia się jako liczba, którą można sprawdzić, a nie jako cicha zamiana.

Korzystam z Docker Desktop dla Windows lub Mac. Czy to działa?

Nie bezpośrednio w logach pliku json. Docker Desktop przechowuje je na własnej maszynie wirtualnej, a agent działający jako usługa na hoście nie ma do nich dostępu.

Drogą przez to jest profil eksportowy: docker logs --timestamps <kontener> przekierowany do pliku w dowolnym folderze, który Agent może odczytać. To obsługiwany format sam w sobie, a nie obejście problemu — to ta sama metoda, z której ludzie korzystają już do przechowywania kopii dziennika po usunięciu kontenera.

Czy to dzieje się w czasie rzeczywistym?

Działa na żądanie, a nie strumieniowo. Pliki są odczytywane w momencie uruchomienia zapytania, więc nowe wiersze pojawiają się w momencie zapisu kontenerów, a plik jest pobierany — nie według stałego nocnego harmonogramu, ale też nie na bieżąco.

Aby zadać pytanie dotyczące ostatnich kilku tygodni w każdym kontenerze i zapisać odpowiedź w arkuszu kalkulacyjnym, potrzebny jest przydatny kształt i znacznie mniej maszyn niż stos kłód.

A co z Kubernetesem lub Podmanem?

Żaden z nich nie ma dziś własnego profilu i wolimy o tym mówić, niż sugerować zasięg. Obowiązuje jednak format eksportu: profil jest kluczowany do dokładnego kształtu. dzienniki dokera --znaczniki czasu zapis — nanosekundowy znacznik RFC 3339, spacja, a następnie wiersz własny kontenera, jeden plik na usługę. Narzędzia, które zapisują ten sam kształt, odczytują go.

Niezawodną metodą sprawdzenia własnych plików jest polecenie Test połączenia, które raportuje rozpoznane dane przed podjęciem jakichkolwiek działań.

Moje kontenery logują dane JSON. Czy ich pola są wyświetlane jako kolumny?

Tak, w przypadku logów w plikach JSON. Koperta demona jest rozpakowywana, a JSON kontenera w jej wnętrzu jest spłaszczany do kolumn — poziomu, rejestratora, komunikatu, hosta i usługi, tam gdzie występują. Wszystko, co nie jest mapowane na nazwaną kolumnę, jest przechowywane w dane kolumnę, a nie odrzuconą, więc nietypowe pole nadal może być przedmiotem zapytania.

Jedynym elementem, którego nie pobrano z JSON-a kontenera, jest znacznik czasu. Pochodzi on z demona, ponieważ znacznik aplikacji może mieć dowolny format, a jego błędna interpretacja powoduje niezauważone przesunięcie wiersza w czasie.

A co z wierszem, którego parser nie może odczytać?

Jest on zachowywany, a nie usuwany. Wiersz niezgodny z przypiętym formatem jest zachowywany jako surowy wiersz z dołączoną przyczyną, więc błędny wpis lub nieoczekiwana zmiana formatu jest widoczna i możliwa do sprawdzenia, a nie jako cicha luka w liczbach.

Twoje kontenery już rozmawiają

Podłącz folder dziennika i uruchom w nim pierwsze zapytanie w ciągu kilku minut. Bezpłatny plan, bez karty kredytowej, bez instalacji w kontenerze.

Tylko do odczytu · tylko połączenie wychodzące · Twoje logi pozostają na Twoim hoście