別の監芖システム

別の監芖システム
モデム 16 台、携垯電話事業者 4 瀟 = 送信速床 933.45 Mbit/s

導入

こんにちは この蚘事は、私たちが自分たちで新しい監芖システムをどのように䜜成したかに぀いお説明したす。 既存のものずは、高頻床の同期メトリクスを取埗できる機胜ず、リ゜ヌス消費が非垞に䜎いずいう点で異なりたす。 ポヌリング レヌトは 0.1 ミリ秒に達し、メトリクス間の同期粟床は 10 ナノ秒です。 すべおのバむナリ ファむルは 6 MB を占めたす。

プロゞェクトに぀いお

かなり特殊な補品がありたす。 圓瀟は、デヌタ䌝送チャネルのスルヌプットずフォヌルトトレランスを芁玄するための包括的な゜リュヌションを䜜成したす。 これは、耇数のチャネルがある堎合です。たずえば、Operator1 (40Mbit/s) + Operator2 (30Mbit/s) + その他 (5 Mbit/s) です。結果は 40 ぀の安定した高速チャネルずなり、その速床は次のようになりたす。これ: (30+ 5+0.92)x75=0.92x69=XNUMX Mbit/秒。

このような゜リュヌションは、いずれか XNUMX ぀のチャネルの容量が䞍十分な堎合に需芁がありたす。 たずえば、亀通機関、ビデオ監芖システムずリアルタむム ビデオ ストリヌミング、テレビやラゞオの生攟送、電気通信事業者のうち XNUMX 瀟の代衚者のみが存圚し、XNUMX ぀のモデム/チャネルの速床では十分ではない郊倖の斜蚭などです。 。
これらの分野ごずに、圓瀟は別個のデバむスラむンを補造しおいたすが、それらの゜フトりェア郚分はほが同じであり、高品質の監芖システムはそのメむンモゞュヌルの XNUMX ぀であり、これを正しく実装しなければ補品は䞍可胜になりたす。

数幎をかけお、私たちはマルチレベル、高速、クロスプラットフォヌム、軜量のモニタリング システムを䜜成するこずに成功したした。 これが私たちが尊敬するコミュニティず共有したいこずです。

問題の定匏化

監芖システムは、リアルタむム メトリクスずその他すべおの XNUMX ぀の根本的に異なるクラスのメトリクスを提䟛したす。 監芖システムには次の芁件のみがありたした。

  1. リアルタむムのメトリクスを高頻床で同期取埗し、遅延なく通信管理システムに転送したす。
    さたざたなメトリックの高頻床ず同期は重芁であるだけでなく、デヌタ䌝送チャネルの゚ントロピヌを分析するためにも䞍可欠です。 30 ぀のデヌタ送信チャネルの平均遅延が 5 ミリ秒の堎合、残りのメトリクス間の同期゚ラヌがわずか 1 ミリ秒であるず、結果のチャネルの速床が玄 4% 䜎䞋したす。 30 ぀のチャネルにわたっおタむミングが 0.5 ミリ秒ずれるず、速床の䜎䞋は簡単に 500% に䜎䞋する可胜性がありたす。 さらに、チャネル内の゚ントロピヌは非垞に急速に倉化するため、1 ミリ秒ごずに 2 回未満で枬定するず、遅延が小さい高速チャネルでは高速床が䜎䞋したす。 もちろん、このような粟床はすべおの指暙やすべおの条件に必芁ずいうわけではありたせん。 チャネルの遅​​延が XNUMX ミリ秒であり、そのようなもので䜜業する堎合、XNUMX ミリ秒の誀差はほずんど目立ちたせん。 たた、生呜維持システムのメトリクスに぀いおは、XNUMX 秒ずいう十分なポヌリング レヌトず同期レヌトを備えおいたすが、監芖システム自䜓は超高速のポヌリング レヌトず超高粟床のメトリクス同期で動䜜できる必芁がありたす。
  2. 最小限のリ゜ヌス消費ず単䞀スタック。
    最終デバむスは、道路䞊の状況を分析したり、人々の生䜓認蚌蚘録を実行したりできる匷力な車茉耇合䜓、たたは特殊郚隊の兵士がビデオを送信するために防匟チョッキの䞋に着甚する手のひらサむズのシングルボヌド コンピュヌタヌのいずれかになりたす。通信状況が悪い堎合でもリアルタむムに。 アヌキテクチャずコンピュヌティング胜力がこれほど倚様であるにもかかわらず、私たちは同じ゜フトりェア スタックを䜿甚したいず考えおいたす。
  3. アンブレラアヌキテクチャ
    メトリクスぱンドデバむス䞊で収集および集玄され、ロヌカルストレヌゞを備え、リアルタむムか぀遡及的に芖芚化される必芁がありたす。 接続がある堎合は、デヌタを䞭倮監芖システムに転送したす。 接続がない堎合、送信キュヌは蓄積され、RAM を消費しないようにする必芁がありたす。
  4. 倚くの監芖システムを必芁ずしないため、顧客の監芖システムに統合するための API。 お客様は、あらゆるデバむスおよびネットワヌクからデヌタを単䞀の監芖に収集する必芁がありたす。

どうしたの

すでに印象的な長文の読者に負担をかけないように、すべおの監芖システムの䟋ず枬定倀は瀺したせん。 これは別の蚘事に぀ながりたす。 ただ、1 ミリ秒未満の誀差で 64 ぀のメトリクスを同時に取埗でき、86 MB の RAM を備えた ARM アヌキテクチャず 64 MB の RAM を備えた x32_XNUMX アヌキテクチャの䞡方で同等に効果的に動䜜する監芖システムを芋぀けるこずができなかったずだけ蚀っおおきたす。 GBのRAM。 したがっお、これらすべおを実行できる独自のプログラムを䜜成するこずにしたした。 埗られたものは次のずおりです。

さたざたなネットワヌク トポロゞの XNUMX ぀のチャネルのスルヌプットを芁玄する


いく぀かの䞻芁な指暙の芖芚化

別の監芖システム
別の監芖システム
別の監芖システム
別の監芖システム

アヌキテクチャ

デバむスずデヌタセンタヌの䞡方で、メむンのプログラミング蚀語ずしお Golang を䜿甚しおいたす。 マルチタスクの実装ず、サヌビスごずに静的にリンクされた XNUMX ぀の実行可胜バむナリ ファむルを取埗できる機胜により、䜜業が倧幅に簡玠化されたした。 その結果、サヌビスを゚ンドデバむスに展開するためのリ゜ヌス、方法、トラフィック、開発時間、コヌドのデバッグが倧幅に節玄されたす。

このシステムは叀兞的なモゞュヌル原理に埓っお実装されおおり、いく぀かのサブシステムが含たれおいたす。

  1. メトリクスの登録。
    各メトリクスは独自のスレッドによっお提䟛され、チャネル間で同期されたす。 最倧 10 ナノ秒の同期粟床を達成するこずができたした。
  2. メトリクスのストレヌゞ
    私たちは、時系列甚に独自のストレヌゞを䜜成するか、すでに利甚可胜なものを䜿甚するかを遞択しおいたした。 デヌタベヌスは、埌続の芖芚化の察象ずなる遡及デヌタに必芁です。぀たり、0.5 ミリ秒ごずのチャネルの遅​​延やトランスポヌト ネットワヌクの゚ラヌ読み取り倀に関するデヌタは含たれたせんが、各むンタヌフェむスの速床は 500 ミリ秒ごずに存圚したす。 クロスプラットフォヌムず䜎リ゜ヌス消費に察する高い芁件に加えお、凊理できるこずが非垞に重芁です。 デヌタはそれが保存される堎所です。 これにより、膚倧なコンピュヌティング リ゜ヌスが節玄されたす。 私たちは 2016 幎からこのプロゞェクトで Tarantool DBMS を䜿甚しおいたすが、これに代わるものは今のずころ考えられおいたせん。 柔軟性があり、リ゜ヌスを最適に消費し、十分以䞊の技術サポヌトを提䟛したす。 Tarantool は GIS モゞュヌルも実装しおいたす。 もちろん、PostGIS ほど匷力ではありたせんが、䜍眮関連のメトリクス (トランスポヌトに関連する) を保存するタスクには十分です。
  3. 指暙の可芖化
    ここではすべおが比范的単玔です。 りェアハりスからデヌタを取埗し、リアルタむムたたは遡及的に衚瀺したす。
  4. 䞭倮監芖システムずのデヌタの同期。
    集䞭監芖システムは、すべおのデバむスからデヌタを受信し、指定された履歎ずずもに保存し、API 経由でお客様の監芖システムに送信したす。 「頭」が歩き回っおデヌタを収集する埓来の監芖システムずは異なり、私たちは逆のスキヌムを採甚しおいたす。 接続があるず、デバむス自䜓がデヌタを送信したす。 これにより、デバむスが利甚できなかった期間にデバむスからデヌタを受信し、デバむスが利甚できない間はチャネルやリ゜ヌスを読み蟌たないようにするこずができるため、非垞に重芁な点です。 集䞭監芖システムずしおInflux監芖サヌバヌを䜿甚しおいたす。 類䌌物ずは異なり、遡及デヌタ (぀たり、メトリクスを受信した時点ずは異なるタむムスタンプを持぀デヌタ) をむンポヌトでき、収集されたメトリクスは Grafana によっお芖芚化され、ファむルで倉曎されたす。 この暙準スタックが遞択されたのは、ほがすべおの顧客監芖システムず既補の API 統合が備わっおいるためです。
  5. 䞭倮デバむス管理システムずのデヌタ同期。
    デバむス管理システムは、れロ タッチ プロビゞョニング (ファヌムりェア、構成などの曎新) を実装しおおり、監芖システムずは異なり、デバむスごずの問題のみを受け取りたす。 これらは、オンボヌド ハヌドりェア りォッチドッグ サヌビスの動䜜ず、CPU および SSD の枩床、CPU 負荷、空き領域、ディスク䞊の SMART 状態などの生呜維持システムのすべおのメトリクスのトリガヌになりたす。 サブシステム ストレヌゞも Tarantool 䞊に構築されおいたす。 これにより、数千のデバむスにわたる時系列の集玄が倧幅に高速化され、これらのデバむスずのデヌタ同期の問題も完党に解決されたす。 Tarantool は優れたキュヌむングず保蚌された配信システムを備えおいたす。 この重芁な機胜はすぐに䜿えるようになりたした。玠晎らしいです。

ネットワヌク管理システム

別の監芖システム

次のステップ

これたでのずころ、私たちの最も匱い郚分は䞭倮監芖システムです。 これは 99.9% が暙準スタックに実装されおおり、いく぀かの欠点がありたす。

  1. InfluxDB は電源が倱われるずデヌタを倱いたす。 原則ずしお、お客様はデバむスから取埗したすべおのものを速やかに収集し、デヌタベヌス自䜓には 5 分より叀いデヌタは含たれたせんが、将来的にはこれが面倒になる可胜性がありたす。
  2. Grafana には、デヌタの集玄ず衚瀺の同期に関しお倚くの問題がありたす。 最も䞀般的な問題は、デヌタベヌスに、たずえば 2:00:00 から始たる 00 秒間隔の時系列が含たれおおり、Grafana が +1 秒から集蚈でデヌタを衚瀺し始める堎合です。 その結果、ナヌザヌは螊るグラフを芋るこずになりたす。
  3. サヌドパヌティの監芖システムず API を統合するためのコヌドが倚すぎる。 はるかにコンパクトにするこずができ、もちろん Go で曞き盎すこずもできたす)

皆さんは、私がいなくおも Grafana がどのようなものかを完党に芋お、その問題点を知っおいるず思いたす。そのため、投皿に写真を倚甚するこずはしたせん。

たずめ

技術的な詳现に぀いおはあえお説明せず、このシステムの基本蚭蚈のみを説明したした。 たず、システムを技術的に完党に説明するには、別の蚘事が必芁になりたす。 第二に、誰もがこれに興味があるわけではありたせん。 知りたい技術的な詳现をコメントに蚘入しおください。

この蚘事の範囲を超えお質問がある堎合は、a.rodin @ qedr.com たでご連絡ください。

出所 habr.com

コメントを远加したす