この投稿では、SNMPプロトコルを使用して組織の印刷統計を収集する際の、小さいながらも興味深い経験についてお話します。
問題の会社は非常に多く印刷しています。 大規模で強力なプリンター(HP 9000など)と中型の非常にホームクラスのプリンターがあります。 幸いなことに、それらはすべてネットワーク化されており、メーカーの範囲は狭く、HPとRicoh(NRGからMBまでのさまざまな役割)の2つしかありません。 そして、ある晴れた春の日、オフィスの口座を見て、無駄のない管理が課せられました。定期的に報道統計を収集し、 「後で分析できるように」 。 そして、彼らはあまり気にしませんでした。 「すべてのプリンターがネットワーク化されており、統計ページがあり、午前中にリストの周りに座って、Excelで数値を書き留めました 。
当然のことながら、私たちの意見では、それは面白くなく、愚かで、「疲れる」ものでした。 組織には多くのプリンターがあります。 そして、「どうやってそれを機能させるか」を考え始めました。 一般に、この欲求(「動作するように」)がすべてのシステム管理者にとって重要であり、必要であり、何度も何度もこれを行う人は私を優しく、うらやましく思う。
Webページのパーサーをすぐに拒否したため(これは誤りです。たとえば、リコーには動的なページがあり、行き先のURLはありませんでした)、古き良きSNMPに頼りました。 そして、これはそれから来たものです。
これは、頭字語SNMPがまだ何も意味していない人にとっては、少し余談する価値があるでしょう。 紳士、あなたは多くを逃します! 私はあなたに別の夜を捧げ、少なくとも基本的なレベルで問題を研究することを緊急に勧めます。 要するに、SNMPはUDPベースの管理および監視プロトコルです。 ネットワークインターフェースを備えたデバイスの大部分(すべてではない場合)はこのプロトコルをサポートしており、デバイスの動作に関するデータを収集するだけでなく、デバイス自体を制御するためにも使用できます。 SNMPプロトコル経由でアクセス可能なデータ(オブジェクト)、いわゆる OIDは階層順に編成されます。 国内プレーンでは、これは、デバイスに「番号」.1.3.6.1.4.1.11でOID値を要求すると、デバイスが応答してこの値を送信することを意味します。 そして、どのOIDが必要な値に対応するかを知っているので、デバイスをポーリングし、データベースでその応答を収集する小さなスクリプトを書くことができます。 たとえば、これらのすばらしい無料のユーティリティを使用して、デバイスに問い合わせることができます 。 先を見据えて、私たちの特定のケースでは、 SnmpgetとSnmpWalkが役に立ちました。
アルゴリズム全体は理解可能で、ユーティリティは手元にあり、最も興味深いものが残っていました-OIDが何を意味するのかを理解するために:印刷ページのカウンター。 いわゆるデバイス変数の完全な説明 MIBデータベースを見つけるのはかなり困難です( ここで検索してみてください )が、他の方法でもかまいません。
SnmpWalkユーティリティを使用して、デバイスをポーリングすると、デバイスから発行可能な値を持つすべてのOIDを取得します。 私たちの側では、必要なVALUESを明確に把握しています(実際、Webページで現在のステータスを確認できます)。 次に、それは小さな問題のままです:
- SnmpWalkを使用して、デバイスの完全なマップをテキストファイルに入れます。
- Webインターフェースを介して、必要な印刷ページの現在の数を学習します
- ファイル内の印刷されたページの数を探し、OIDコードを見つけます。
- スクリプトで受け取ったOIDを使用します
いくつかのコメント
- 同じタイプのデバイスの各メーカーは、ほとんど常に単一のMIB構造を順守しています。 したがって、たとえばTotal Pages Numberカウンターに対応するOID番号は、すべてのHPプリンターで同じです(まれな例外を除きます)。 これにより、同じメーカーの多くのプリンターに一致する「調査テンプレート」を作成できます。
- snmpwalkファイルの分析プロセスでは、必要な値がいくつかある場合があります。 ここで、別のページを印刷し、データを再度収集した後、必要なカウンターが含まれるOIDを判別するか、論理的に少し考えてください(階層構造を思い出してください!)。
- ただし、Webページに特定のカウンターを表示しないプリンターの中には、SNMPを介して収集できるものがあります。 たとえば、WebページにはTotalページカウンターのみがありますが、SNMPを使用すると、より詳細な値(二重、A3、「印刷要求」の数など)を取得できます。
- 「さらなる分析のために」データベースのどこかにデータをすぐに収集することをお勧めします。 私たちの場合、経営幹部の主張で、私はすべてをテキストファイルに書き込み、それをExcelで自動的に開き、マクロを使用してセルにレイアウトしました。 経営者はSQLよりもExcelで作業する方が簡単でしたが、個人的には気にしませんでした。
- この簡単な方法を使用して、数か月でかなり良い印刷統計を作成しました。手持ちの数字で合理的に、多くの部門でより強力なプリンターの予算を得て、多くの製品が設置されたことが判明したときにカートリッジを補充した会社との関係を見つけましたフォース6000から1つのガソリンスタンドで15,000ページが配られます。
おまけとして、 スクリプトのテキスト、 Excelマクロ、およびいくつかの説明を示します。
- スクリプトコードの最初に、設定(機器のIPアドレスのプール、およびポーリングテンプレート)が記載されています。
- メーカーは通常同じMIB構造を持っているという事実にもかかわらず、場合によっては、異なるクラスの機器が同じデータに対して異なるOIDを持っていることがあります(たとえば、OIDシリーズの2XXX未満のHPプリンターには、シリアル番号用とシリアル番号用があります) 。
- より強力なプリンターの場合、TotalPagesCountだけでなく、あらゆる種類のその他のカウンター(コピー、A3、両面など)も収集します。
- HPにはTotalpagesCountEquivalentの概念があります。これは、印刷されたページの数です。 プリント回路に沿って完全に通過しました。 HPによるとTotalPagesCountだけが、ペーパーフィーダーから取り出されたシートの数です。 それらの違いは、実際にはジャムと同じです。
- スクリプトはプリンターのシリアル番号を収集するため、ExcelでIP、日付、およびネットワーク名と同様にデータをプリンターにバインドします。これはわかりやすくするためです。
- 最後に、スクリプトはその横にあるExcelファイルを起動します。Excelファイルは、開かれると、すでに棚にあるすべてのものを散乱させるマクロを起動します。 かなり混oticとしたシステムですが、これは分業の結果です。 彼らは私からの裸のデータを望んでいましたが、「私たちは自分で分析を書きます」。 彼らは書いた。 その中で、私はもはや何かを詳細に説明することはできませんが、試してみます。
- マクロは次のように動作します:統計ファイルを開き、そこからすべてのデータを取得し、統計数字をテーブルの必要な列にコピーし、機器のシリアル番号に関連付け、現在の統計ファイルの名前を* .bakに変更し、Excelを閉じます。
- マクロは内部証明書で署名する必要がありました。なぜなら Excelはマクロセキュリティを無効にしたくなかったため、これがないとマクロは自動的に起動しません。 ところで、これは自然な探求でした。なぜなら、 どのように、そして何でマクロに署名するのか、その時点で私もその著者も考えていませんでした:)
続く