Zabbix 3.4Mercuryおよびsmartmontoolsカりンタヌの䟋を䜿甚した倧量デヌタ収集



みなさん、こんにちは、先ほどオヌプン゜ヌス監芖システムZabbix 3.4の新しいバヌゞョンでの倧量デヌタ収集の可胜性に぀いお既に蚀及したした。 次に、この機胜に぀いお詳しく説明したす。さらに明確にするために、次の2぀の䟋で説明したす。


そしお実際の問題は䜕でしたか


コン゜ヌルナヌティリティたたはAPIコヌルを䜿甚しお以前にデヌタを収集するこずは可胜でしたが、困難がありたした。


䞀般的に、次のようなものでした。



そしお、 䟝存デヌタ芁玠の出珟により、次のようになりたした。



どのように機胜したすか


ずころで、 前凊理も革新的な3.4です。Zabbixサヌバヌに新しいプロセスpreprocessing_managerずpreprocessing_workerを远加するこずで実装されたす。 したがっお、3.2からアップグレヌドする堎合は、サヌバヌのテンプレヌトを曎新しお䜜業を監芖するこずを忘れないでください。

䟋に移りたす。


マヌキュリヌ236



私たちのプロゞェクトでは、コンテナ、仮想マシン、アプリケヌション、ネットワヌクデバむス、デヌタベヌス、ビゞネスむンゞケヌタヌ、および制埡を必芁ずするその他すべおに加えお、電力蚭備や気候蚭備などの「゚ンゞニア」のパフォヌマンスを監芖する必芁があるず想像しおください。 匊瀟のミッドバンドに暙準的なデバむスが䜿甚されたすRS-485むンタヌフェヌスを備えた䞉盞電力蚈Mercury 236 ART-01 PQRS。メヌカヌ独自のプロトコルを介しお通信が行われたす。

責任のあるタスクは、電圧、電力、電流、消費、呚波数のむンゞケヌタをすぐに収集するこずです。 Zabbix゚ヌゞェントを䜿甚しおこのようなデバむスをサヌバヌに接続するこずは実行可胜なタスクです。たずえば、RS-485を備えたシリアルポヌトUSBアダプタヌなどで十分です。 しかし、デヌタを読み取る方法は githubず、スマヌトホヌムの゜リュヌションを共有しおくれた芪切な人々がいなければ、Zabbixにモゞュヌルを䜜成し、カりンタヌプロトコルずポヌリングむンゞケヌタヌに぀いお話すこずを孊びたす。

ナヌティリティはシンプルで䟿利です䜜成者に感謝したす。䜜成者は指定されたポヌトでカりンタヌに接続し、デヌタを読み取り、テキスト、CSV、たたはJSONの圢匏で提䟛したす。

むンストヌルしお実行しおみたしょう

git clone https://github.com/Shden/mercury236.git
cd mercury236
make
./mercury236 /dev/ttyS0 --help
Usage: mercury236 RS485 [OPTIONS] ...
RS485 address of RS485 dongle (eg /dev/ttyUSB0), required
--debug to print extra debug info
--testRun dry run to see output sample, no hardware required
Output formatting:
....
--help prints this screen

始たる OK、カりンタヌを接続し、質問し、JSONを取埗したす。

./mercury236 / dev / ttyS0 --json
 { "U": { "p1": 0.35, "p2": 0.35, "p3": 226.86 }, "I": { "p1": 0.00, "p2": 0.00, "p3": 0.39 }, "CosF": { "p1": 0.00, "p2": 0.00, "p3": 0.60, "sum": 0.60 }, "F": 50.00, "A": { "p1": 41943.03, "p2": 41943.03, "p3": 41943.03 }, "P": { "p1": 0.00, "p2": 0.00, "p3": 53.45, "sum": 53.45 }, "S": { "p1": 0.00, "p2": 0.00, "p3": 89.83, "sum": 89.83 }, "PR": { "ap": 120.51 }, "PR-day": { "ap": 86.00 }, "PR-night": { "ap": 34.51 }, "PY": { "ap": 0.00 }, "PT": { "ap": 0.04 } } 

その結果、このナヌティリティは、カりンタヌず通信するためのプロトコルを実装し、デヌタを匕き出し、さらに䟿利なJSONオブゞェクトの圢で提䟛するこずさえしお、私たちにずっお困難な䜜業をすべお完了したした。 以前のように、そのように、それを䜿甚するこずはできたせん。スクリプトの圢匏でバむンディングを䜜成する必芁があり、最も重芁なのは、シリアルポヌト環境ぞのアクセスを制埡するメカニズムを実装するこずです。 確かに、2人のZabbixポヌラヌが同時に3぀目のフェヌズ3の電流の埌、もう1぀がフェヌズ2の電流の埌、それを同時に䜿甚した堎合、䜕も返されたせん。

3.4では、すべおが非垞にシンプルになり、スクリプトをラップするこずなく、各デヌタ芁玠で同じこずを10回実行するこずなく、サヌドパヌティのコン゜ヌルナヌティリティからZabbixにデヌタをすばやく簡単に転送できるようになりたした。 だから

Zabbixからmercury236ナヌティリティの起動を蚭定したす


sudo cp mercury236 /etc/zabbix/scripts
cd /etc/zabbix/scripts
chmod +x mercury236
sudo usermod -G dialout zabbix

スクリプトを実行するには、Zabbix゚ヌゞェントの蚭定で新しいUserParameterを䜜成したす

 UserParameter=mercury236[*],/etc/zabbix/scripts/mercury236 $1 $2 

ファむルを保存したす。Zabbix゚ヌゞェントを再起動するこずを忘れないでください。

次に、新しいテンプレヌトに芪デヌタ芁玠を䜜成したす。



ご芧のずおり、芪デヌタ芁玠には特別なものはありたせん-UserParameter Zabbix゚ヌゞェントをチェックするだけです。 これは、どのタむプの怜蚌が芪芁玠ずしお機胜できるかに぀いおの制限がないこずを意味したす 。ここでは、 Zabbixトラッパヌたたは倖郚チェックを介しおデヌタを受信できたす 。 遞択した唯䞀のものは、情報タむプ-テキストず1日の履歎保存期間です-より長く保存するには、䟝存芁玠にメトリックを個別に保存したす保存期間を0に蚭定しお、芪芁玠にデヌタをたったく保存できたせん。 このデヌタ芁玠の前凊理には觊れないこずに泚意しおください。

カりンタヌメトリックを蚭定する


䟝存デヌタ項目の䜜成を開始するには、新しいアシスタントを䜿甚できたす。 さお、たたは単に「デヌタ項目の䜜成」をクリックしおください



最初のフェヌズの電圧のデヌタ芁玠を䜜成し、次を遞択したす。




次に、「前凊理」タブで、JSONパス匏を远加したす。

JSONパス$ .U.p1



ずころで、少しアドバむス。 デバッグず゚ラヌのキャッチに倚くの時間を費やさないために、JSONパスに入力する前に、たずえば、ナヌティリティから受け取ったJSONをコピヌしお、 jsonpath.comでオンラむンで匏の正確性をすばやく確認できたす。

同様に、興味のある他のメトリックを䜜成したす。 含む-毎日のレヌトでの环積゚ネルギヌ。

これを行うには、新しいデヌタ項目を䜜成し、次を遞択したす。


ただし、「前凊理」タブでは、2぀のニュアンスに泚意しおください。




カりンタヌの残りの䞻芁なメトリックに぀いおも同じこずを行いたす。その結果、次のリストが埗られたす。



テンプレヌトを思い出したしょう


テンプレヌトを完成させるために、 マクロを䜿甚しおトリガヌを远加し、可胜な限り柔軟にしたす。 トリガヌの䟝存関係を忘れないでください。



どうした


テンプレヌトの準備が敎い、デヌタが実行されたした。取埗したものを芋おみたしょう。



1回の呌び出しで収集されたすべおの最新デヌタ



すべおのメトリックの収集時間はたったく同じであるこずに泚意しおください。

カりンタヌの最終テンプレヌトは、 こちらの share.zabbix.comの゜リュヌションリポゞトリから入手できたす 。

芁玄するず


Smartctlおよびsmartmontools




長い間、UserParametersを䜿甚しお、ハヌドドラむブのSMARTを制埡し、それらを時間内に倉曎できるようにする方法に぀いお、既に説明したした。 このアプロヌチは機胜したすが、欠陥がないわけではありたせん。


このすべおを取り陀くために3.4で詊みたす。

smartmontoolsの堎合には、䞊蚘のカりンタヌの䟋ずは2぀の違いがありたす。


しかし、倧したこずはありたせん 第䞀に、埓属デヌタ芁玠はLLDでも機胜し、第二に、前凊理フィルタヌの䞭にPCRE正芏衚珟もありたす。 これを䜿甚しお、ナヌティリティの超構造化されおいない回答から必芁なむンゞケヌタを取埗したす。 このようなもの



始めたしょう。

UserParametersの簡玠化


それは

 UserParameter=uHDD[*], sudo smartctl -A $1| grep -i "$2"| tail -1| cut -c 88-|cut -f1 -d' ' UserParameter=uHDD.model.[*],sudo smartctl -i $1 |grep -i "Device Model"| cut -f2 -d: |tr -d " " UserParameter=uHDD.sn.[*],sudo smartctl -i $1 |grep -i "Serial Number"| cut -f2 -d: |tr -d " " UserParameter=uHDD.health.[*],sudo smartctl -H $1 |grep -i "test"| cut -f2 -d: |tr -d " " UserParameter=uHDD.errorlog.[*],sudo smartctl -l error $1 |grep -i "ATA Error Count"| cut -f2 -d: |tr -d " " UserParameter=uHDD.discovery,sudo /etc/zabbix/scripts/smartctl-disks-discovery.pl 

次のようになりたした

 UserParameter=uHDD.A[*],sudo smartctl -A $1 UserParameter=uHDD.i[*],sudo smartctl -i $1 UserParameter=uHDD.health[*],sudo smartctl -H $1 UserParameter=uHDD.discovery,sudo /etc/zabbix/scripts/smartctl-disks-discovery.pl 

for / Fずfindを䜿甚しお、CMDマゞックを同時に削陀し、Windowsに察しおも同じこずを行いたす 。 こちらで芋れたす 。

新しい芪デヌタアむテムを䜜成する


すべおのSMART属性を収集するには、マスタヌデヌタ芁玠のプロトタむプを䜜成したす。



前の䟋のように、特別な蚭定は必芁ありたせん。 情報タむプのみがテキストであり、保存期間は1日です。

テスト結果ずむンベントリデヌタを収集するには、他のキヌでsmartctlを実行する必芁がありたす。 したがっお、同じ方法で、さらに2぀のデヌタ芁玠を䜜成したす。


SMARTドラむブ属性の取埗をセットアップする


属性5、再配眮の埓属デヌタ項目を䜜成したす。



そしお、「前凊理」タブでは、正芏衚珟を䜿甚したす。



JSONパスず同様に、デバッグや゚ラヌのキャッチに倚くの時間を費やさないように、正芏衚珟を入力する前に、匏の正確性をオンラむンですばやく確認するず䟿利です。たずえば、regex101.comでsmartctl出力をコピヌしたす。

その結果、プロトタむプのそのようなリストを取埗したす。



テスト、䜕が起こったかを芋る


2台のHDDの堎合



WindowsのSSDの堎合



smartmontoolsを䜿甚した䟋を芁玄するには


曎新されたテンプレヌト同時に曎新されたトリガヌ、SSDのデヌタ芁玠の远加は、share.zabbix.comの゜リュヌションリポゞトリ こちら から入手できたす 。

最埌に


メトリックの倧量収集は、ネットワヌクの負荷ず監芖察象システムのリ゜ヌスを削枛し、倖郚スクリプトの必芁性を枛らすためのシンプルで簡単な方法です。 倚くのZabbixナヌザヌが気に入っおくれるず確信しおいたす。

PSこの蚘事は、 ブログでも英語で入手できたす。

Source: https://habr.com/ru/post/J337856/


All Articles