{"id":56206,"date":"2020-02-07T00:00:00","date_gmt":"2020-02-06T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/loki-sbor-logov-ispolzuya-podhod-prometheus"},"modified":"2021-02-01T11:41:00","modified_gmt":"2021-02-01T09:41:00","slug":"loki-sbor-logov-ispolzuya-podhod-prometheus","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/loki-sbor-logov-ispolzuya-podhod-prometheus","title":{"rendered":"Loki \u2014 zbieranie log\u00f3w, stosuj\u0105c podej\u015bcie Prometheus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Cze\u015b\u0107, Hubrowicze! W przededniu nowego rekrutacji na kurs <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/P37L\/\">\u201ePraktyki i narz\u0119dzia DevOps\u201c<\/a><\/noindex> przygotowali\u015bmy dla Was t\u0142umaczenie interesuj\u0105cego materia\u0142u.<\/i><\/p>\n<p>Ten artyku\u0142 to kr\u00f3tkie wprowadzenie do Loki. Projekt Loki <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/oss\/loki\/\">jest wspierany przez Grafana<\/a><\/noindex> i jest skierowany na centralizacj\u0119 zbierania log\u00f3w (z serwer\u00f3w lub kontener\u00f3w).<\/p>\n<p>G\u0142\u00f3wnym \u017ar\u00f3d\u0142em inspiracji dla Loki by\u0142a <noindex><a rel=\"nofollow\" href=\"http:\/\/prometheus.io\/\">Prometheus<\/a><\/noindex> idea zastosowania jego podej\u015bcia do zarz\u0105dzania logami:<\/p>\n<ul>\n<li>u\u017cycie etykiet (labels) do przechowywania danych<\/li>\n<li>ma\u0142e zu\u017cycie zasob\u00f3w<\/li>\n<\/ul>\n<p>Jeszcze wr\u00f3cimy do zasad dzia\u0142ania Prometheus oraz przedstawimy kilka przyk\u0142ad\u00f3w jego u\u017cycia w kontek\u015bcie Kubernetes.<\/p>\n<h3>Kilka s\u0142\u00f3w o Prometheus<\/h3>\n<p>Aby w pe\u0142ni zrozumie\u0107, jak dzia\u0142a Loki, wa\u017cne jest, aby cofn\u0105\u0107 si\u0119 i przypomnie\u0107 sobie o Prometheus.<\/p>\n<p>Jedn\u0105 z charakterystycznych cech Prometheus jest pobieranie metryk z punkt\u00f3w zbioru (przez eksportery) i ich przechowywanie w TSDB (Time Series Data Base, baza danych czasowych) z dodatkiem metadanych w postaci etykiet.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Po co to wszystko?<\/h3>\n<p>Ostatnio Prometheus sta\u0142 si\u0119 de facto standardem w \u015bwiecie kontener\u00f3w i Kubernetes: jego instalacja jest bardzo prosta, a w klastrze Kubernetes od pocz\u0105tku istnieje punkt ko\u0144cowy dla Prometheus. Prometheus mo\u017ce r\u00f3wnie\u017c pobiera\u0107 metryki z aplikacji uruchomionych w kontenerze, zachowuj\u0105c jednocze\u015bnie okre\u015blone etykiety. Dlatego monitorowanie aplikacji jest bardzo proste do zrealizowania.<\/p>\n<p>Niestety, do zarz\u0105dzania logami wci\u0105\u017c nie ma rozwi\u0105zania \u201epod klucz\u201d, wi\u0119c musisz znale\u017a\u0107 rozwi\u0105zanie dla siebie:<\/p>\n<ul>\n<li>zarz\u0105dzana us\u0142uga w chmurze do centralizacji log\u00f3w (AWS, Azure lub Google)<\/li>\n<li>us\u0142uga monitorowania \u201emonitoring jako us\u0142uga\u201d (monitoring as a service) (na przyk\u0142ad Datadog)<\/li>\n<li>stworzenie w\u0142asnej us\u0142ugi zbierania log\u00f3w.<\/li>\n<\/ul>\n<p>Dla trzeciej opcji tradycyjnie korzysta\u0142em z Elasticsearch, mimo \u017ce nie zawsze by\u0142em z niego zadowolony (szczeg\u00f3lnie jego ci\u0119\u017cko\u015bci\u0105 i z\u0142o\u017cono\u015bci\u0105 konfiguracji).<\/p>\n<p>Loki zosta\u0142 zaprojektowany w celu uproszczenia realizacji zgodnie z nast\u0119puj\u0105cymi zasadami:<\/p>\n<ul>\n<li>by\u0107 \u0142atwym do uruchomienia<\/li>\n<li>zu\u017cywa\u0107 ma\u0142o zasob\u00f3w<\/li>\n<li>dzia\u0142a\u0107 samodzielnie bez \u017cadnej specjalnej obs\u0142ugi<\/li>\n<li>by\u0107 uzupe\u0142nieniem dla Prometheus w celu pomocy w badaniu b\u0142\u0119d\u00f3w<\/li>\n<\/ul>\n<p>Jednak ta prostota osi\u0105gana jest kosztem pewnych kompromis\u00f3w. Jednym z nich jest brak indeksowania tre\u015bci. Dlatego wyszukiwanie po tek\u015bcie nie jest zbyt efektywne ani bogate i nie pozwala na prowadzenie statystyk dotycz\u0105cych tre\u015bci. Ale poniewa\u017c Loki chce by\u0107 odpowiednikiem grep i uzupe\u0142nieniem Prometheusa, nie jest to wad\u0105.<\/p>\n<h3>\u015aledzenie incydent\u00f3w<\/h3>\n<p>Aby lepiej zrozumie\u0107, dlaczego Loki nie potrzebuje indeksowania, wr\u00f3\u0107my do metody \u015bledzenia incydent\u00f3w, kt\u00f3r\u0105 stosowali deweloperzy Loki:<\/p>\n<p><img decoding=\"async\" alt=\"Loki \u2014 zbieranie log\u00f3w, stosuj\u0105c podej\u015bcie Prometheus\" src=\"\/wp-content\/uploads\/2020\/02\/2f9ba72d68ccafbe44ab1700d08e3a33.jpg\" style=\"display:block;margin: 0 auto;\"><br \/>\n<i>1 Alert \u2192 2 Tablica \u2192 3 Zapytanie ad hoc \u2192 4 Agregacja log\u00f3w \u2192 5 Rozproszona \u015bledzenie \u2192 6 Napraw!<br \/>\n(1 Ostrze\u017cenie \u2192 2 Tablica \u2192 3 Zapytanie ad hoc \u2192 4 Agregacja log\u00f3w \u2192 5 Rozproszona \u015bledzenie \u2192 6 Naprawiamy!)<\/i><\/p>\n<p>Koncepcja polega na tym, \u017ce otrzymujemy jakie\u015b ostrze\u017cenie (Powiadomienie Slack, SMS itd.) i po tym:<\/p>\n<ul>\n<li>sprawdzamy tablice Grafana<\/li>\n<li>sprawdzamy metryki us\u0142ug (na przyk\u0142ad w Prometheusie)<\/li>\n<li>sprawdzamy zapisy log\u00f3w (na przyk\u0142ad w Elasticsearch)<\/li>\n<li>mo\u017cliwe, \u017ce spojrzymy na rozproszone \u015bledzenie (Jaeger, Zipkin itd.)<\/li>\n<li>i w ko\u0144cu naprawiamy pierwotny problem.<\/li>\n<\/ul>\n<p>Tutaj, w przypadku stosu Grafana + Prometheus + Elasticsearch + Zipkin, b\u0119dziemy musieli u\u017cy\u0107 czterech r\u00f3\u017cnych narz\u0119dzi. Aby zaoszcz\u0119dzi\u0107 czas, dobrze by\u0142oby mie\u0107 mo\u017cliwo\u015b\u0107 wykonania wszystkich tych krok\u00f3w za pomoc\u0105 jednego narz\u0119dzia: Grafana. Warto zauwa\u017cy\u0107, \u017ce takie podej\u015bcie do bada\u0144 zosta\u0142o wprowadzone w Grafana od wersji 6. W ten spos\u00f3b mo\u017cliwe staje si\u0119 odniesienie do danych Prometheus bezpo\u015brednio z Grafana.<\/p>\n<p><img decoding=\"async\" alt=\"Loki \u2014 zbieranie log\u00f3w, stosuj\u0105c podej\u015bcie Prometheus\" src=\"\/wp-content\/uploads\/2020\/02\/eefc5a599a23abeb0624f4e3265a31e6.jpg\" style=\"display:block;margin: 0 auto;\"><br \/>\n<i>Ekran Eksploratora jest podzielony mi\u0119dzy Prometheusa a Loki<\/i><\/p>\n<p>Na tym ekranie mo\u017cna przegl\u0105da\u0107 logi w Loki zwi\u0105zane z metrykami Prometheus, wykorzystuj\u0105c koncepcj\u0119 podzia\u0142u ekranu. Pocz\u0105wszy od wersji 6.5, Grafana pozwala na obs\u0142ug\u0119 identyfikatora \u015bledzenia (trace id) w zapisach log\u00f3w Loki w celu przechodzenia po linkach do ulubionych narz\u0119dzi \u015bledzenia rozproszonego (Jaeger).<\/p>\n<h3>Lokalny test Loki<\/h3>\n<p>Najlepszym sposobem na lokalne testowanie Loki jest u\u017cycie docker-compose. Plik docker-compose znajduje si\u0119 w repozytorium Loki. Mo\u017cesz uzyska\u0107 repozytorium za pomoc\u0105 nast\u0119puj\u0105cego polecenia <code>sshpass<\/code>:<\/p>\n<pre><code class=\"go\">$ git clone https:\/\/github.com\/grafana\/loki.git<\/code><\/pre>\n<p>Nast\u0119pnie musisz przej\u015b\u0107 do katalogu produkcyjnego:<\/p>\n<pre><code class=\"go\">$ cd production<\/code><\/pre>\n<p>Potem mo\u017cna pobra\u0107 najnowsze wersje obraz\u00f3w Docker:<\/p>\n<pre><code class=\"go\">$ docker-compose pull<\/code><\/pre>\n<p>Na koniec stack Loki uruchamiany jest nast\u0119puj\u0105cym poleceniem:<\/p>\n<pre><code class=\"go\">$ docker-compose up<\/code><\/pre>\n<h3>Architektura Loki<\/h3>\n<p>Oto ma\u0142a diagram z architektur\u0105 Loki:<\/p>\n<p><img decoding=\"async\" alt=\"Loki \u2014 zbieranie log\u00f3w, stosuj\u0105c podej\u015bcie Prometheus\" src=\"\/wp-content\/uploads\/2020\/02\/fc5703bcebc1391e719640e99544f909.jpg\" style=\"display:block;margin: 0 auto;\"><br \/>\n<i>Zasady architektury Loki<\/i><\/p>\n<p>Klient webowy uruchamia aplikacje na serwerze, Promtail zbiera logi i wysy\u0142a je do Loki, klient webowy r\u00f3wnie\u017c przesy\u0142a metadane do Loki. Loki wszystko agreguje i przekazuje do Grafany.<br \/>\nLoki jest uruchomiony. Aby wy\u015bwietli\u0107 dost\u0119pne komponenty, wykonaj nast\u0119puj\u0105ce polecenie:<\/p>\n<pre><code class=\"go\">$ docker ps<\/code><\/pre>\n<p>W przypadku \u015bwie\u017co zainstalowanego Dockera polecenie powinno zwr\u00f3ci\u0107 nast\u0119puj\u0105cy wynik:<\/p>\n<pre><code class=\"go\">IMAGE               PORTY                  NAZWY\ngrafana\/promtail:                          production_promtail_1\ngrafana\/grafana: m  0.0.0.0:3000-&gt;3000\/tcp production_grafana_1\ngrafana\/loki: late  80\/tcp,0.0.0.0:3100... production_loki_1<\/code><\/pre>\n<p>Widzimy nast\u0119puj\u0105ce komponenty:<\/p>\n<ul>\n<li>Promtail: agent odpowiedzialny za centralizacj\u0119 log\u00f3w<\/li>\n<li>Grafana: znane narz\u0119dzie do pulpit\u00f3w nawigacyjnych<\/li>\n<li>Loki: demon centralizacji danych<\/li>\n<\/ul>\n<p>W ramach klasycznej infrastruktury (na przyk\u0142ad opartej na maszynach wirtualnych) na ka\u017cdej maszynie musi by\u0107 wdro\u017cony agent Promtail. Grafana i Loki mog\u0105 by\u0107 zainstalowane na tej samej maszynie.<\/p>\n<h3>Wdro\u017cenie w Kubernetes<\/h3>\n<p>Instalacja komponent\u00f3w Loki w Kubernetes b\u0119dzie polega\u0107 na nast\u0119puj\u0105cych krokach:<\/p>\n<ul>\n<li>daemonSet do wdro\u017cenia agenta Promtail na ka\u017cdej z maszyn w klastrze serwer\u00f3w<\/li>\n<li>wdro\u017cenie (Deployment) Loki<\/li>\n<li>i na koniec \u2014 wdro\u017cenie Grafany.<\/li>\n<\/ul>\n<p>Na szcz\u0119\u015bcie, Loki jest dost\u0119pny jako pakiet Helm, co u\u0142atwia jego wdro\u017cenie.<\/p>\n<h3>Instalacja przez Helm<\/h3>\n<p>Helm powinien by\u0107 ju\u017c zainstalowany. Mo\u017cna go pobra\u0107 z repozytorium GitHub projektu. Instalacja odbywa si\u0119 przez rozpakowanie archiwum odpowiadaj\u0105cego twojej architekturze i dodanie helm do <code>$PATH<\/code>.<\/p>\n<blockquote><p><i><b>Uwaga:<\/b> Wersja 3.0.0 Helma zosta\u0142a ostatnio wydana. Poniewa\u017c w niej by\u0142o wiele zmian, czytelnikowi zaleca si\u0119 poczeka\u0107 troch\u0119 przed jej u\u017cywaniem.<\/i>.<\/p><\/blockquote>\n<h3>Dodanie \u017ar\u00f3d\u0142a do Helma<\/h3>\n<p>Pierwszym krokiem b\u0119dzie dodanie repozytorium \u201eloki\u201d za pomoc\u0105 nast\u0119puj\u0105cego polecenia:<\/p>\n<pre><code class=\"go\">$ helm add loki https:\/\/grafana.github.io\/loki\/charts<\/code><\/pre>\n<p>Po tym mo\u017cna szuka\u0107 pakiet\u00f3w o nazwie \u201eloki\u201d:<\/p>\n<pre><code class=\"go\">$ helm search loki<\/code><\/pre>\n<p>Wynik:<\/p>\n<pre><code class=\"go\">loki\/loki       0.17.2 v0.4.0 Loki: jak Prometheus, ale dla log\u00f3w.\nloki\/loki-stack 0.19.1 v0.4.0 Loki: jak Prometheus, ale dla log\u00f3w.\nloki\/fluent-bit 0.0.2  v0.0.1 U\u017cywa wtyczki go fluent-bit dla...\nloki\/promtail   0.13.1 v0.4.0 Odpowiedzialny za zbieranie log\u00f3w i...<\/code><\/pre>\n<p>Te pakiety maj\u0105 nast\u0119puj\u0105ce funkcje:<\/p>\n<ul>\n<li>pakiet <b>loki\/loki<\/b> odpowiada tylko serwerowi Loki<\/li>\n<li>pakiet <b>loki\/fluent-bit<\/b> pozwala na wdro\u017cenie DaemonSet u\u017cywaj\u0105c fluent-bit do zbierania log\u00f3w zamiast Promtail<\/li>\n<li>pakiet <b>loki\/promtail<\/b> zawiera agenta zbieraj\u0105cego logi<\/li>\n<li>pakiet <b>loki\/loki-stack<\/b>, pozwala na jednoczesne wdro\u017cenie Loki wraz z Promtail.<\/li>\n<\/ul>\n<h3>Instalacja Loki<\/h3>\n<p>Aby wdro\u017cy\u0107 Loki w Kubernetes, wykonaj nast\u0119puj\u0105ce polecenie w przestrzeni nazw \u201emonitoring\u201d:<\/p>\n<pre><code class=\"go\">$ helm upgrade --install loki loki\/loki-stack --namespace monitoring<\/code><\/pre>\n<p>Aby zapisa\u0107 na dysku, dodaj parametr <code>--set loki.persistence.enabled = true:<\/code><\/p>\n<pre><code class=\"go\">$ helm upgrade --install loki loki\/loki-stack \n              --namespace monitoring \n              --set loki.persistence.enabled=true<\/code><\/pre>\n<blockquote><p><i><b>Uwaga:<\/b> je\u015bli chcesz uruchomi\u0107 Grafana jednocze\u015bnie, dodaj parametr <code>--set grafana.enabled = true<\/code><\/i><\/p><\/blockquote>\n<p>Uruchamiaj\u0105c to polecenie, powiniene\u015b uzyska\u0107 nast\u0119puj\u0105cy wynik:<\/p>\n<pre><code class=\"go\">OSTATNIO WDRO\u017bONE: Wt 19 lis 2019 15:56:54\nPRZESTRZE\u0143 NAZWOWA: monitorowanie\nSTAN: WDRO\u017bONY\nZASOBY:\n==&amp;gt; v1\/ClusterRole\nNAZWA WIEK\nloki-promtail-clusterrole 189d\n&hellip;\nNOTATKI:\nStos Loki zosta\u0142 wdro\u017cony w twoim klastrze. Loki mo\u017ce by\u0107 teraz dodany jako \u017ar&oacute;d\u0142o danych w Grafanie.\nZobacz &lt;a href=&quot;http:\/\/docs.grafana.org\/features\/datasources\/loki\/&quot;&gt;http:\/\/docs.grafana.org\/features\/datasources\/loki\/&lt;\/a&gt; wi\u0119cej szczeg&oacute;\u0142&oacute;w.<\/code><\/pre>\n<p>Sprawdzaj\u0105c stan pod\u00f3w w przestrzeni nazw \u201emonitoring\u201d, zobaczymy, \u017ce wszystko jest uruchomione:<\/p>\n<pre><code class=\"go\">$ kubectl -n monitoring get pods -l release=loki<\/code><\/pre>\n<p>Wynik:<\/p>\n<pre><code class=\"go\">NAZWA                GOTOWY  STATUS   RESTARTY  WIEK\nloki-0               1\/1    Dzia\u0142a  0         147m\nloki-promtail-9zjvc  1\/1    Dzia\u0142a  0         3h25m\nloki-promtail-f6brf  1\/1    Dzia\u0142a  0         11h\nloki-promtail-hdcj7  1\/1    Dzia\u0142a  0         3h23m\nloki-promtail-jbqhc  1\/1    Dzia\u0142a  0         11h\nloki-promtail-mj642  1\/1    Dzia\u0142a  0         62m\nloki-promtail-nm64g  1\/1    Dzia\u0142a  0         24m<\/code><\/pre>\n<p>Wszystkie pody s\u0105 uruchomione. Teraz nadszed\u0142 czas, aby wykona\u0107 kilka test\u00f3w!<\/p>\n<h3>Pod\u0142\u0105czenie do Grafana<\/h3>\n<p>Aby po\u0142\u0105czy\u0107 si\u0119 z Grafana w Kubernetes, musisz otworzy\u0107 tunel do jego podu. Poni\u017cej znajduje si\u0119 polecenie do otwarcia portu 3000 dla podu Grafana:<\/p>\n<pre><code class=\"go\">$ kubectl -n port-forward monitoring svc\/loki-grafana 3000:80<\/code><\/pre>\n<p>Kolejnym wa\u017cnym punktem jest konieczno\u015b\u0107 przywr\u00f3cenia has\u0142a administratora Grafana. Has\u0142o przechowywane jest w sekrecie <code>loki-grafana<\/code> w polu <code>.data.admin-user<\/code> w formacie base64.<\/p>\n<p>Aby je przywr\u00f3ci\u0107, konieczne jest wykonanie nast\u0119puj\u0105cego polecenia:<\/p>\n<pre><code class=\"go\">$ kubectl -n monitoring get secret loki-grafana \n --template '{{index .data \"admin-password\" | base64decode}}'; echo<\/code><\/pre>\n<p>U\u017cyj tego has\u0142a wraz z domy\u015blnym kontem administratora (admin).<\/p>\n<h3>Definiowanie \u017ar\u00f3d\u0142a danych Loki w Grafana<\/h3>\n<p>Najpierw upewnij si\u0119, \u017ce utworzone zosta\u0142o \u017ar\u00f3d\u0142o danych Loki (Konfiguracja \/ \u0179r\u00f3d\u0142o danych).<br \/>\nOto przyk\u0142ad:<\/p>\n<p><img decoding=\"async\" alt=\"Loki \u2014 zbieranie log\u00f3w, stosuj\u0105c podej\u015bcie Prometheus\" src=\"\/wp-content\/uploads\/2020\/02\/3b670a4b1a8b4db74b1e1f525fd03129.jpg\" style=\"display:block;margin: 0 auto;\"><br \/>\n<i>Przyk\u0142ad konfiguracji \u017ar\u00f3d\u0142a danych dla Loki<\/i><\/p>\n<p>Klikaj\u0105c \u201eTest\u201d, mo\u017cesz sprawdzi\u0107 po\u0142\u0105czenie z Loki.<\/p>\n<h3>Wykonujemy zapytania do Loki<\/h3>\n<p>Teraz przejd\u017a do Grafana do sekcji \u201eEksploruj\u201d. Podczas odbierania log\u00f3w z kontener\u00f3w Loki dodaje metadane z Kubernetes. Umo\u017cliwia to przegl\u0105danie log\u00f3w okre\u015blonego kontenera.<\/p>\n<p>Na przyk\u0142ad, aby wybiera\u0107 logi kontenera promtail, mo\u017cesz u\u017cy\u0107 nast\u0119puj\u0105cego zapytania: <code>{container_name = \"promtail\"}<\/code>.<br \/>\nPami\u0119taj r\u00f3wnie\u017c, aby wybra\u0107 \u017ar\u00f3d\u0142o danych Loki.<\/p>\n<p>To zapytanie zwr\u00f3ci aktywno\u015b\u0107 kontener\u00f3w w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<p><img decoding=\"async\" alt=\"Loki \u2014 zbieranie log\u00f3w, stosuj\u0105c podej\u015bcie Prometheus\" src=\"\/wp-content\/uploads\/2020\/02\/ed2baebd374b9a6242cfc397776fa65f.jpg\" style=\"display:block;margin: 0 auto;\"><br \/>\n<i>Wynik zapytania w Grafana <\/i><\/p>\n<h3>Dodawanie do pulpitu nawigacyjnego<\/h3>\n<p>Zaczynaj\u0105c od Grafana 6.4, mo\u017cna umie\u015bci\u0107 informacje o logach bezpo\u015brednio na pulpicie nawigacyjnym. Umo\u017cliwia to u\u017cytkownikowi szybkie prze\u0142\u0105czanie si\u0119 pomi\u0119dzy ilo\u015bci\u0105 zapyta\u0144 na jego stronie a \u015bladami aplikacji.<\/p>\n<p>Poni\u017cej znajduje si\u0119 przyk\u0142ad pulpitu nawigacyjnego, wdra\u017caj\u0105cego t\u0119 interakcj\u0119:<\/p>\n<p><img decoding=\"async\" alt=\"Loki \u2014 zbieranie log\u00f3w, stosuj\u0105c podej\u015bcie Prometheus\" src=\"\/wp-content\/uploads\/2020\/02\/d76c5345d543579eb3768fcdb0a2567b.jpg\" style=\"display:block;margin: 0 auto;\"><br \/>\n<i>Przyk\u0142ad kokpitu z metrykami Prometheus i logami Loki<\/i><\/p>\n<h3>Przysz\u0142o\u015b\u0107 Loki<\/h3>\n<p>Zacz\u0105\u0142em u\u017cywa\u0107 Loki jeszcze w maju \/ czerwcu, zaczynaj\u0105c od wersji 0.1. Dzi\u015b wydano ju\u017c wersj\u0119 1, a nawet 1.1 i 1.2.<\/p>\n<p>Trzeba przyzna\u0107, \u017ce wersja 0.1 by\u0142a niewystarczaj\u0105co stabilna. Jednak 0.3 ju\u017c pokaza\u0142a prawdziwe oznaki dojrza\u0142o\u015bci, a kolejne wersje (0.4, a nast\u0119pnie 1.0) tylko wzmocni\u0142y to wra\u017cenie.<\/p>\n<p>Po wersji 1.0.0 nikt nie ma ju\u017c usprawiedliwienia, aby nie korzysta\u0107 z tego wspania\u0142ego narz\u0119dzia.<\/p>\n<p>Dalsze ulepszenia powinny dotyczy\u0107 nie samego Loki, ale raczej jego integracji z doskona\u0142\u0105 Grafan\u0105. W rzeczywisto\u015bci w Grafanie 6.4 ju\u017c zacz\u0119\u0142a istnie\u0107 dobra integracja z kokpitami.<\/p>\n<p>Grafana 6.5, kt\u00f3ra zosta\u0142a wydana niedawno, jeszcze bardziej poprawia t\u0119 integracj\u0119, automatycznie rozpoznaj\u0105c zawarto\u015b\u0107 log\u00f3w w formacie JSON.<\/p>\n<p>Poni\u017cej wideo przedstawiaj\u0105ce ma\u0142y przyk\u0142ad tego mechanizmu:<\/p>\n<p><img decoding=\"async\" alt=\"Loki \u2014 zbieranie log\u00f3w, stosuj\u0105c podej\u015bcie Prometheus\" src=\"\/wp-content\/uploads\/2020\/02\/1e0a5269f21e401f349a35788672aec1.jpg\" style=\"display:block;margin: 0 auto;\"><br \/>\n<i>Wykorzystanie ci\u0105g\u00f3w Loki wy\u015bwietlanych w Grafanie<\/i><\/p>\n<p>Mo\u017cna u\u017cy\u0107 jednego z p\u00f3l JSON, na przyk\u0142ad do:<\/p>\n<ul>\n<li>linkowania do zewn\u0119trznego narz\u0119dzia<\/li>\n<li>filtrowania zawarto\u015bci log\u00f3w<\/li>\n<\/ul>\n<p>Na przyk\u0142ad mo\u017cesz klikn\u0105\u0107 na traceId, aby przej\u015b\u0107 do Zipkin lub Jaeger.<\/p>\n<p>Tradycyjnie czekamy na Wasze komentarze i zapraszamy na <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/P37L\/\">otwarty webinar<\/a><\/noindex>, gdzie porozmawiamy o tym, jak rozwija\u0142 si\u0119 przemys\u0142 DevOps w 2019 roku i om\u00f3wimy mo\u017cliwe kierunki rozwoju na rok 2020.<\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/487118\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0430\u043b\u044e\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435! \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430 \u043a\u0443\u0440\u0441 \u00abDevOps \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b\u00bb \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u2014 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 Loki. \u041f\u0440\u043e\u0435\u043a\u0442 Loki \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f Grafana \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u0430 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0431\u043e\u0440 \u043b\u043e\u0433\u043e\u0432 (\u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432). \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0434\u043b\u044f Loki \u0431\u044b\u043b Prometheus \u0441 \u0438\u0434\u0435\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432 \u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043b\u043e\u0433\u0430\u043c\u0438: [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-56206","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0430\u043b\u044e\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/loki-sbor-logov-ispolzuya-podhod-prometheus\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Loki \u2014 \u0441\u0431\u043e\u0440 \u043b\u043e\u0433\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0434\u0445\u043e\u0434 Prometheus | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0430\u043b\u044e\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/loki-sbor-logov-ispolzuya-podhod-prometheus\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-06T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-02-01T09:41:00+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Loki \u2014 zbieranie log\u00f3w, korzystaj\u0105c z podej\u015bcia Prometheus | ProHoster","description":"Cze\u015b\u0107, Habrzy!","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/loki-sbor-logov-ispolzuya-podhod-prometheus","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Loki \u2014 \u0441\u0431\u043e\u0440 \u043b\u043e\u0433\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043e\u0434\u0445\u043e\u0434 Prometheus | ProHoster","og:description":"\u0421\u0430\u043b\u044e\u0442, \u0445\u0430\u0431\u0440\u043e\u0432\u0447\u0430\u043d\u0435!","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/loki-sbor-logov-ispolzuya-podhod-prometheus","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-06T21:00:00+00:00","article:modified_time":"2021-02-01T09:41:00+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"56206","title":null,"description":"","keywords":"","keyphrases":null,"primary_term":null,"canonical_url":"","og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:29:18","updated":"2022-09-28 02:03:48","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/56206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=56206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/56206\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=56206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=56206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=56206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}