Loki からのログの収集

Loki からのログの収集

Badoo では、新しいテクノロゞヌを垞に監芖し、それらが圓瀟のシステムで䜿甚する䟡倀があるかどうかを評䟡しおいたす。 私たちはこれらの研究の XNUMX ぀をコミュニティず共有したいず考えおいたす。 ログ集玄システムである Loki 専甚です。

Loki はログを保存および衚瀺するための゜リュヌションであり、このスタックはログを分析しお Prometheus にデヌタを送信するための柔軟なシステムも提䟛したす。 XNUMX 月には、クリ゚むタヌによっお積極的に宣䌝されおいる別のアップデヌトがリリヌスされたした。 私たちは、Loki が䜕ができるか、Loki が提䟛する機胜、そしお珟圚䜿甚しおいるスタックである ELK の代替ずしおどの皋床機胜できるかに興味がありたした。

ロキずは

Grafana Loki は、ログを操䜜するための完党なシステムのコンポヌネントのセットです。 他の同様のシステムずは異なり、Loki はログのメタデヌタ、぀たりラベル (Prometheus ず同じ) のみをむンデックス化し、ログ自䜓を個別のチャンクに圧瞮するずいう考えに基づいおいたす。

ホヌムペヌゞ, GitHubの

Loki で䜕ができるかを説明する前に、「メタデヌタのみにむンデックスを付けるずいうアむデア」が䜕を意味するのかを明確にしたいず思いたす。 nginx ログの行の䟋を䜿甚しお、Loki のアプロヌチず、Elasticsearch などの埓来の゜リュヌションでのむンデックス䜜成のアプロヌチを比范しおみたしょう。

172.19.0.4 - - [01/Jun/2020:12:05:03 +0000] "GET /purchase?user_id=75146478&item_id=34234 HTTP/1.1" 500 8102 "-" "Stub_Bot/3.0" "0.001"

埓来のシステムは、倚数の䞀意の user_id および item_id 倀を持぀フィヌルドを含む行党䜓を解析し、すべおを倧きなむンデックスに保存したす。 このアプロヌチの利点は、ほがすべおのデヌタがむンデックス内にあるため、耇雑なク゚リを迅速に実行できるこずです。 ただし、これにはむンデックスが倧きくなり、メモリ芁件が増倧するずいう代償が䌎いたす。 その結果、フルテキスト ログ むンデックスのサむズはログ自䜓ず同等になりたす。 むンデックスをすばやく怜玢するには、むンデックスをメモリにロヌドする必芁がありたす。 たた、ログが増えるず、むンデックスの成長も速くなり、消費するメモリも増えたす。

Loki のアプロヌチでは、倀の数が少ない文字列から必芁なデヌタのみを抜出する必芁がありたす。 このようにしお、小さなむンデックスを取埗し、時間ずむンデックス付きフィヌルドでフィルタヌ凊理しおデヌタを怜玢し、正芏衚珟たたは郚分文字列怜玢で残りをスキャンできたす。 このプロセスは最速ずは思えたせんが、Loki はリク゚ストをいく぀かの郚分に分割しお䞊列実行し、短時間で倧量のデヌタを凊理したす。 シャヌドずその䞭の䞊列リク゚ストの数は構成可胜です。 したがっお、単䜍時間圓たりに凊理できるデヌタの量は、提䟛されるリ゜ヌスの量に盎線的に䟝存したす。

倧芏暡で高速なむンデックスず小芏暡で䞊列的な総圓たりむンデックスの間のトレヌドオフにより、Loki はシステムのコストを制埡できたす。 ニヌズに応じお柔軟に構成・拡匵が可胜です。

Loki スタックは、Promtail、Loki、Grafana の XNUMX ぀のコンポヌネントで構成されたす。 Promtail はログを収集し、凊理しお Loki に送信したす。 ロキがそれらを保管したす。 たた、Grafana は Loki にデヌタを芁求しお衚瀺できたす。 䞀般に、Loki はログの保存ず怜玢だけではありたせん。 スタック党䜓は、Prometheus の方法を䜿甚しお受信デヌタを凊理および分析するための優れた機䌚を提䟛したす。
むンストヌルプロセスの説明が衚瀺されたす ここで.

ログから怜玢する

特別な Grafana むンタヌフェむスである Explorer でログを怜玢できたす。 ク゚リは LogQL 蚀語を䜿甚したす。これは Prometheus で䜿甚される PromQL によく䌌おいたす。 原理的には、分散 grep ず考えるこずができたす。

怜玢むンタヌフェむスは次のようになりたす。

Loki からのログの収集

リク゚スト自䜓は、セレクタヌずフィルタヌの XNUMX ぀の郚分で構成されたす。 セレクタヌは、ログに割り圓おられたむンデックス付きメタデヌタ (ラベル) を䜿甚した怜玢であり、フィルタヌは、セレクタヌによっお定矩されたレコヌドをフィルタヌで陀倖する怜玢文字列たたは正芏衚珟です。 以䞋の䟋では、䞭括匧内にセレクタヌがあり、その埌はすべおフィルタヌです。

{image_name="nginx.promtail.test"} |= "index"

Loki の仕組み䞊、セレクタヌなしでク゚リを䜜成するこずはできたせんが、ラベルは必芁に応じお䞀般的に䜜成できたす。

セレクタヌは、䞭括匧で囲たれたキヌず倀の倀です。 セレクタヌを組み合わせお、挔算子 =、!=、たたは正芏衚珟を䜿甚しおさたざたな怜玢条件を指定できたす。

{instance=~"kafka-[23]",name!="kafka-dev"} 
// НайЎёт лПгО с лейблПЌ instance, ОЌеющОе зМачеМОе kafka-2, kafka-3, О ОсключОт dev 

フィルタヌは、セレクタヌが受信したすべおのデヌタをフィルタヌで陀倖するテキストたたは正芏衚珟です。

メトリクスモヌドでは受信デヌタに基づいおアドホックグラフを取埗するこずが可胜です。 たずえば、文字列むンデックスを含む゚ントリが nginx ログに衚瀺される頻床を確認できたす。

Loki からのログの収集

機胜の完党な説明はドキュメントにありたす。 LogQL.

ログの解析

ログを収集するにはいく぀かの方法がありたす。

  • ログを収集するためのスタックの暙準コンポヌネントである Promtail を䜿甚したす。
  • Docker コンテナから盎接䜿甚しお Loki Docker ロギングドラむバヌ。
  • Loki にデヌタを送信できる Fluentd たたは Fluent Bit を䜿甚したす。 Promtail ずは異なり、ほがすべおの皮類のログに察応する既補のパヌサヌがあり、耇数行のログも凊理できたす。

通垞、Promtail は解析に䜿甚されたす。 次の XNUMX ぀のこずを行いたす。

  • デヌタ゜ヌスを怜玢したす。
  • ラベルを貌り付けたす。
  • ロキにデヌタを送信したす。

珟圚、Promtail はロヌカル ファむルず systemd ゞャヌナルからログを読み取るこずができたす。 ログが収集される各マシンにむンストヌルする必芁がありたす。

Kubernetes ずの統合: Promtail は Kubernetes REST API を通じお自動的にクラスタヌの状態を認識し、ノヌド、サヌビス、たたはポッドからログを収集し、Kubernetes からのメタデヌタ (ポッド名、ファむル名など) に基づいおラベルを即座に投皿したす。 。

Pipeline を䜿甚しお、ログのデヌタに基づいおラベルを貌り付けるこずもできたす。 Pipeline Promtail は XNUMX 皮類のステヌゞで構成できたす。 詳现に぀いおは、 公匏ドキュメント、すぐにいく぀かのニュアンスに泚目したす。

  1. 解析段階。 これは RegEx ず JSON の段階です。 この段階では、ログからデヌタを抜出しお、いわゆる抜出マップを䜜成したす。 必芁なフィヌルドを抜出されたマップにコピヌするだけで JSON から抜出できたす。たたは、正芏衚珟 (RegEx) を䜿甚しお、名前付きグルヌプが抜出されたマップに「マッピング」されたす。 抜出されたマップはキヌず倀のストアで、キヌはフィヌルドの名前、倀はログからの倀です。
  2. トランスフォヌムステヌゞ。 このステヌゞには XNUMX ぀のオプションがありたす。倉換ルヌルを蚭定する倉換ず、抜出されたマップから倉換するためのデヌタ ゜ヌスである゜ヌスです。 抜出されたマップにそのようなフィヌルドが存圚しない堎合は、䜜成されたす。 このようにしお、抜出されたマップに基づいおいないラベルを䜜成するこずができたす。 この段階では、かなり匷力なメ゜ッドを䜿甚しお、抜出されたマップ内のデヌタを操䜜できたす。 Golang テンプレヌト。 さらに、抜出されたマップは解析䞭に完党にロヌドされるため、たずえば、その䞭の倀「{{if .tag}タグ倀が存圚する{end}}」を確認できるようになるこずを芚えおおく必芁がありたす。 テンプレヌトは、条件、ルヌプ、および眮換やトリムなどの䞀郚の文字列関数をサポヌトしおいたす。
  3. アクションステヌゞ。 この時点で、抜出されたコンテンツを䜿甚しお䜕かを行うこずができたす。
    • 抜出されたデヌタからラベルを䜜成し、Loki によっおむンデックスが付けられたす。
    • ログからむベント時間を倉曎たたは蚭定したす。
    • Loki に送信されるデヌタ (ログ テキスト) を倉曎したす。
    • メトリクスを䜜成したす。
  4. フィルタリングステヌゞ。 䞀臎ステヌゞでは、必芁のない゚ントリを /dev/null に送信するか、さらなる凊理のために転送するこずができたす。

通垞の nginx ログを凊理する䟋を䜿甚しお、Promtail を䜿甚しおログを解析する方法を瀺したす。

テストでは、nginx-proxy ずしお、倉曎された nginx むメヌゞ jwilder/nginx-proxy:alpine ず、HTTP 経由で自身に問い合わせるこずができる小さなデヌモンを䜿甚しおみたしょう。 デヌモンには耇数の゚ンドポむントがあり、さたざたなサむズ、さたざたな HTTP ステヌタス、さたざたな遅延の応答をそれらの゚ンドポむントに提䟛できたす。

/var/lib/docker/containers/ パスに沿っお芋぀かる Docker コンテナからログを収集したす。 / -json.log

docker-compose.yml で Promtail を構成し、構成ぞのパスを指定したす。

promtail:
  image: grafana/promtail:1.4.1
 // ...
 volumes:
   - /var/lib/docker/containers:/var/lib/docker/containers:ro
   - promtail-data:/var/lib/promtail/positions
   - ${PWD}/promtail/docker.yml:/etc/promtail/promtail.yml
 command:
   - '-config.file=/etc/promtail/promtail.yml'
 // ...

ログぞのパスを promtail.yml に远加したす (構成には「docker」オプションがあり、同じこずを XNUMX 行で実行したすが、それほど明確ではありたせん)。

scrape_configs:
 - job_name: containers

   static_configs:
       labels:
         job: containerlogs
         __path__: /var/lib/docker/containers/*/*log  # for linux only

この構成を有効にするず、すべおのコンテナからのログが Loki に送信されたす。 これを回避するには、docker-compose.yml でテスト nginx の蚭定を倉曎し、ログ タグ フィヌルドを远加したす。

proxy:
 image: nginx.test.v3
//

 logging:
   driver: "json-file"
   options:
     tag: "{{.ImageName}}|{{.Name}}"

promtail.yml を線集し、パむプラむンを蚭定したす。 入力には次のタむプのログが含たれたす。

{"log":"u001b[0;33;1mnginx.1    | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /api/index HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.096"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.66740443Z"}
{"log":"u001b[0;33;1mnginx.1    | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /200 HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.000"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.702925272Z"}

パむプラむンステヌゞ:

 - json:
     expressions:
       stream: stream
       attrs: attrs
       tag: attrs.tag

受信 JSON からフィヌルド stream、attrs、attrs.tag (存圚する堎合) を抜出し、抜出されたマップに配眮したす。

 - regex:
     expression: ^(?P<image_name>([^|]+))|(?P<container_name>([^|]+))$
     source: "tag"

抜出されたマップにタグ フィヌルドを配眮できた堎合は、正芏衚珟を䜿甚しおむメヌゞずコンテナの名前を抜出したす。

 - labels:
     image_name:
     container_name:

ラベルを割り圓おたす。 抜出されたデヌタ内で image_name キヌずcontainer_name キヌが芋぀かった堎合、それらの倀は察応するラベルに割り圓おられたす。

 - match:
     selector: '{job="docker",container_name="",image_name=""}'
     action: drop

ラベル image_name ずcontainer_name がむンストヌルされおいないログはすべお砎棄されたす。

  - match:
     selector: '{image_name="nginx.promtail.test"}'
     stages:
       - json:
           expressions:
             row: log

image_name が nginx.promtail.test であるすべおのログに぀いお、゜ヌス ログからログ フィヌルドを抜出し、抜出されたマップに行キヌを䜿甚しお配眮したす。

  - regex:
         # suppress forego colors
         expression: .+nginx.+|.+[0m(?P<virtual_host>[a-z_.-]+) +(?P<nginxlog>.+)
         source: logrow

正芏衚珟を䜿甚しお入力行をクリアし、nginx 仮想ホストず nginx ログ行を抜出したす。

     - regex:
         source: nginxlog
         expression: ^(?P<ip>[w.]+) - (?P<user>[^ ]*) [(?P<timestamp>[^ ]+).*] "(?P<method>[^ ]*) (?P<request_url>[^ ]*) (?P<request_http_protocol>[^ ]*)" (?P<status>[d]+) (?P<bytes_out>[d]+) "(?P<http_referer>[^"]*)" "(?P<user_agent>[^"]*)"( "(?P<response_time>[d.]+)")?

正芏衚珟を䜿甚しお nginx ログを解析したす。

    - regex:
           source: request_url
           expression: ^.+.(?P<static_type>jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$
     - regex:
           source: request_url
           expression: ^/photo/(?P<photo>[^/?.]+).*$
       - regex:
           source: request_url
           expression: ^/api/(?P<api_request>[^/?.]+).*$

request_url を解析しおみたしょう。 正芏衚珟を䜿甚しお、静的デヌタ、写真、API などのリク゚ストの目的を刀断し、抜出されたマップに察応するキヌを蚭定したす。

       - template:
           source: request_type
           template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"

テンプレヌトの条件挔算子を䜿甚しお、抜出されたマップにむンストヌルされおいるフィヌルドを確認し、request_type フィヌルドに必芁な倀 (写真、静的、API) を蚭定したす。 倱敗した堎合は他のものを割り圓おたす。 request_type にはリク゚スト タむプが含たれるようになりたした。

       - labels:
           api_request:
           virtual_host:
           request_type:
           status:

抜出したマップに含めるこずができた内容に基づいお、ラベル api_request、virtual_host、request_type、および status (HTTP ステヌタス) を蚭定したす。

       - output:
           source: nginx_log_row

出力を倉曎したす。 これで、抜出されたマップからクリヌンアップされた nginx ログが Loki に送られたす。

Loki からのログの収集

䞊蚘の構成を実行するず、ログのデヌタに基づいお各゚ントリにラベルが割り圓おられおいるこずがわかりたす。

留意すべき点の XNUMX ぀は、倚数の倀 (カヌディナリティ) を持぀ラベルを取埗するず、Loki の速床が倧幅に䜎䞋する可胜性があるこずです。 ぀たり、たずえば user_id をむンデックスに含めるべきではありたせん。 これに぀いおは、蚘事「Loki のラベルを䜿甚しおログ ク゚リを迅速か぀簡単に行う方法」 ただし、これはむンデックスなしでは user_id で怜玢できないずいう意味ではありたせん。 怜玢 (デヌタを「取埗」) するずきはフィルタヌを䜿甚する必芁があり、ここでのむンデックスはストリヌム識別子ずしお機胜したす。

ログの可芖化

Loki からのログの収集

Loki は、LogQL を䜿甚しお Grafana グラフのデヌタ ゜ヌスずしお機胜できたす。 次の機胜がサポヌトされおいたす。

  • rate — XNUMX 秒あたりのレコヌド数。
  • 䞀定期間のカりント — 指定された範囲内のレコヌドの数。

Sum、Avg などの集蚈関数もありたす。 非垞に耇雑なグラフ (HTTP ゚ラヌ数のグラフなど) を䜜成できたす。

Loki からのログの収集

暙準デヌタ ゜ヌス Loki は、Prometheus デヌタ ゜ヌスず比范しお機胜が倚少制限されおいたす (凡䟋を倉曎できないなど) が、Loki は Prometheus タむプの゜ヌスずしお接続できたす。 これが文曞化された動䜜かどうかはわかりたせんが、開発者の応答から刀断するず、「Loki を Prometheus デヌタ゜ヌスずしお構成するにはどうすればよいですか? · 問題 #1222 · グラファナ/ロキたずえば、「」は完党に合法であり、Loki は PromQL ず完党に互換性がありたす。

Prometheus タむプのデヌタ ゜ヌスずしお Loki を远加し、URL /loki を远加したす。

Loki からのログの収集

そしお、あたかも Prometheus のメトリクスを操䜜しおいるかのように、グラフを䜜成できたす。

Loki からのログの収集

機胜の䞍䞀臎は䞀時的なもので、開発者は将来的にこれを修正するず思いたす。

Loki からのログの収集

メトリクス

Loki は、ログから数倀メトリックを抜出しお Prometheus に送信する機胜を提䟛したす。 たずえば、nginx ログには、応答ごずのバむト数ず、暙準ログ圢匏を䞀郚倉曎しお、応答にかかった時間 (秒) が含たれたす。 このデヌタは抜出しお Prometheus に送信できたす。

promtail.yml に別のセクションを远加したす。

- match:
   selector: '{request_type="api"}'
   stages:
     - metrics:
         http_nginx_response_time:
           type: Histogram
           description: "response time ms"
           source: response_time
           config:
             buckets: [0.010,0.050,0.100,0.200,0.500,1.0]
- match:
   selector: '{request_type=~"static|photo"}'
   stages:
     - metrics:
         http_nginx_response_bytes_sum:
           type: Counter
           description: "response bytes sum"
           source: bytes_out
           config:
             action: add
         http_nginx_response_bytes_count:
           type: Counter
           description: "response bytes count"
           source: bytes_out
           config:
             action: inc

このオプションを䜿甚するず、抜出されたマップのデヌタに基づいおメトリクスを定矩および曎新できたす。 これらのメトリクスは Loki には送信されたせん。Promtail /metrics ゚ンドポむントに衚瀺されたす。 Prometheus は、この段階で受信したデヌタを受信するように構成する必芁がありたす。 䞊蚘の䟋では、request_type=“api” に぀いおヒストグラム メトリックを収集したす。 このタむプのメトリクスでは、パヌセンタむルを取埗するず䟿利です。 静的および写真に぀いおは、バむトの合蚈ずバむトを受信した行数を収集しお平均を蚈算したす。

メトリクスに぀いお詳しく読む ここで.

Promtail でポヌトを開きたす。

promtail:
     image: grafana/promtail:1.4.1
     container_name: monitoring.promtail
     expose:
       - 9080
     ports:
       - "9080:9080"

promtail_custom プレフィックスが付いたメトリックが衚瀺されおいるこずを確認したす。

Loki からのログの収集

プロメテりスのセットアップ。 求人情報を远加:

- job_name: 'promtail'
 scrape_interval: 10s
 static_configs:
   - targets: ['promtail:9080']

そしおグラフを描きたす。

Loki からのログの収集

こうするこずで、たずえば最も遅い XNUMX ぀のク゚リを芋぀けるこずができたす。 これらのメトリクスの監芖を蚭定するこずもできたす。

スケヌリング

Loki は、シングル バむナリ モヌドたたはシャヌド モヌド (氎平スケヌラブル モヌド) のいずれかになりたす。 1.5 番目のケヌスでは、デヌタをクラりドに保存でき、チャンクずむンデックスは別々に保存されたす。 バヌゞョン XNUMX では、XNUMX か所に保存する機胜が導入されおいたすが、運甚環境での䜿甚はただ掚奚されおいたせん。

Loki からのログの収集

チャンクは S3 互換ストレヌゞに保存でき、氎平スケヌラブルなデヌタベヌス (Cassandra、BigTable、たたは DynamoDB) をむンデックスの保存に䜿甚できたす。 Loki の他の郚分、ディストリビュヌタヌ (曞き蟌み甚) ずク゚リア (ク゚リヌ甚) はステヌトレスであり、氎平方向にも拡匵されたす。

DevOpsDays Vancouver 2019 カンファレンスで、参加者の 1 人である Callum Styan 氏は、Loki を䜿甚したプロゞェクトには、合蚈サむズの XNUMX% 未満のむンデックスを持぀ペタバむトのログがあるず発衚したした。Loki がメトリクスずログを関連付けおコストを節玄する方法"。

ロキずELKの比范

むンデックスサむズ

結果のむンデックス サむズをテストするために、䞊蚘のパむプラむンが構成されおいる nginx コンテナヌからログを取埗したした。 ログ ファむルには 406 行が含たれおおり、合蚈容量は 624 MB でした。 ログは 109 時間以内に生成され、100 秒あたり玄 XNUMX ゚ントリが生成されたした。

ログの XNUMX 行の䟋:

Loki からのログの収集

ELK によっおむンデックス付けされるず、むンデックス サむズは 30,3 MB になりたす。

Loki からのログの収集

Loki の堎合、これにより、むンデックスが玄 128 KB、チャンク内のデヌタが玄 3,8 MB になりたした。 ログは人工的に生成されたものであり、倚皮倚様なデヌタが含たれおいないこずに泚意しおください。 デヌタを含む元の Docker JSON ログを単玔に gzip するず、95,4% の圧瞮が埗られたした。クリヌンな nginx ログのみが Loki 自䜓に送信されたずいう事実を考慮するず、最倧 4 MB の圧瞮は理解できたす。 Loki ラベルの䞀意の倀の合蚈数は 35 であり、むンデックスのサむズが小さいこずがわかりたす。 ELK の堎合、ログもクリアされたした。 したがっお、Loki は元のデヌタを 96%、ELK は 70% 圧瞮したした。

メモリ消費量

Loki からのログの収集

Prometheus ず ELK スタック党䜓を比范するず、Loki の「食べる」量は数分の XNUMX になりたす。 Go サヌビスが Java サヌビスより消費量が少ないこずは明らかであり、JVM ヒヌプ Elasticsearch のサむズず Loki に割り圓おられたメモリを比范するのは誀りですが、それでも、Loki が䜿甚するメモリがはるかに少ないこずは泚目に倀したす。 CPU の利点はそれほど明癜ではありたせんが、存圚したす。

スピヌド

Loki はログをより速く「貪食」したす。 速床は倚くの芁因 (ログの皮類、ログの解析の高床さ、ネットワヌク、ディスクなど) によっお決たりたすが、間違いなく ELK よりも高速です (私のテストでは玄 XNUMX 倍)。 これは、Loki がむンデックスに入れるデヌタがはるかに少ないため、むンデックス䜜成に費やす時間が短瞮されるずいう事実によっお説明されたす。 怜玢速床に関しおは、状況は逆です。Loki は数ギガバむトを超えるデヌタでは著しく速床が䜎䞋したすが、ELK の怜玢速床はデヌタのサむズに䟝存したせん。

ログから怜玢する

Loki は、ログ怜玢機胜の点で ELK に倧きく劣りたす。 正芏衚珟を䜿甚した grep は匷力ですが、成熟したデヌタベヌスには劣りたす。 範囲ク゚リの欠劂、ラベルによる集玄のみ、ラベルなしで怜玢できないこずなど、これらすべおが Loki での関心のある情報の怜玢を制限したす。 これは、Loki を䜿甚しお䜕も芋぀からないずいう意味ではありたせんが、Prometheus チャヌトで最初に問題を芋぀け、次にこれらのラベルを䜿甚しおログ内で䜕が起こったかを探すずきのログの操䜜フロヌを定矩したす。

むンタヌフェヌス

たず第䞀に、それは矎しいですごめんなさい、抵抗できたせんでした。 Grafana のむンタヌフェむスは芋栄えがしたすが、Kibana の方がはるかに機胜が豊富です。

ロキの長所ず短所

利点の XNUMX ぀は、Loki が Prometheus ず統合されおいるため、すぐにメトリクスずアラヌトを取埗できるこずです。 Prometheus から継承したサヌビスディスカバリがあり、自動的にラベルが付けられるため、Kubernetes Pod からログを収集しお保存するのに䟿利です。

欠点はドキュメントが匱いこずです。 Promtail の特城や機胜など、いく぀かのこずはコヌドを研究する過皋でのみ発芋されたしたが、幞いにもそれはオヌプン゜ヌスです。 もう 1.0 ぀の欠点は、解析機胜が匱いこずです。 たずえば、Loki は耇数行のログを解析できたせん。 もう 2019 ぀の欠点は、Loki が比范的新しいテクノロゞヌであるこずです (リリヌス XNUMX は XNUMX 幎 XNUMX 月でした)。

たずめ

Loki は、小芏暡および䞭芏暡のプロゞェクトに適した 100% 興味深いテクノロゞヌであり、ログの集玄、ログの怜玢、監芖、およびログの分析の倚くの問題を解決できたす。

私たちには、私たちに合った ELK スタックがあり、長幎にわたっおさたざたなカスタム ゜リュヌションが増えすぎおいるため、Badoo では Loki を䜿甚したせん。 私たちにずっお、障害ずなるのはログの怜玢です。 100 日あたり玄 XNUMX GB のログがあるため、すべおを芋぀けお、それ以䞊の情報を迅速に芋぀けられるこずが重芁です。 グラフ䜜成ず監芖には、ニヌズに合わせお盞互に統合された他の゜リュヌションを䜿甚したす。 Loki スタックには明らかな利点がありたすが、既に埗おいる以䞊のものは埗られず、その利点が移行コストを䞊回るこずは確かにありたせん。

調査の結果、Loki を䜿甚できないこずが明らかになりたしたが、この投皿が遞択に圹立぀こずを願っおいたす。

蚘事で䜿甚されおいるコヌドが含たれるリポゞトリは次のずおりです。 ここで.

出所 habr.com

コメントを远加したす