例としてDVR Trassir SDKを使用してZabbixのテンプレートを作成する

テンプレートの目的は、SDK Webサーバーを介したLinuxベースの同じソフトウェアの制御下で、Trassirレジストラーに基づくビデオ監視システムのサーバーの監視を自動化することです。



Trassir SDKはWebサーバー設定に含まれています。そこでパスワードも指定する必要があります。 製造元のドキュメントによると、サーバーに関する情報を取得するために別のアカウントを作成する必要はありません。



Trassir SDKは、リクエストを通じてサーバーステータスへのアクセスを提供します



https://{ip   }:{ }/health?password={ SDK}
      
      





ブラウザでこのリンクを開くと、使用されている証明書が安全でないことを示すメッセージが表示されます。続行するには、ブラウザの指示に従う必要があります。



特定の例を使用すると、応答本文で次のようになります。



 { "disks": "1", "database": "1", "channels_total": "13", "channels_online": "13", "uptime": "882232", "cpu_load": "33.96", "network": "1", "automation": "1", "disks_stat_main_days": "16.41", "disks_stat_priv_days": "0.00", "disks_stat_subs_days": "16.41" } /* Meanings of values: -1 - undefined value 0 - bad health (error) 1 - good health (ok) Values for channels are channel counters. Value of cpu_load is given in percents.
      
      





文字{to to character}からの出力の最初の部分はドキュメントに対応し、ドキュメントに対応する標準化されたJSON形式の出力です。次に、標準に適合しない出力の説明が続きます。



以前は、Zabbix監視システムでこの出力を使用するには、エージェントで使用され、必要なデータを取得する独自のスクリプトを作成する必要がありました。 このアプローチでは、応答ファイルを保存してその関連性を監視するか、各要素を個別に要求する必要があります。 1ではなく11のクエリを使用します。



バージョンZabbix 4.0では、httpおよびhttpsプロトコルを介してデータを受信し、それらを処理できるエージェントデータ要素タイプと、メイン要素から計算される依存要素が登場しました。



アイデアは、サーバーの応答をテキストデータ要素に取得し、そこから必要なデータ要素を選択することです。



最初に、テンプレートの汎用性とセキュリティのために、ポート番号とパスワードのマクロを定義します。



テンプレートを作成し、タイプ「HTTPエージェント」、必要に応じてキー、URL https:// {HOST.IP}:{$ TRASSIR_SDK_PORT} / healthおよびパスワードリクエストフィールド{$ TRASSIR_SDK_PASS}のデータ要素を追加します。 ここで、{HOST.IP}は、ホストにテンプレートを追加するときに、ホストIPアドレスに変換されるマクロです。



すでに実験的にわかっているように、このリクエストはJSON形式に完全には準拠しておらず、データを抽出するだけでは機能しません。



新しいZabbix機能を使用し、正規表現\ {(\ n |。)* \}を追加します。JSON形式のデータのみを返す出力\ 0を含むデータ要素テンプレートの「前処理」タブに追加します。



なぜそうなのか誰が気にする
このような表現を初心者向けに開発するのは、 ビジュアルエディターでははるかに簡単です。 この式では、開き中括弧の特定の文字を探しています。正規表現ではこれらの括弧が使用されるため、文字の前にバックスラッシュを指定する必要があります。 JSONデータには、任意の(実際にはないが、この瞬間は省略します)文字と改行があります。 ドットまたは改行制御文字を示すこれらの文字オプション\ nは、カッコ内に縦線で示されています。 括弧の後ろにはアスタリスクがあります。これは、見つかった文字または改行が無限に繰り返されることを示します。 次は閉じ括弧です。 出力\ 0は、見つかったすべてのシーケンスが表示されることを意味します。


次に、以前に受信したJSON応答がメインデータ要素として示され、前処理がJSONパスを指定して任意のデータ要素にアクセスできるステップ「JSONパス」で示される依存データ要素が作成されます。 この例では、すべてのデータがトップレベルにあるため、すべての要素に対して$ .disksなどを指定します。



新しいデータ、通常の範囲への入力、およびオプションのグラフィックをチェックするトリガーを作成するだけです。



Zabbixの通常の方法では、外部システムからデータを受信しましたが、その出力は規格に完全には準拠していませんでした。 外部スクリプトがないため、監視システムの理解が簡単になり、メンテナンスが容易になります。



指定されたテンプレートは、share.zabbix.com交換ポータルで入手できます



All Articles