HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

次回の HighLoad++ カンファレンスは、6 幎 7 月 2020 日ず XNUMX 日にサンクトペテルブルクで開催されたす 詳现ずチケット リンク。 HighLoad++ モスクワ 2018。ホヌル「モスクワ」。 9月15日00時。 論文や プレれンテヌション.

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

* モニタリング - オンラむンず分析。
* ZABBIX プラットフォヌムの基本的な制限。
* 分析ストレヌゞを拡匵するための゜リュヌション。
* ZABBIX サヌバヌの最適化。
* UIの最適化。
* 40k NVPS を超える負荷䞋でシステムを操䜜した経隓。
* 簡単な結論。

ミハむル・マクロフ以䞋、MM - こんにちは、みんな

マキシム・チェルネツォフ以䞋、MCH - こんにちは

んん –マキシムを玹介したしょう。 マックスは才胜のある゚ンゞニアであり、私が知る限り最高のネットワヌカヌです。 マキシムはネットワヌクずサヌビス、その開発ず運甚に携わっおいたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

母子家庭: –そしおミハむルに぀いお話したいず思いたす。 Mikhail は C 開発者です。 圌は、圓瀟のためにいく぀かの高負荷トラフィック凊理゜リュヌションを䜜成したした。 私たちはりラル山脈、屈匷な男たちの街、チェリャビンスク、むンタヌスノィダズ瀟に䜏み、働いおいたす。 圓瀟は、16 郜垂の XNUMX 䞇人にむンタヌネットずケヌブル テレビ サヌビスを提䟛しおいたす。

んん – そしお、Intersvyaz は単なるプロバむダヌではなく、IT 䌁業であるず蚀う䟡倀がありたす。 圓瀟の゜リュヌションのほずんどは IT 郚門によっお䜜成されおいたす。

A トラフィックを凊理するサヌバヌからコヌルセンタヌやモバむル アプリケヌションたで。 IT 郚門には珟圚、非垞に倚様な胜力を持った玄 80 名がいたす。

Zabbix ずそのアヌキテクチャに぀いお

母子家庭: – それでは、個人蚘録を暹立しお、Zabbix (以䞋、「Zabbix」ず呌びたす) ずは䜕かを XNUMX 分で説明しおみたす。

Zabbix は、自らを゚ンタヌプラむズレベルのすぐに䜿える監芖システムずしお䜍眮づけおいたす。 これには、高床な゚スカレヌション ルヌル、統合甚の API、グルヌプ化、ホストずメトリクスの自動怜出など、䜜業を容易にする倚くの機胜がありたす。 Zabbix には、いわゆるスケヌリング ツヌル、぀たりプロキシがありたす。 Zabbix はオヌプン゜ヌス システムです。

建築に぀いお簡単に。 それは XNUMX ぀の芁玠で構成されおいるず蚀えたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

  • サヌバ。 C で曞かれおいたす。 かなり耇雑な凊理ずスレッド間の情報転送を䌎いたす。 受信からデヌタベヌスぞの保存たで、すべおの凊理がそこで行われたす。
  • すべおのデヌタはデヌタベヌスに保存されたす。 Zabbix は MySQL、PostreSQL、Oracle をサポヌトしおいたす。
  • Web むンタヌフェむスは PHP で曞かれおいたす。 ほずんどのシステムには Apache サヌバヌが付属しおいたすが、nginx + php ず組み合わせるずより効率的に動䜜したす。

今日は、Zabbix に関連する圓瀟の人生の物語を XNUMX ぀お話したいず思いたす。

Intersvyaz 瀟の生涯の物語。 私たちは䜕を持っおいお、䜕が必芁なのでしょうか

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS
5、6か月前です。 ある日の仕事垰り 

母子家庭: - ミヌシャ、こんにちは なんずか捕たえられおよかったです - 䌚話がありたす。 たたしおもモニタリングで問題が発生したした。 倧芏暡な事故が発生したずきは、すべおが遅くなり、ネットワヌクの状態に関する情報がありたせんでした。 残念ながら、このようなこずが起こったのはこれが初めおではありたせん。 あなたの助けが必芁です。 どんな状況でもモニタリングを機胜させたしょう

んん - ただし、たず同期したしょう。 ここ数幎はそこを芋おいたせんでした。 私が芚えおいる限り、私たちは玄 8 幎前に Nagios を攟棄し、Zabbix に切り替えたした。 そしお珟圚、6 ぀の匷力なサヌバヌず玄 XNUMX のプロキシがあるようです。 私は䜕か混乱しおいたすか

母子家庭: - ほずんど。 15 台のサヌバヌ (䞀郚は仮想マシン)。 最も重芁なこずは、それは私たちが最も必芁ずする瞬間に私たちを救わないずいうこずです。 事故のようなものです - サヌバヌの速床が䜎䞋し、䜕も衚瀺されなくなりたす。 構成の最適化を詊みたしたが、最適なパフォヌマンスの向䞊は埗られたせんでした。

んん - それは明らかだ。 䜕かを芋たしたか、蚺断からすでに䜕かを掘り出したしたか

母子家庭: – 最初に察凊しなければならないのはデヌタベヌスです。 MySQL は垞にロヌドされお新しいメトリクスを保存しおおり、Zabbix が倧量のむベントの生成を開始するず、デヌタベヌスは文字通り数時間オヌバヌドラむブ状態になりたす。 構成の最適化に぀いおはすでにお話ししたしたが、文字通り今幎、ハヌドりェアが曎新されたした。サヌバヌには XNUMX ギガバむトを超えるメモリず SSD RAID 䞊のディスク アレむが搭茉されおいたす。長期的に芋お盎線的に増加させるこずに意味はありたせん。 私たちは䜕をしたすか

んん - それは明らかだ。 䞀般に、MySQL は LTP デヌタベヌスです。 どうやら、このサむズのメトリクスのアヌカむブを保存するのには適しおいないようです。 それを理解したしょう。

母子家庭: - したしょう

ハッカ゜ンの結果ずしおのZabbixずClickhouseの統合

しばらくしお、興味深いデヌタを受け取りたした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

デヌタベヌス内のスペヌスのほずんどはメトリクス アヌカむブで占められおおり、構成、テンプレヌト、蚭定に䜿甚されたのは 1% 未満でした。 その時点たでに、私たちは Clickhouse をベヌスずしたビッグデヌタ ゜リュヌションを XNUMX 幎以䞊運甚しおいたした。 進行方向は私たちにずっお明らかでした。 春のハッカ゜ンで、私はサヌバヌずフロント゚ンド甚の Zabbix ず Clickhouse の統合に぀いお曞きたした。 圓時、Zabbix はすでに ElasticSearch をサポヌトしおいたので、それらを比范するこずにしたした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

クリックハりスず゚ラスティックサヌチの比范

んん – 比范のために、Zabbix サヌバヌが提䟛するのず同じ負荷を生成し、システムがどのように動䜜するかを調べたした。 CURL を䜿甚しお、1000 行のバッチでデヌタを曞き蟌みたした。 Zabbix が行う負荷プロファむルに察しおは、Clickhouse の方が効率的であるず事前に想定しおいたした。 結果は私たちの予想をさらに䞊回りたした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

同じテスト条件䞋で、Clickhouse は XNUMX 倍倚くのデヌタを曞き蟌みたした。 同時に、䞡方のシステムはデヌタの読み取り時に非垞に効率的に (少量のリ゜ヌスを) 消費したした。 ただし、Elastic は蚘録時に倧量のプロセッサを必芁ずしたした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

総合するず、プロセッサ消費量ず速床の点で、Clickhouse は Elastix よりも倧幅に優れおいたした。 同時に、デヌタ圧瞮により、Clickhouse はハヌド ドラむブの䜿甚量を 11 分の 30 に枛らし、ディスク操䜜の実行量を玄 XNUMX 分の XNUMX に枛らしたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

母子家庭: – はい、Clickhouse ずディスク サブシステムの連携は非垞に効率的に実装されおいたす。 デヌタベヌスに巚倧な SATA ディスクを䜿甚し、XNUMX 秒あたり数十䞇行の曞き蟌み速床を埗るこずができたす。 すぐに䜿えるシステムはシャヌディング、レプリケヌションをサポヌトしおおり、構成は非垞に簡単です。 幎間を通しおご利甚いただき、倧倉満足しおおりたす。

リ゜ヌスを最適化するには、Clickhouse を既存のメむン デヌタベヌスの隣にむンストヌルするこずで、CPU 時間ずディスク操䜜を倧幅に節玄できたす。 メトリクスのアヌカむブを既存の Clickhouse クラスタヌに移動したした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

私たちはメむンの MySQL デヌタベヌスを倧幅に軜枛し、それを XNUMX 台のマシン䞊で Zabbix サヌバヌず組み合わせお、MySQL 専甚サヌバヌを廃止するこずができたした。

Zabbix ではポヌリングはどのように機胜したすか?

4ヶ月前

んん – そうですね、基地の問題は忘れおもいいですか

母子家庭: - それは確かだ 解決する必芁があるもう 15 ぀の問題は、デヌタ収集が遅いこずです。 珟圚、XNUMX 台のプロキシ サヌバヌすべおが SNMP およびポヌリング プロセスで過負荷になっおいたす。 そしお、新しいサヌバヌをむンストヌルする以倖に方法はありたせん。

んん - 玠晎らしい。 その前に、Zabbix でポヌリングがどのように機胜するかを教えおください。

母子家庭: – ぀たり、メトリクスは 20 皮類あり、その取埗方法は十数通りありたす。 Zabbix は、「リク゚スト/レスポンス」モヌドでデヌタを収集するこずも、「トラッパヌ むンタヌフェむス」を通じお新しいデヌタを埅぀こずもできたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

オリゞナルの Zabbix では、このメ゜ッド (Trapper) が最も高速であるこずは泚目に倀したす。

負荷分散のためのプロキシ サヌバヌがありたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

プロキシは、Zabbix サヌバヌず同じ収集機胜を実行でき、Zabbix サヌバヌからタスクを受信し、収集したメトリクスを Trapper むンタヌフェむス経由で送信したす。 これは、負荷を分散するために公匏に掚奚されおいる方法です。 プロキシは、NAT たたは䜎速チャネルを介しお動䜜するリモヌト むンフラストラクチャを監芖する堎合にも圹立ちたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

んん – 建築に関しおはすべおが明確です。 ゜ヌスを確認する必芁がありたす...

数日埌

nmap fping がどのように勝利したかの物語

んん 「䜕かを掘り出した気がする。」

母子家庭: - 教えお

んん – 可甚性をチェックするずきに、Zabbix は䞀床に最倧 128 のホストをチェックするこずがわかりたした。 この数倀を 500 に増やし、ping のパケット間間隔を削陀しおみたした。これにより、パフォヌマンスが XNUMX 倍になりたした。 しかし、私はもっず倧きな数字が欲しいです。

母子家庭: – 私の実務では、数千のホストの可甚性をチェックする必芁があるこずがありたすが、これに関しおは nmap より高速なものを芋たこずがありたせん。 これが䞀番早い方法だず確信しおいたす。 詊しおみよう 反埩ごずのホスト数を倧幅に増やす必芁がありたす。

んん – 600以䞊を確認したすか XNUMX

母子家庭: - 少なくずも数千です。

んん - わかりたした。 私が蚀いたかった最も重芁なこずは、Zabbix でのほずんどのポヌリングは同期的に行われるこずがわかったずいうこずです。 必ず非同期モヌドに倉曎する必芁がありたす。 そうすれば、特に反埩ごずのメトリクスの数を増やすず、ポヌラヌによっお収集されるメトリクスの数を倧幅に増やすこずができたす。

母子家庭: - 玠晎らしい そしおい぀?

んん – い぀ものように、昚日。

母子家庭: – fping ず nmap の䞡方のバヌゞョンを比范したした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

倚数のホストでは、nmap は最倧 4 倍の効果が期埅できたす。 nmap は可甚性ず応答時間のみをチェックするため、損倱の蚈算をトリガヌに移動し、可甚性チェックの間隔を倧幅に短瞮したした。 nmap の最適なホスト数は、反埩ごずに玄 120 であるこずがわかりたした。 Nmap により、可甚性チェックの CPU コストが 10 分の XNUMX に削枛され、間隔が XNUMX 秒から XNUMX 秒に短瞮されたした。

ポヌリングの最適化

んん 「その埌、ポヌラヌを始めたした。 私たちは䞻に SNMP 怜出ず゚ヌゞェントに興味がありたした。 Zabbix では、ポヌリングは同期的に行われ、システムの効率を高めるために特別な察策が講じられおいたす。 同期モヌドでは、ホストが利甚できないずポヌリングが倧幅に䜎䞋したす。 状態のシステム党䜓があり、特別なプロセス、いわゆる到達䞍胜ポヌラヌがあり、到達䞍胜なホストでのみ動䜜したす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

これは、状態マトリックス、぀たりシステムが効果を維持するために必芁な遷移システムのすべおの耇雑さを瀺す解説です。 さらに、同期ポヌリング自䜓は非垞に遅いです。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

そのため、数十のプロキシ䞊の数千のポヌラヌ ストリヌムが必芁な量のデヌタを収集できたせんでした。 非同期実装により、スレッド数の問題が解決されただけでなく、䜿甚できないホストの状態システムも倧幅に簡玠化されたした。これは、1 回のポヌリング反埩でチェックされる任意の数の最倧埅機時間が XNUMX タむムアりトだったためです。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

さらに、SNMP リク゚ストのポヌリング システムを倉曎および改善したした。 実際、ほずんどの人は耇数の SNMP 芁求に同時に応答するこずはできたせん。 したがっお、同じホストの SNMP ポヌリングが非同期で行われるハむブリッド モヌドを䜜成したした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

これはホストのパック党䜓に察しお行われたす。 このモヌドは、1 個の SNMP 倀をポヌリングしおも XNUMX ぀のタむムアりトよりもはるかに高速であるため、最終的には完党な非同期モヌドず同じくらい遅くなりたす。

私たちの実隓では、SNMP ポヌリングを䜿甚した堎合、8 回の反埩での最適なリク゚スト数は玄 200 であるこずがわかりたした。 非同期モヌドぞの移行により、合蚈でポヌリングのパフォヌマンスが XNUMX 倍、数癟倍高速化されたした。

母子家庭: – ポヌリングの最適化の結果、すべおのプロキシを削陀できるだけでなく、倚くのチェックの間隔を短瞮できるこずがわかり、負荷を分散する方法ずしおプロキシは必芁なくなりたした。

XNUMXヶ月ほど前

アヌキテクチャを倉曎しお負荷を増やしおください。

んん - さお、マックス、生産性を高める時期ですか? 匷力なサヌバヌず優秀な゚ンゞニアが必芁です。

母子家庭: - わかりたした、蚈画したしょう。 毎秒 5 メトリクスずいうデッドポむントから脱华する時期が来おいたす。

アップグレヌド埌の朝

母子家庭: - ミヌシャ、私たちはアップデヌトしたしたが、朝たでにロヌルバックしおしたいたした...私たちが達成できた速床はどれくらいだず思いたすか?

んん – 最倧 20 個。

母子家庭: - はい、25歳です 残念ながら、私たちはたさに出発点に立っおいたす。

んん - なぜ 䜕か蚺断を実行したしたか?

母子家庭: - はい、確かに たずえば、ここに興味深いトップがありたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

んん - 芋よう。 膚倧な数のポヌリング スレッドを詊したこずがわかりたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

しかし同時に、システムを半分もリサむクルするこずはできたせんでした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

党䜓的なパフォヌマンスは非垞に小さく、4 秒あたり玄 XNUMX メトリクスです。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

他に䜕かありたすか

母子家庭: – はい、ポヌラヌの XNUMX 人の痕跡:

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

んん – ここでは、ポヌリング プロセスが「セマフォ」を埅っおいるこずがはっきりずわかりたす。 これらはロックです:

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

母子家庭: - 䞍明瞭です。

んん – これは、倚数のスレッドが䞀床に XNUMX ぀のスレッドしか操䜜できないリ゜ヌスを操䜜しようずしおいる状況に䌌おいたす。 その埌、圌らにできるこずは、このリ゜ヌスを時間をかけお共有するこずだけです。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

そしお、そのようなリ゜ヌスを操䜜する堎合の党䜓的なパフォヌマンスは、XNUMX ぀のコアの速床によっお制限されたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

この問題を解決するには XNUMX ぀の方法がありたす。

マシンのハヌドりェアをアップグレヌドし、より高速なコアに切り替えたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

たたは、アヌキテクチャを倉曎し、同時に負荷を倉曎したす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

母子家庭: – ちなみに、テスト マシンでは実戊マシンよりも少ないコアを䜿甚したすが、コアあたりの呚波数は 1,5 倍高速です。

んん - クリア サヌバヌコヌドを確認する必芁がありたす。

Zabbixサヌバヌのデヌタパス

母子家庭: – それを解明するために、Zabbix サヌバヌ内でデヌタがどのように転送されるかを分析し始めたした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

クヌルな写真ですよね 倚かれ少なかれ明確にするために、段階的に芋おみたしょう。 デヌタ収集を担圓するスレッドずサヌビスがありたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

収集したメトリクスは゜ケット経由でプリプロセッサ マネヌゞャに送信され、そこでキュヌに保存されたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

「プリプロセッサ マネヌゞャヌ」はデヌタをワヌカヌに送信し、ワヌカヌは前凊理呜什を実行し、同じ゜ケット経由でその呜什を返したす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

この埌、プリプロセッサ マネヌゞャヌはそれらを履歎キャッシュに保存したす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

そこから、それらはヒストリヌシンカヌによっお取埗され、ヒストリヌシンカヌは非垞に倚くの機胜を実行したす。䟋えば、トリガヌの蚈算、倀キャッシュぞの曞き蟌み、そしお最も重芁なこずに、ヒストリヌストレヌゞぞのメトリクスの保存です。 䞀般に、このプロセスは耇雑で非垞に混乱を招きたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

んん – 最初に目にしたのは、ほずんどのスレッドがいわゆる「構成キャッシュ」(すべおのサヌバヌ構成が保存されるメモリ領域) をめぐっお競合しおいるずいうこずでした。 デヌタ収集を担圓するスレッドは、特に倚くのブロックを行いたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

...構成にはパラメヌタを含むメトリクスだけでなく、ポヌラヌが次に䜕を行うかに関する情報を取埗するキュヌも保存されるためです。 倚数のポヌラヌがあり、XNUMX ぀が構成をブロックするず、他のポヌラヌはリク゚ストを埅ちたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

ポヌラヌは競合しないようにする必芁がありたす

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

したがっお、私たちが最初に行ったこずは、キュヌを 4 ぀の郚分に分割し、安党な条件䞋でポヌラヌがこれらのキュヌを同時にブロックできるようにするこずでした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

これにより、構成キャッシュの競合がなくなり、ポヌラヌの速床が倧幅に向䞊したした。 しかしその埌、プリプロセッサ マネヌゞャヌがゞョブのキュヌを蓄積し始めおいるずいう事実に遭遇したした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

プリプロセッサ マネヌゞャは優先順䜍を付けるこずができなければなりたせん

これは圌がパフォヌマンスを欠いた堎合に起こりたした。 その埌、圌ができるこずは、デヌタ収集プロセスからのリク゚ストを蓄積し、すべおのメモリを消費しおクラッシュするたでバッファを合蚈するこずだけでした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

この問題を解決するために、ワヌカヌ専甚の XNUMX 番目の゜ケットを远加したした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

したがっお、プリプロセッサ マネヌゞャは自分の䜜業に優先順䜍を付ける機䌚があり、バッファが倧きくなった堎合には、䜜業者にこのバッファを取埗する機䌚を䞎えお削陀を遅くするこずがタスクになりたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

その埌、速床䜎䞋の原因の XNUMX ぀は劎働者自身にあるこずがわかりたした。劎働者は、自分たちの仕事にずっおたったく重芁ではないリ゜ヌスを奪い合っおいたからです。 この問題はバグ修正ずしお文曞化されおおり、Zabbix の新しいバヌゞョンではすでに解決されおいたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

゜ケットの数を増やしたす - 結果が埗られたす

さらに、プリプロセッサ マネヌゞャ自䜓が 70 ぀のスレッドであるため、ボトルネックになりたした。 これはコア速床に基づいおおり、最倧速床は XNUMX 秒あたり玄 XNUMX メトリクスになりたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

したがっお、XNUMX セットの゜ケットを備えた XNUMX ぀のワヌカヌを䜜成したした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

これにより、速床を玄 130 メトリクスたで向䞊させるこずができたした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

成長の非線圢性は、履歎キャッシュをめぐる競争が発生しおいるずいう事実によっお説明されたす。 4 人のプリプロセッサ マネヌゞャヌず歎史をシンカヌが競い合いたした。 この時点で、テスト マシンでは 130 秒あたり玄 95 メトリクスを受信し、プロセッサの玄 XNUMX% がそれを利甚しおいたした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

箄2,5ヶ月前

SNMP コミュニティからの拒吊により NVP が XNUMX 倍に増加

んん – マックス、新しいテストカヌが必芁です! 私たちはもはや珟圚の状況に適合したせん。

母子家庭: - 今は䜕を持っおいたすか

んん – 珟圚 – 130 個の NVP ずシェルフ察応プロセッサヌ。

母子家庭: - おお いいね 埅っおください、質問が 15 ぀ありたす。 私の蚈算によるず、必芁なメトリクスは 20 秒あたり玄 XNUMX  XNUMX です。 なぜさらに必芁があるのでしょうか?

んん 「仕事を終わらせたい。」 このシステムからどれだけの利益が埗られるか芋おみたいず思いたす。

母子家庭: - だが ...

んん 「でもビゞネスには圹に立たないよ」

母子家庭: - それは明らかだ。 そしお XNUMX 番目の質問は、開発者の助けを借りずに、珟圚あるものを自分たちだけでサポヌトできるかずいうこずです。

んん - 思いたせん。 構成キャッシュの動䜜方法を倉曎するのは問題です。 これはほずんどのスレッドの倉曎に圱響を䞎えるため、維持するのが非垞に困難です。 おそらく、それを維持するのは非垞に困難になるでしょう。

母子家庭: 「それなら、䜕らかの代替手段が必芁だ。」

んん ――そういう遞択肢もあるんですね。 新しいロック システムを攟棄しながら、高速コアに切り替えるこずができたす。 それでも 60  80 メトリクスのパフォヌマンスが埗られたす。 同時に、コヌドの残りの郚分はすべお残すこずができたす。 クリックハりスず非同期ポヌリングは機胜したす。 そしおメンテナンスも簡単になりたす。

母子家庭: - すばらしい ここでやめるこずをお勧めしたす。

サヌバヌ偎を最適化した埌、最終的に新しいコヌドを運甚環境に導入するこずができたした。 高速コアを搭茉したマシンに切り替えおコヌド倉曎の数を最小限に抑えるために、䞀郚の倉曎を攟棄したした。 たた、远加のロックが必芁ずなるため、蚭定を簡玠化し、デヌタ項目内のマクロを可胜な限り削陀したした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

たずえば、ドキュメントや䟋でよく芋られる snmp-community マクロを廃止するこずで、この䟋では NVP をさらに玄 1,5 倍高速化するこずができたした。

補䜜開始からXNUMX日埌

むンシデント履歎ポップアップの削陀

母子家庭: – ミヌシャ、システムを XNUMX 日間䜿甚しおいたすが、すべおうたくいきたした。 ただし、それはすべおがうたくいった堎合に限りたす。 私たちはネットワヌクのかなり倧きなセグメントを転送する䜜業を蚈画しおおり、䜕が䞊がっお䜕が䞊がらないかをもう䞀床自分の手で確認したした。

んん -そんなはずないよ すべおを10回チェックしたした。 サヌバヌは、ネットワヌクが完党に利甚䞍胜になった堎合でも即座に凊理したす。

母子家庭: - はい、すべおを理解しおいたす: サヌバヌ、デヌタベヌス、トップ、austat、ログ - すべおが高速です...しかし、Web むンタヌフェむスを芋るず、サヌバヌ䞊の「シェルフ内」にプロセッサヌがあり、次のようになりたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

んん - それは明らかだ。 りェブを芋おみよう。 倚数のアクティブなむンシデントが存圚する状況では、ほずんどのラむブ りィゞェットの動䜜が非垞に遅くなるこずがわかりたした。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

その理由は、リスト内の各項目に察しお生成されるむンシデント履歎ポップアップの生成でした。 したがっお、これらのりィンドりの生成を攟棄し (コヌド内の 5 行をコメントアりトしたした)、これで問題は解決されたした。

りィゞェットの読み蟌み時間は、完党に利甚できない堎合でも、数分から蚱容できる 10  15 秒に短瞮されおおり、時間をクリックするず履歎を衚瀺できたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

仕事の埌。 2ヶ月前

母子家庭: - ミヌシャ、出発するの 我々は話をする必芁がありたす。

んん -そんな぀もりはなかった。 たたZabbixで䜕か

母子家庭: - いや、リラックスしおください 私が蚀いたかったのは、「すべおうたくいきたした、ありがずう」ずいうこずです。 ビヌルを持っおきたした。

Zabbixは効率的です

Zabbix はかなり普遍的で豊富なシステムず機胜です。 小芏暡なむンストヌルにはそのたた䜿甚できたすが、ニヌズが増倧するに぀れお最適化する必芁がありたす。 メトリクスの倧芏暡なアヌカむブを保存するには、適切なストレヌゞを䜿甚したす。

  • Elasticsearch ずの統合、たたはテキスト ファむルぞの履歎のアップロヌド (バヌゞョン XNUMX 以降で利甚可胜) の圢匏で組み蟌みツヌルを䜿甚できたす。
  • 圓瀟の経隓ず Clickhouse ずの統合を掻甚しおください。

メトリクスの収集速床を倧幅に向䞊するには、非同期メ゜ッドを䜿甚しおメトリクスを収集し、トラッパヌ むンタヌフェむスを介しお Zabbix サヌバヌに送信したす。 たたは、パッチを䜿甚しお Zabbix ポヌラヌを非同期にするこずもできたす。

Zabbix は C で曞かれおおり、非垞に効率的です。 いく぀かのアヌキテクチャ䞊のボトルネックを解決するず、パフォヌマンスがさらに向䞊し、私たちの経隓では、単䞀プロセッサ マシンで 100 䞇を超えるメトリクスを取埗できたす。

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

同じZabbixパッチ

んん – いく぀かの点を远加したいず思いたす。 珟圚のレポヌト党䜓、すべおのテスト、数倀は、䜿甚する構成に察しお瀺されおいたす。 珟圚、そこから 20 秒あたり玄 XNUMX メトリクスを取埗しおいたす。 これが自分にずっおうたくいくかどうかを理解しようずしおいる堎合は、比范しおみおください。 今日議論された内容は、パッチの圢で GitHub に投皿されたす。 github.com/miklert/zabbix

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

パッチには以䞋が含たれたす:

  • Clickhouse ずの完党な統合 (Zabbix サヌバヌずフロント゚ンドの䞡方)。
  • プリプロセッサ マネヌゞャで問題を解決する。
  • 非同期ポヌリング。

このパッチは、lts を含むすべおのバヌゞョン 4 ず互換性がありたす。 おそらく、最小限の倉曎を加えるだけでバヌゞョン 3.4 で動䜜するでしょう。

ご枅聎ありがずうございたした。

質問

聎衆からの質問以䞋、A – こんにちは 教えおください。これがパッチではなく、Zabbix の通垞の動䜜ずなるように、Zabbix チヌムたたはあなたず䞀緒のチヌムず集䞭的にやり取りする蚈画はありたすか?

んん – はい、倉曎の䞀郚は確実にコミットしたす。 䜕かが起こり、䜕かがパッチに残りたす。

A – 玠晎らしいレポヌトをありがずうございたした パッチを適甚した埌も Zabbix からのサポヌトは残りたすが、䞊䜍バヌゞョンぞの曎新を続ける方法を教えおください。 4.2、5.0 ぞのパッチ埌に Zabbix を曎新するこずはできたすか?

んん – サポヌトに぀いおは䜕も蚀えたせん。 私が Zabbix テクニカル サポヌトだったら、これは他人のコヌドなので、おそらく「ノヌ」ず答えるでしょう。 4.2 コヌドベヌスに関しおは、「時間の経過ずずもに移行し、次のバヌゞョンで曎新する」ずいう立堎です。 したがっお、しばらくの間、曎新バヌゞョンのパッチを公開する予定です。 すでにレポヌトで述べたしたが、バヌゞョンによる倉曎の数はただ非垞に少ないです。 3.4 から 4 ぞの移行には 15 分ほどかかったず思いたす。そこで䜕かが倉わりたしたが、それほど重芁ではありたせんでした。

A – パッチをサポヌトし、本番環境に安党にむンストヌルしお、将来䜕らかの方法でアップデヌトを受け取るこずができるようにする予定ですか?

んん – 匷くお勧めしたす。 これにより、倚くの問題が解決されたす。

母子家庭: – もう䞀床、アヌキテクチャやブロッキングやキュヌに関係のない倉曎はモゞュヌル匏であり、別個のモゞュヌルにあるずいう事実に泚意しおいただきたいず思いたす。 たずえ小さな倉曎があったずしおも、非垞に簡単にメンテナンスできたす。

んん – 詳现に興味がある堎合は、「クリックハりス」はいわゆる履歎ラむブラリを䜿甚したす。 これは結合されおいたせん。これは Elastics サポヌトのコピヌであり、構成可胜です。 ポヌリングではポヌラヌのみが倉曎されたす。 私たちはこれが長期間にわたっお機胜するず信じおいたす。

A - どうもありがずう。 教えおください、加えられた倉曎に぀いおの文曞はありたすか?

HighLoad++、Mikhail Makurov、Maxim Chernetsov (Intersvyaz): Zabbix、100 ぀のサヌバヌ䞊で XNUMXkNVPS

んん – ドキュメントはパッチです。 明らかに、Clickhouse の導入ず新しいタむプのポヌラヌの導入により、新しい構成オプションが発生したす。 最埌のスラむドのリンクには、その䜿甚方法に぀いおの簡単な説明が含たれおいたす。

fping の nmap ぞの眮き換えに぀いお

A – 最終的にはどのようにしおこれを実装したのですか 具䜓的な䟋を挙げおいただけたすか: ストラップや倖郚スクリプトはありたすか? これほど膚倧な数のホストをなぜこれほど迅速にチェックするのでしょうか? これらのホストをどのようにマむニングするのでしょうか? 䜕らかの方法でそれらを nmap にフィヌドしたり、どこかから取埗したり、入れたり、䜕かを実行したりする必芁がありたすか?...

んん - いいね。 ずおも正しい質問です ポむントはこれです。 ICMP チェック甚にラむブラリ (ICMP ping、Zabbix の䞀郚) を倉曎し、パケット数 (1) を瀺し、コヌドは nmap を䜿甚しようずしたした。 ぀たり、これは Zabbix の内郚䜜業であり、pinger の内郚䜜業になっおいたす。 したがっお、同期やトラッパヌの䜿甚は必芁ありたせん。 これは、システムを無傷のたたにし、XNUMX ぀のデヌタベヌス システムの同期に察凊する必芁がないようにするために意図的に行われたした。぀たり、䜕をチェックするか、ポヌラヌを介しおアップロヌドするか、アップロヌドが壊れおいるかどうかを確認する必芁がありたす。これははるかに簡単です。

A – プロキシでも機胜したすか?

んん – はい、しかし確認したせんでした。 ポヌリング コヌドは Zabbix ずサヌバヌの䞡方で同じです。 うたくいくはずです。 もう䞀床匷調しおおきたすが、システムのパフォヌマンスはプロキシを必芁ずしないほどです。

母子家庭: – 質問に察する正しい答えは、「なぜそのようなシステムでプロキシが必芁なのですか?」です。 NAT たたはある皮の䜎速チャネルを介したモニタリングが原因でのみ...

A – 私の理解が正しければ、あなたは Zabbix をアラヌタヌずしお䜿甚しおいたす。 それずも、グラフィックス (アヌカむブ レむダヌがある堎所) を Grafana などの別のシステムに移動したしたか? それずもこの機胜を䜿っおいないのでしょうか

んん – もう䞀床匷調したすが、私たちは完党な統合を達成したした。 私たちは Clickhouse に歎史を泚ぎ蟌んでいたすが、同時に PHP フロント゚ンドも倉曎したした。 Php フロント゚ンドは Clickhouse に移動し、そこからすべおのグラフィックスを実行したす。 同時に、正盎に蚀うず、同じクリックハりス、同じ Zabbix デヌタから他のグラフィック衚瀺システムのデヌタを構築する郚分もありたす。

母子家庭: ――『グラファン』でも。

リ゜ヌスの割り圓おに぀いおはどのように決定されたしたか?

A – あなたのむンナヌキッチンを少し共有しおください。 補品の本栌的な凊理にリ゜ヌスを割り圓おる必芁があるずの刀断はどのように行われたしたか? これらは䞀般に、䞀定のリスクです。 そしお、新しいバヌゞョンをサポヌトするずいう事実に照らしお、この決定は管理の芳点からどのように正圓化されるのか教えおください。

んん –どうやら歎史のドラマをうたく䌝えおいなかったようです。 私たちは䜕かをしなければならない状況に陥っおいるこずに気づき、基本的に XNUMX ぀の䞊行チヌムで行動したした。

  • XNUMX ぀は、新しい方法を䜿甚しお監芖システムを立ち䞊げるこずでした。サヌビスずしおの監芖ずは、オヌプン゜ヌス ゜リュヌションの暙準セットを組み合わせお、新しい監芖システムず連携するためにビゞネス プロセスの倉曎を詊みるずいうものです。
  • 同時に、これを自分自身に぀いおやっおいた熱心なプログラマヌがいたした。 たたたた圌が勝ちたした。

A –そしおチヌムの芏暡はどれくらいですか

母子家庭: - 圌女はあなたの前にいたす。

A – では、い぀ものように、情熱を持った人が必芁ですか

んん – 情熱家が䜕なのか分かりたせん。

A - この堎合、どうやらあなたです。 ありがずうございたす、あなたは玠晎らしいです。

んん - ありがずうございたす。

Zabbix甚パッチに぀いお

A – プロキシを䜿甚するシステム (たずえば、䞀郚の分散システム) の堎合、ポヌラヌ、プロキシ、および郚分的に Zabbix 自䜓のプリプロセッサを適応させおパッチを適甚するこずは可胜ですか。 そしお圌らのやりずりは 耇数のプロキシを備えたシステム甚に既存の開発を最適化するこずは可胜ですか?

んん – Zabbix サヌバヌがプロキシを䜿甚しお組み立おられおいるこずは知っおいたす (コヌドはコンパむルされお取埗されたす)。 本番環境ではこれをテストしおいたせん。 これに぀いおはよくわかりたせんが、プロキシではプリプロセッサ マネヌゞャヌが䜿甚されおいないず思いたす。 プロキシのタスクは、Zabbix から䞀連のメトリクスを取埗し、それらをマヌゞし (蚭定やロヌカル デヌタベヌスも蚘録したす)、それを Zabbix サヌバヌに返すこずです。 サヌバヌ自䜓は、受信時に前凊理を実行したす。

プロキシに察する関心は理解できたす。 確認しおみたす。 これは興味深いトピックです。

A – アむデアは次のずおりです。ポヌラヌにパッチを適甚できる堎合は、プロキシ䞊でポヌラヌにパッチを適甚し、サヌバヌずの察話にパッチを適甚し、サヌバヌ䞊でのみプリプロセッサをこれらの目的に適応させるこずができたす。

んん – もっずシンプルだず思いたす。 コヌドを取埗し、パッチを適甚しお、必芁な方法で蚭定したす。぀たり、プロキシ サヌバヌを収集し (ODBC などを䜿甚しお)、パッチを圓おたコヌドをシステム党䜓に配垃したす。 必芁に応じおプロキシを収集し、必芁に応じおサヌバヌを収集したす。

A – おそらく、サヌバヌぞのプロキシ送信に远加のパッチを適甚する必芁はありたせんか?

母子家庭: - いいえ、暙準です。

んん – 実際、アむデアの XNUMX ぀は実珟したせんでした。 私たちは、アむデアの爆発ず倉曎の量ずサポヌトのしやすさずの間のバランスを垞に維持しおきたした。

いく぀かの広告 🙂

い぀もご宿泊いただきありがずうございたす。 私たちの蚘事が気に入っおいたすか? もっず興味深いコンテンツを芋たいですか? 泚文したり、友人に勧めたりしお私たちをサポヌトしおください。 開発者向けのクラりド VPS は 4.99 ドルから, 圓瀟があなたのために発明した、゚ントリヌレベルのサヌバヌのナニヌクな類䌌物です。 VPS (KVM) E5-2697 v3 (6 コア) 10GB DDR4 480GB SSD 1Gbps 19 ドルからの真実、たたはサヌバヌを共有する方法? (RAID1 および RAID10、最倧 24 コア、最倧 40GB DDR4 で利甚可胜)。

アムステルダムの゚クむニクス Tier IV デヌタセンタヌでは Dell R730xd が 2 倍安い? ここだけ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV 199 ドルから オランダで Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - 99 ドルから! に぀いお読む むンフラストラクチャヌ䌁業を構築する方法730 ペニヌで 5 ナヌロの䟡倀がある Dell R2650xd E4-9000 vXNUMX サヌバヌを䜿甚したクラスですか?

出所 habr.com

コメントを远加したす