New Relic だけではない: Datadog ず Atatus の抂芁

New Relic だけではない: Datadog ず Atatus の抂芁

SRE/DevOps ゚ンゞニアの環境では、ある日クラむアント (たたは監芖システム) が珟れお、「すべおが倱われた」ず報告しおも、誰も驚かないでしょう。サむトは機胜せず、支払いは完了せず、生掻は衰退しおいたす。 ...そのような状況でどれだけ助けたいず思っおいおも、シンプルでわかりやすいツヌルがなければ、これを行うのは非垞に困難です。 倚くの堎合、問題はアプリケヌション コヌド自䜓に隠されおいるため、必芁なのはそれをロヌカラむズするこずだけです。

そしお悲しみの䞭にも喜びの䞭にも 

偶然にも、私たちは長い間深く New Relic に倢䞭になっおいたした。 これは、アプリケヌションのパフォヌマンスを監芖するための優れたツヌルであり、たた、(゚ヌゞェントを䜿甚しお) マむクロサヌビス アヌキテクチャなどを蚈枬するこずもできたす。 そしお、サヌビスの䟡栌蚭定ポリシヌの倉曎がなければ、すべおがうたくいったはずです。 コスト 2013幎で 3倍以䞊に成長した。 さらに、昚幎からトラむアルアカりントを取埗するには個人マネヌゞャヌずのコミュニケヌションが必芁ずなり、朜圚的な顧客に補品を玹介するこずが難しくなりたした。

通垞の状況: New Relic は「氞続的に」必芁ではなく、問題が発生した瞬間にのみ New Relic を芚えおいたす。 ただし、定期的に料金を支払う必芁があり (サヌバヌあたり月額 140 米ドル)、自動的に拡匵されるクラりド むンフラストラクチャでは、その金額はかなり高額になりたす。 埓量課金制のオプションもありたすが、New Relic を有効にするにはアプリケヌションを再起動する必芁があり、これによりアプリケヌションがすべお開始された問題の状況が倱われる可胜性がありたす。 少し前に、New Relic は新しい料金プランを導入したした - Essentials, - 䞀芋するず、Professional の合理的な代替品のように芋えたす...しかし、詳しく調べおみるず、いく぀かの重芁な機胜が欠けおいるこずがわかりたした (特に、 䞻芁なトランザクション, クロスアプリケヌショントレヌス, 分散トレヌス).

その結果、より安䟡な代替サヌビスを探すこずを怜蚎し始め、Datadog ず Atatus の XNUMX ぀のサヌビスを遞択するこずになりたした。 なぜ圌らに

競合他瀟に぀いお

垂堎には他の゜リュヌションがあるこずをすぐに蚀っおおきたす。 オヌプン゜ヌスのオプションも怜蚎したしたが、すべおのクラむアントがセルフホスト型゜リュヌションをホストするための空き容量を持っおいるわけではありたせん...さらに、远加のメンテナンスが必芁になりたす。 私たちが遞んだカップルは最も近いこずが刀明したした 私たちのニヌズ:

  • PHP アプリケヌションの組み蟌みおよび開発されたサポヌト (圓瀟のクラむアントのスタックは非垞に倚様ですが、これは New Relic の代替を探すずいう状況においお明確なリヌダヌです)。
  • 手頃なコスト (ホストあたり月額 100 米ドル未満)。
  • 自動蚈枬噚。
  • Kubernetes ずの統合。
  • New Relic むンタヌフェヌスずの類䌌性は、顕著な利点です (圓瀟の゚ンゞニアはそれに慣れおいるため)。

したがっお、最初の遞択段階で、他のいく぀かの䞀般的な゜リュヌション、特に次の゜リュヌションを陀倖したした。

  • Tideways、AppDynamics、Dynatrace - コスト。
  • Stackify はロシア連邊でブロックされおおり、衚瀺されるデヌタが少なすぎたす。

蚘事の残りの郚分は、最初に問題の゜リュヌションを簡単に玹介し、その埌、New Relic ずの兞型的なやり取りず、他のサヌビスで同様の操䜜を実行したずきの経隓/印象に぀いお説明するように構成されおいたす。

遞ばれた遞手のプレれンテヌション

New Relic だけではない: Datadog ず Atatus の抂芁
オン 新しいレリック、おそらく誰もが聞いたこずがあるでしょうか このサヌビスは10幎以䞊前の2008幎に開発が始たりたした。 私たちは 2012 幎からこれを積極的に䜿甚しおおり、PHP、Ruby、Python で非垞に倚くのアプリケヌションを問題なく統合できたした。たた、C# や Go ずの統合の経隓もありたす。 このサヌビスの䜜成者は、アプリケヌション、むンフラストラクチャの監芖、マむクロサヌビス むンフラストラクチャのトレヌス、ナヌザヌ デバむス甚に䜜成された䟿利なアプリケヌションなどのための゜リュヌションを提䟛しおいたす。

ただし、New Relic ゚ヌゞェントは独自のプロトコルで実行され、OpenTracing をサポヌトしたせん。 高床なむンスツルメンテヌションには、New Relic 専甚の線集が必芁です。 最埌に、Kubernetes のサポヌトはただ実隓段階です。

New Relic だけではない: Datadog ず Atatus の抂芁
2010幎に開発を開始 デヌタドッグ Kubernetes 環境での䜿甚ずいう点では、New Relic よりも明らかに興味深いように芋えたす。 特に、NGINX Ingress、ログ収集、statsd、および OpenTracing プロトコルずの統合をサポヌトしおいたす。これにより、接続の瞬間から完了たでナヌザヌ リク゚ストを远跡したり、このリク゚ストのログを怜玢したりできたす (䞡方ずも Web サヌバヌ偎で)。そしお消費者にも。

Datadog を䜿甚するず、マむクロサヌビス マップが正しく構築されない堎合があり、いく぀かの技術的な欠点があるこずがわかりたした。 たずえば、サヌビスの皮類を誀っお認識し (Django をキャッシュ サヌビスず間違えお)、人気のある Predis ラむブラリを䜿甚する PHP アプリケヌションで 500 ゚ラヌを匕き起こしたした。

New Relic だけではない: Datadog ず Atatus の抂芁
アタトゥス — 最幎少の楜噚。 サヌビスは2014幎に開始されたした。 同瀟のマヌケティング予算はリストされおいる競合他瀟よりも明らかに劣っおおり、蚀及されるこずはほずんどありたせん。 ただし、ツヌル自䜓は、機胜 (APM、ブラりザ監芖など) だけでなく、倖芳も New Relic に非垞に䌌おいたす。

重倧な欠点は、Node.js ず PHP のみをサポヌトしおいるこずです。 䞀方で、Datadog よりも著しく優れた実装が斜されおいたす。 埌者ずは異なり、Atatus ではアプリケヌションがコヌドに倉曎を加えたりラベルを远加したりする必芁はありたせん。

New Relic ずの連携方法

ここで、New Relic を䞀般的にどのように䜿甚するかを考えおみたしょう。 解決策が必芁な問題があるずしたす。

New Relic だけではない: Datadog ず Atatus の抂芁

グラフで芋るずわかりやすいですね スプラッシュ - 分析しおみたしょう。 New Relic では、Web トランザクションは Web アプリケヌションに察しお即座に遞択され、すべおのコンポヌネントがパフォヌマンス グラフに瀺され、゚ラヌ率、リク゚スト率のパネルがありたす...最も重芁なこずは、これらのパネルから盎接、異なるパネル間を移動できるこずです。アプリケヌションの䞀郚 (たずえば、MySQL をクリックするずデヌタベヌス セクションに移動したす)。

怜蚎䞭の䟋ではアクティビティの急増が芋られるため、 PHP、このチャヌトをクリックするず、自動的に次の堎所に移動したす。 取匕:

New Relic だけではない: Datadog ず Atatus の抂芁

本質的に MVC モデルのコントロヌラヌであるトランザクションのリストは、すでに次の順序で䞊べ替えられおいたす。 最も時間がかかるこれは非垞に䟿利です。アプリケヌションが䜕をしおいるのかがすぐにわかりたす。 New Relic によっお自動的に収集される長いク゚リの䟋を次に瀺したす。 䞊べ替えを切り替えるず、次のものが簡単に芋぀かりたす。

  • 最も負荷の高いアプリケヌション コントロヌラヌ。
  • 最も頻繁にリク゚ストされるコントロヌラヌ。
  • コントロヌラヌの䞭で最も遅い。

さらに、各トランザクションを展開しお、コヌドの実行時にアプリケヌションが䜕を行っおいたかを確認できたす。

New Relic だけではない: Datadog ず Atatus の抂芁

最埌に、アプリケヌションは長いリク゚スト (2 秒以䞊かかるもの) のトレヌスの䟋を保存したす。 長いトランザクションのパネルは次のずおりです。

New Relic だけではない: Datadog ず Atatus の抂芁

XNUMX ぀のメ゜ッドに倚くの時間がかかるこずがわかり、リク゚ストが実行された時刻ず同時に、その URI ずドメむンも衚瀺されたす。 倚くの堎合、これはログ内のリク゚ストを芋぀けるのに圹立ちたす。 に行く トレヌスの詳现で、これらのメ゜ッドがどこから呌び出されおいるかを確認できたす。

New Relic だけではない: Datadog ず Atatus の抂芁

ずで デヌタベヌスク゚リ — アプリケヌションの実行䞭に実行されたデヌタベヌスぞのク゚リを評䟡したす。

New Relic だけではない: Datadog ず Atatus の抂芁

この知識があれば、アプリケヌションの速床が䜎䞋する理由を評䟡し、開発者ず協力しお問題を解決する戊略を立おるこずができたす。 実際には、New Relic は垞に明確な党䜓像を提䟛するずは限りたせんが、調査のベクトルを遞択するのに圹立ちたす。

  • 長い PDO::Construct pgpoll の奇劙な機胜に私たちは導かれたした。
  • 時間の経過ずずもに䞍安定になる Memcache::Get 仮想マシンが正しく構成されおいないこずを瀺唆したした。
  • テンプレヌト凊理にかかる時間が疑わしいほど増加したため、オブゞェクト ストレヌゞ内の 500 個のアバタヌの存圚をチェックするネストされたルヌプが発生したした。
  • 以䞋のように...

たた、コヌドを実行する代わりに、倖郚デヌタ ストレヌゞに関連するものがメむン画面に衚瀺されるこずもありたす。Redis や PostgreSQL など、それらはすべおタブ内に衚瀺されたす。 デヌタベヌス.

New Relic だけではない: Datadog ず Atatus の抂芁

トランザクションで行う方法ず同様に、リサヌチ甚の特定のベヌスを遞択し、ク゚リを䞊べ替えるこずができたす。 [リク゚スト] タブに移動するず、各アプリケヌション コントロヌラヌでこのリク゚ストが䜕回発生したかを確認し、呌び出される頻床を掚定するこずもできたす。 ずおも快適です:

New Relic だけではない: Datadog ず Atatus の抂芁

タブには同様のデヌタが含たれおいたす 倖郚サヌビス、オブゞェクト ストレヌゞぞのアクセス、セントリぞのむベントの送信など、倖郚 HTTP サヌビスぞのリク゚ストを非衚瀺にしたす。 このタブの内容はデヌタベヌスず完党に䌌おいたす。

New Relic だけではない: Datadog ず Atatus の抂芁

競合他瀟: 機䌚ず印象

ここで最も興味深いのは、New Relic の機胜を競合他瀟が提䟛する機胜ず比范するこずです。 残念ながら、実皌働環境で実行されおいる XNUMX ぀のアプリケヌションの XNUMX ぀のバヌゞョンで XNUMX ぀のツヌルすべおをテストするこずはできたせんでした。 ただし、可胜な限り同䞀の状況/構成を比范するように努めたした。

1.Datadog

Datadog は、サヌビスの壁を備えたパネルで私たちを迎えおくれたす。

New Relic だけではない: Datadog ず Atatus の抂芁

アプリケヌションをコンポヌネント/マむクロサヌビスに分割しようずするため、サンプル Django アプリケヌションでは PostgreSQL ぞの 2 ぀の接続が衚瀺されたす (defaultdb О postgres、セロリ、レディスず同様に。 Datadog を䜿甚するには、MVC の原則に関する最䜎限の知識が必芁です。぀たり、ナヌザヌのリク゚ストが䞀般的にどこから来るのかを理解する必芁がありたす。 これは通垞圹に立ちたす サヌビスマップ:

New Relic だけではない: Datadog ず Atatus の抂芁

ちなみに、New Relicにも䌌たようなものがありたす。

New Relic だけではない: Datadog ず Atatus の抂芁

...そしお私の意芋では、そのマップはよりシンプルか぀明確になっおいたす。XNUMX ぀のアプリケヌションのコンポヌネント (Datadog の堎合のように過床に詳现になる) は衚瀺されず、特定のサヌビスたたはマむクロサヌビスのみが衚瀺されたす。

Datadog に戻りたしょう。サヌビス マップから、ナヌザヌ リク゚ストが Django に送信されおいるこずがわかりたす。 Django サヌビスにアクセスしお、最終的に予想した結果を確認しおみたしょう。

New Relic だけではない: Datadog ず Atatus の抂芁

残念ながら、デフォルトではここにグラフはありたせん Webトランザクション時間、メむンの New Relic パネルに衚瀺されるものず同様です。 ただし、スケゞュヌルの代わりに蚭定するこずもできたす。 費やした時間の割合。 に切り替えるだけで十分です タむプごずのリク゚ストあたりの平均時間...そしお今、芋慣れたグラフが私たちに泚目しおいたす。

New Relic だけではない: Datadog ず Atatus の抂芁

なぜ Datadog が別のチャヌトを遞択したのかは私たちにずっお謎です。 もう XNUMX ぀のむラむラする点は、(競合他瀟ずは異なり) システムがナヌザヌの遞択を蚘憶しないため、唯䞀の解決策はカスタム パネルを䜜成するこずです。

しかし、これらのグラフから関連サヌバヌのメトリクスに切り替え、ログを読み取り、Web サヌバヌ ハンドラヌ (Gunicorn) の負荷を評䟡できる Datadog の機胜には満足しおいたした。 すべおが New Relic ずほが同じです...さらには (ログが) もう少し倚くなりたす。

グラフの䞋には、New Relic ず完党に類䌌したトランザクションが衚瀺されたす。

New Relic だけではない: Datadog ず Atatus の抂芁

Datadog では、トランザクションは次のように呌ばれたす。 資源。 リク゚ストの数、平均応答時間、および遞択した期間に費やされた最倧時間によっおコントロヌラヌを䞊べ替えるこずができたす。

リ゜ヌスを展開するず、New Relic ですでに芳察されたすべおの内容を確認できたす。

New Relic だけではない: Datadog ず Atatus の抂芁

リ゜ヌスに関する統蚈、内郚呌び出しの䞀般化されたリスト、応答コヌド別に゜ヌトできるリク゚ストの䟋がありたす... ちなみに、圓瀟の゚ンゞニアはこの゜ヌトを非垞に気に入っおいたした。

Datadog 内の任意のサンプル リ゜ヌスを開いお調べるこずができたす。

New Relic だけではない: Datadog ず Atatus の抂芁

リク゚スト パラメヌタヌ、各コンポヌネントに費やされた時間の抂芁グラフ、および呌び出しのシヌケンスを瀺すりォヌタヌフォヌル グラフが衚瀺されたす。 りォヌタヌフォヌル チャヌトのツリヌ ビュヌに切り替えるこずもできたす。

New Relic だけではない: Datadog ず Atatus の抂芁

そしお最も興味深いのは、リク゚ストが実行されたホストの負荷を衚瀺し、リク゚スト ログを衚瀺するこずです。

New Relic だけではない: Datadog ず Atatus の抂芁

玠晎らしい統合です

タブがどこにあるのか疑問に思うかもしれたせん デヌタベヌス О 倖郚サヌビス、New Relicのように。 ここには䜕もありたせん。Datadog はアプリケヌションをコンポヌネントに分解するため、PostgreSQL が考慮されたす。 別のサヌビス倖郚サヌビスの代わりに探す䟡倀がありたす aws.storage (アプリケヌションがアクセスできる他のすべおの倖郚サヌビスでも同様です)。

New Relic だけではない: Datadog ず Atatus の抂芁

以䞋にその䟋を瀺したす postgres:

New Relic だけではない: Datadog ず Atatus の抂芁

基本的に、私たちが望んでいたものはすべおありたす。

New Relic だけではない: Datadog ず Atatus の抂芁

リク゚ストがどの「サヌビス」から来たのかを確認できたす。

Datadog は NGINX Ingress ず完党に統合されおおり、リク゚ストがクラスタヌに到着した瞬間から゚ンドツヌ゚ンドのトレヌスを実行できるほか、statsd メトリクスの受信、ログの収集、メトリクスのホストも可胜であるこずを思い出しおいただくのは間違いありたせん。 。

Datadog の倧きな利点は、その䟡栌です。 敎圢です むンフラストラクチャ監芖、APM、ログ管理、合成テストなど。 柔軟にプランをお遞びいただけたす。

2.アタトゥス

Atatus チヌムは、自瀟のサヌビスは「New Relic ず同じですが、それより優れおいる」ず䞻匵しおいたす。 これが本圓にそうなのか芋おみたしょう。

メむン パネルは䌌おいたすが、アプリケヌションで䜿甚されおいる Redis ず memcached を特定するこずはできたせんでした。

New Relic だけではない: Datadog ず Atatus の抂芁

APM はデフォルトですべおのトランザクションを遞択したすが、通垞は Web トランザクションのみが必芁です。 Datadog ず同様に、メむン パネルから目的のサヌビスに移動する方法はありたせん。 さらに、トランザクションぱラヌの埌にリストされたすが、これは APM にずっおあたり論理的ではないようです。

Atatus のトランザクションでは、すべおが New Relic ず可胜な限り類䌌しおいたす。 欠点は、各コントロヌラヌのダむナミクスがすぐに衚瀺されないこずです。 コントロヌラヌテヌブルで゜ヌトしおそれを探す必芁がありたす。 最も倚くの時間を費やした:

New Relic だけではない: Datadog ず Atatus の抂芁

コントロヌラの通垞のリストはタブで利甚できたす。 詳现:

New Relic だけではない: Datadog ず Atatus の抂芁

ある意味、このテヌブルは Datadog を圷圿ずさせたすが、私は New Relic の同様のテヌブルよりも気に入っおいたす。

各トランザクションを展開するず、アプリケヌションが䜕を行っおいたかを確認できたす。

New Relic だけではない: Datadog ず Atatus の抂芁

このパネルは Datadog をより圷圿ずさせたす。倚数のリク゚ストずコヌルの党䜓像が衚瀺されたす。 䞊郚パネルにぱラヌタブが衚瀺されたす HTTP の倱敗 遅いク゚リの䟋 セッショントレヌス:

New Relic だけではない: Datadog ず Atatus の抂芁

トランザクションに移動するず、トレヌスの䟋が衚瀺され、デヌタベヌスぞのリク゚ストのリストを取埗しお、リク゚スト ヘッダヌを確認できたす。 すべおが New Relic に䌌おいたす。

New Relic だけではない: Datadog ず Atatus の抂芁

䞀般に、Atatus は詳现なトレヌスに満足しおいたす。New Relic の兞型的なリマむンダヌ ブロックぞの呌び出しの貌り付けは䞍芁です。

New Relic だけではない: Datadog ず Atatus の抂芁
New Relic だけではない: Datadog ず Atatus の抂芁

ただし、(New Relic のように) 超高速リク゚スト (5 ミリ秒未満) を遮断するフィルタヌがありたせん。 䞀方、最終的なトランザクション応答 (成功たたぱラヌ) の衚瀺は気に入りたした。

パネル デヌタベヌス アプリケヌションが行う倖郚デヌタベヌスぞのリク゚ストを調べるのに圹立ちたす。 Redis ず memcached もプロゞェクトに関䞎しおいたすが、Atatus は PostgreSQL ず MySQL のみを発芋したこずを思い出しおください。

New Relic だけではない: Datadog ず Atatus の抂芁

リク゚ストは、応答頻床、平均応答時間などの通垞の基準に埓っお䞊べ替えられたす。 ク゚リが最も遅いタブに぀いおも觊れおおきたいず思いたす。これは非垞に䟿利です。 さらに、PostgreSQL のこのタブのデヌタは、拡匵機胜からのデヌタず䞀臎したした。 pg_stat_statements - 玠晎らしい結果です

New Relic だけではない: Datadog ず Atatus の抂芁

タブ 倖郚からのリク゚スト デヌタベヌスずたったく同じです。

所芋

提瀺された䞡方のツヌルは、APM の圹割においお優れたパフォヌマンスを発揮したした。 どれも必芁最小限のものを提䟛できたす。 私たちの印象を簡単にたずめるず次のようになりたす。

デヌタドッグ

長所

  • 䟿利な料金䜓系 (APM はホストごずに 31 米ドルかかりたす)。
  • Python ではうたく動䜜したした。
  • OpenTracing ずの統合の可胜性
  • Kubernetes ずの統合。
  • NGINX Ingress ずの統合。

短所

  • モゞュヌル ゚ラヌ (predis) によりアプリケヌションが䜿甚できなくなる原因ずなった唯䞀の APM。
  • 匱い PHP 自動むンスツルメンテヌション。
  • サヌビスずその目的の郚分的に奇劙な定矩。

アタトゥス

長所

  • 深い PHP むンストルメンテヌション。
  • New Relic に䌌たナヌザヌ むンタヌフェむス。

短所

  • 叀いオペレヌティング システム (Ubuntu 12.05、CentOS 5) では動䜜したせん。
  • 匱い自動蚈枬。
  • XNUMX ぀の蚀語 (Node.js ず PHP) のみをサポヌトしたす。
  • むンタヌフェむスが遅い。

Atatus のサヌバヌあたり月額 69 米ドルずいう䟡栌を考慮するず、私たちのニヌズ (K8s の Web アプリケヌション) によく統合され、倚くの䟿利な機胜を備えた Datadog を䜿甚するこずを遞択したす。

PS

私たちのブログもお読みください:

出所 habr.com

コメントを远加したす