Zabbix。プリンターがSNMPを介して情報を共有していない場合はどうなりますか?

良い一日!



画像KDPV



この記事は、やや芸術的な形で書かれた小さなマニュアルです。記事にはたくさんの写真があり、ネタバレに注意深く隠されています。



この記事は誰のためのものですか?UNIXシステム、Zabbixにまだ精通していないが、プリンターから情報を一元的に収集したい初心者のsysadmin向け。



入門。利用可能:



  • Zabbix 5.0
  • CentOS 8
  • SNMP経由で消耗品に関する必要な情報を送信しないプリンタ(このマニュアルでは、Oki C834を例として取り上げます)
  • Zabbix、UNIXシステムに関する知識がほとんどない
  • 消耗品に関する情報を一元的にプリンターから収集したいという大きな要望があります。


行く!



理由と理論的根拠



Lazinessは進歩の原動力です。ある晴れた朝、私は、トナーカートリッジ、ドラムユニット、リボン、オーブンなどの消耗品の状態を監視するために、オフィスに設置されたプリンターを回るのが面倒であることに気付きました。また、印刷されたページのカウンターのインジケーターを随時収集します。それらに基づいて、プリンターのメンテナンスについて決定が行われます。



「そうですね、このような情報を一元的に収集することで、どれだけの時間を節約できるのでしょうか。」 -この考えは私の頭を離れませんでした。監視システムを導入することが決定されました。 Zabbixは、プリンターに加えて、サーバーとネットワーク機器の監視が徐々に接続されることを期待して、古い仲間からのヒントで選ばれました。



CentOS 8は、オペレーティングシステムとしてインストールされました。私は少なくとも少しは慣れていたからです。おそらく、誰かがその時点ですでに書いているのかもしれません。すでにシステム管理を始めているのであれば、UNIXシステムを研究する必要があります。私の答えはイエスです、あなたは絶対に正しいです。



プリンターを監視するためのマニュアルを研究することは、非常に簡単な手順を約束しました-snmpwalk、必要なパラメーターを分離し、OIDをZabbixに接続し、利益を上げます。現実はこの美しい絵を少し揺さぶった。消耗品の状態を示す指標はありませんでした。遠く離れたところに似たものすらありませんでした。一般的に。



記事ZabbixのKyoceraデバイスから統計を取得するプリンターを監視し、ソフトウェアとプリンター間の通信を傍受するための独自のソフトウェアの検索を促しました。見つかった-構成ツール、プリンターのステータスを監視するためのOkiのユーティリティ。ダウンロード、実行、そして…。SNMP構成ツールを介して、プリンター名、MACアドレス、およびソフトウェアバージョンに関する情報を受け取ります。消耗品に関する情報は、TCP / IPパケットの本文で送信されます。



「まあ、素晴らしい、冒険が始まる」と私は思った。ソリューションオプションについて考えると、次の論理チェーンにつながりました。



  1. この段階では、構成ツールがプリンターに送信する要求を正しくシミュレートする方法と方法がわかりません。
  2. プリンターには独自のWebページがあり、消耗品のステータスと印刷されたページ数に関する情報を提供します。
  3. 私の問題の解決策は、スケジュールに従ってプリンターのWebページから情報を抽出(解析)し、何らかの方法でこの情報をZabbixに転送することです。


解析ツールを検索すると、次の結果が得られました。



  1. バッシュ
  2. PHP
  3. Python


注:このリストに示されているよりも多くの解析ツールがあることを私はよく知っていますが、それらすべてを示すことは意味がありません。そうすれば、その理由を理解できます。



私はBashを選びました-そしてこれが理由です:



  1. ほとんどのUNIXシステムにプリインストールされています。追加のソフトウェアをインストールする必要はありません。
  2. シンプルさ。コマンドは論理的であり、構文を少し調べれば非常に理解しやすくなります。
  3. UNIXシステムを学ぶ必要性。明らかに、この方向でコマンド構文を研究することは不必要ではありません。


プリンターのWebページを解析する



解析を開始する前に、プリンターのWebページとは何かを見てみましょう。



注意
, - . , , , -.



-



プリンターのWebページ
image



ページの右上にトナーステータスインジケータがあることに注意してください。これらのインジケーターがWebページにどのように表示されるかを理解する必要があります。RMB->検査。次の写真が私たちに開かれます。



ページコード検査
image

image



トナー値は実際には/status.htmページから取得されることに注意してください。

トナー値がタグで渡されていることがわかります。



その後、JavaScriptを使用して、値が10に丸められ、ページに挿入されます。



192.168。ページに移動します***。*** / status.htm-はい、このページに本当に必要なトナーの値が表示されます



status.htm
image



これで、必要なトナーステータス値が保存されている場所がわかりました。解析を始めましょう。



解析



注:以下は、例と写真を使用してページを解析するためのスクリプトの作成について説明します。バッシュにあまり詳しくない方でも、わかりやすく説明したいと思います。すでに結果を読みたい場合は、さらにスクロールしてください。

だからバッシュ。彼らが2000年前に言ったように、ルビコンは同じ名前の川のほとりで渡されました。

まず、言語の構文に精通することをお勧めします。非常にシンプルでわかりやすいですが、スクリプト作成と自動化に役立ちます。



次に、公式ウェブサイトに記載されているように、cURL-コマンドラインとツールに注目しましょうこのツール。cURLは膨大な数のプロトコルをサポートしており、そのうちHTTPのサポートが必要です。これはプリンターのWebページと「通信」するために使用されるプロトコルであることを忘れないでください。

最初のリクエストを書いてみましょう:



$ curl 192.168.***.***/status.htm


端子出力
image



それに応じて、大量の情報がコマンドラインに直接ダンプされます。これは、この情報の処理は言うまでもなく、端末で読み取るのにあまり便利ではありません。

出力をファイルにリダイレクトしましょう-これは明らかにより便利です。特別な文字「>」はこれを助けてくれます。



$ curl 192.168.***.***/status.htm > Oki.txt


結果のファイルをViエディターで開きます



$ vi Oki.txt


ViエディターのOki.txt
image



はるかに良いですね。ただし、とにかくページ全体は必要ありません。必要なのはトナーステータス値だけです。データの分離を開始します。これは、指定された通常の値に等しい値を含む行を検索するユーティリティであるgrepが役立つ場所です。



トナー値を含むタグを詳しく見てみましょう。それらの中で、同じ式 'value =” ***”'が満たされていることがわかります。



注意
? - 100.



注意
, “hidden”. , . . – , ‘value=”***”’



image



cURLを通じて得られた結果を「リッピング」します。プロセスを少しスピードアップして視覚化するために、値を端末に直接出力します。



$ curl 192.168.***.***/status.htm | grep ‘value=”***”’ 


Grepの結果
image



優れた。十分に簡潔な結論。次に、テキストを削除し、数値のみを残す必要があります。



注意
, – « Zabbix’ !». , . – . .



数値のみを残して、テキストデータを除外します。-Eoフラグが付いたGrepは、これを再び支援します。数値のみ表示できます。



$ curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’


数値の出力
image



そこで、必要な数値を取得しました。次に、出力を別々の行に分析して、テキストファイルに別々に保存できるようにします。ここで、ストリームテキストエディタユーティリティであるsedが役立ちます。私たちの場合、最も重要なことは、sedが個々の行を分離できることです-これはまさに私たちが必要としていることです。



Curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 1p


セッド出力
image



sedの部分を見てみましょう。1p-最初の行を出力します。-n-指定された行を除くすべてを除外します。ご覧のとおり、このコマンドの後、出力にはシアントナーの状態の数値のみが表示されます。



それでは、スクリプトの作成を始めましょう。



Bashスクリプトには、同じbatスクリプトと比較して特定の特性があります。それらはシェバンで始まる必要があります-「#!」。#で始まる行はコメントとして解釈されます。



スクリプトは次のようになります。



#! /bin/bash 
#This script received toner level's from Oki_834
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 1p >/var/cyan.txt
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 2p >/var/magenta.txt
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 3p >/var/yellow.txt
curl 192.168.***.***/status.htm | grep ‘value=”***”’ | grep -Eo ‘[0-9]{1,}’ | sed -n 4p >/var/black.txt


スクリプトファイルをcrontabに追加して、その実行を自動化します。著者は* / 15 * * **を設定しました-15分ごとの実行。



結論-プリンターのWebページは自動的に解析され、必要な数値を取得して、必要なディレクトリに保存します。



受信した値をZabbixに転送する



それでは、Zabbixへのデータ転送を始めましょう。



注意
, , . , , .



新しいアイテムを作成しましょう。好きな名前を付け、タイプZabbixエージェントを指定します。



注意
Zabbix-server Zabbix-agent. , , Zabbix-agent.



この段階で私たちが持っている最も興味深く重要なものは鍵です。vfs.file.contents [file、<encoding>]が必要です。Fileは、ファイルへの絶対パスです。



Zabbixでアイテムを作成する
image



ファイルへのパスを示し、正確性を確認します。テスト出力で、ブラックトナーの値が表示されます。



テストが正常に完了しました
image



結論-データをZabbixに移行し、消耗品のステータスを一元管理できるようになりました。



結論



Webページを解析してデータを取得する方法をマスターしました。この例では、Oki 834プリンターが使用され、トナーデータの取得が成功しました。私は責任を持って、ドラムユニット、テープ、オーブンの状態に関するデータを取得するために同じ方法が使用されたことを宣言します。



スクリーンショットの証拠
image



image



したがって、プリンタだけでなく、ほぼすべてのプリンタから消耗品に関する情報を取得することができます。解析はかなり便利なツールであり、私はそれを使って作業するのが本当に好きでした。そして、私の記事が少なくとも1人の人を助けるなら、それはすべてが無駄ではなかったことを意味します。



また、深い感謝の意を表したいと思います赤毛の鹿akozhevnikov97そして、記事を書くのを手伝ってくれた匿名を希望する人。ありがとうございます!



All Articles