Docker część VI: logi

Dziś zajmiemy się tematem logów w Dokerze. Czym one są? Informacją o tym, co dzieje się w naszym programie, systemie. Dają nam informacje między innymi o tym, jakie wydarzenia miały miejsce oraz jakie błędy wystąpiły w naszym programie. Do sprawdzania logów służy komenda:

docker logs [args] [containerId]

Może ona zostać wywołana z argumentami takimi jak:
-f – dzięki niemu mamy ciągły podgląd na nasze logi;
–details – pozwala nam wyświetlić dodatkowe informacje o naszych logach;
–since – przeglądamy logi od określonej daty;
–tail – wybieramy kilka końcowych logów.

Zajmiemy się teraz przykładami. Będą nam dzisiaj potrzebne:
-obraz nginx
-obraz .Net Core z tego wpisu

Nginx

Zacznijmy od nginx. Jest to obraz serwera nginx(;>), który możemy uruchomić w kontenerze. Odpalamy go komendą:

docker run -d -p 5000:80 nginx

Po uruchomieniu komendy:

docker ps

zobaczymy nasz działający kontener, a gdy przejdziemy na adres localhost:5000 ujrzymy taki obrazek:

Screen Shot 2017-09-01 at 23.50.08

Teraz w naszym terminalu wpiszemy komendę:

docker logs -f [nginxContainerId]

gdzie w miejscu nginxContainerId wpisujemy id naszego kontenera Nginx. Zobaczymy, że w naszych logach już znajduje się wpis. Mówi on o tym, że ktoś już na naszej stronie był. Aby sprawdzić, czy nasze logi się aktualizują, odświeżmy kilka razy naszego localhost:5000. Zobaczymy, że do logów zostało zapisane kilka nowych wpisów, wszystkie takie same, mówiące o tym, że ktoś wszedł na stronę główną naszego serwera. Zatrzymajmy teraz śledzenie logów klawiszami ctrl+c oraz wpiszmy:

docker logs --tail 3 [nginxContainerId]

Zobaczymy, iż zostały wyświetlone tylko 3 ostatnie logi naszej aplikacji.

ASP.Net Core

Był to dość trywialny przykład. Przejdźmy do czegoś bardziej złożonego, czyli aplikacji ASP.Net Core w kontenerze dockerowym. Instrukcję jej stworzenia oraz uruchomienia znajdziecie tutaj. My jednak zmodyfikujemy nasz HomeController w sposób podany poniżej:

public IActionResult About()
        {
            ViewData["Message"] = "Your application description page.";
            throw new InvalidCastException();
            return View();
        }

        public IActionResult Contact()
        {
            ViewData["Message"] = "Your contact page.";
            throw new IndexOutOfRangeException();
            return View();
        }

Bez zbędnych formalności po zapisaniu naszego kontrolera, zbudowaniu oraz odpaleniu naszego obrazu w kontenerze wpiszmy w nasz terminal/konsolę:

docker logs -f [aspContainerId]

następnie przeklikajmy naszą aplikację. Po przejściu na strony Contact lub About do naszych logów trafi kilka wpisów, które pokazują wyrzucone przez naszą aplikację błędy:

Screen Shot 2017-09-02 at 00.13.13
Tak jak w poprzednim przykładzie, możemy sprawdzić kilka ostatnich logów komendą:
<docker logs –tail 3 [aspContainerId]

Screen Shot 2017-09-02 at 00.14.27

To tyle jeśli chodzi o podstawy logów dockerowych. Przyjrzeliśmy się dzisiaj logom serwera na przykładzie nginx oraz logom aplikacji na przykładzie aplikacji ASP.Net MVC Core, która po prostu rzucała nam nieobsłużonymi wyjątkami ;> Zapraszam do samodzielnego zapoznania z przedstawioną komendą oraz podzielenia się kilkoma ciekawszymi logami, których się nie spodziewaliście ;>

Do przeczytania niedługo 😉

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s