✨ アプリの中身が何をしてるか学べるトップ10のツール 🚀
アプリが一つでも複数でも、ログを送っているとします。アプリの中で何が起きているかをどうやって把握するのでしょうか?
通常、以下の二つの方法があります:
- ログ記録: 複数のアプリケーションからのログを保存し、洞察と検索を提供します。これは昔からある方法で、常に役立ちます。
- トレース: アプリケーションのパフォーマンスに焦点を当て、モニタリングやアラート作成のための正確なメトリックを構築できます。
ログ記録やトレース用のツールがあり、両方をこなすツールもあります!
ここに、ログとトレースに使われるオープンソースツールを紹介します:
Quickwitは、大規模なログ管理と分析のために設計されたオープンソースの分散型検索エンジンです。
Quickwitは、特にクラウドネイティブ環境や大規模分散環境でのパフォーマンスが向上し、ストレージと検索効率を最適化した、Elasticsearchに代わるものです。
通常は、OpenTelemetryやFluentbit、Odigos(自動計測トレースツール)のようなツールを使ってログやトレースを収集し、Quickwitに送信し、Jaeger(トレース用)やGrafana(ログやトレース用)で可視化します。
面白い事実: ElasticsearchとKibanaは、より制限されたライセンスへの変更(Apache 2からElastic Licenseに)のためにコミュニティライセンスを取り下げ、コミュニティから大きな反発を受けました。
QuickwitはAGPL 3です。オープンソースコミュニティに対してはるかにオープンです。
⭐️ オープンソースコミュニティを支えよう、Quickwitにスターをつけよう ⭐️
Grafanaは、ELKスタックのオープンソースの代替品です。ログやトレースには、Grafanaが管理する二つのクエリエンジン、LokiとTempoを設定する必要があります。
LokiとTempoにすべてのログやトレースをインデックスした後、データを検索するための可視化ツールが必要になります: ここでGrafanaです!
Grafanaを使えば、どこにデータが保存されているかに関わらず、メトリックを問い合わせたり、可視化したり、アラートを設定したりして、理解することができます。チームとダッシュボードを作成、探索、共有し、データ駆動型の文化を育てましょう。
Odigosは、コード変更なしでk8sのどんなアプリケーションにもトレースを生成するユニークな技術です: Odigosのトレースは、QuickwitやElasticsearch(多くの他の統合があります)のようなデータベースに転送することができます。
ご存じない方のために、OpenTelemetryはログとトレースを受け取るためのプロトコルです。Odigosはその標準を利用しているので、OpenTelemetryをサポートするデータベースにトレースを送ることができます!
Prometheusとは異なり、Jaegerはトレースに特化しています。
Jaegerは分散システム全体にコンテキスト情報の伝播をサポートし、サービスネットワーク間でトレースデータが正しく関連付けられることを保証しています。
高容量のデータの取り扱いには適しておらず、QuickwitやElasticsearchのような強力なストレージエンジンと一緒に使用する必要があります。このようなセットアップでは、Jaegerはサービスのスケールアップと共に拡大し、小規模から大規模なシステムまで適しています。
Signozは、ログとトレース管理機能を提供します。
トレースとログを一つのウィンドウで可視化できます。
問題を起こしている正確なトレースにアクセスして、個々のリクエストトレースの詳細なフレームグラフを見ることで、問題の根本原因を見つけることができます。
Keepは、既存の監視ツール、データベース、通信チャネルすべてに接続して、一つのプラットフォームにすべてをまとめて提供し、何か問題が起きた時にはトップレベルのアラートを提供します 😈
Uptraceは、OpenTelemetryベースの監視プラットフォームで、ログとトレースを取り込めます。アプリケーションのモニタリングやログの検索ができます。
OpenTelemetryのサポートや多数の統合のおかげで、データの収集と送信が簡単です 😈。ただし、PostgresqlとClickhouseデータベースのセットアップが必要になります。
HyperDXは、ログの検索やトレースの分析ができるオープンソースの監視プラットフォームです。複数のツールを行き来することなく、一つのプラットフォームで複雑なエラーやユーザーの問題をデバッグできます。
興味深いことに、このライブラリは映画Prometheus (もちろん冗談です) にちなんで名付けられましたが、それが私の最初の想定でした(とにかくいい映画です)
PrometheusとElasticsearchが似ているように見えるかもしれませんが、実際にはとても違います。
Prometheusはインフラストラクチャのメトリック(CPU、メモリ使用量、ディスク使用量など)にのみ焦点を当てていますが、高カーディナリティメトリックには適していません。Quickwitはログとトレースに、Elasticsearchはログ、トレース、メトリックの全てに対応しています!
彼らは手を取り合って働くことが多いです。
Prometheusは生のUIを提供しますが、それは構わないことですが、Grafanaのダッシュボードと最もうまく組み合わせられます。
興味深いことに、Prometheusは独自のクエリ言語であるPromQL(Prometheus Query Language)を提供しています。
Xでつながりましょうか? :)
こちら
ログとトレースに使うほかに素晴らしいツールを使っていますか?
コメントで教えてください :)
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/nevodavid/top-10-tools-to-learn-whats-going-on-in-your-app-20em