JP7013165B2 - 管理装置、管理装置の制御方法、及びプログラム - Google Patents

管理装置、管理装置の制御方法、及びプログラム Download PDF

Info

Publication number
JP7013165B2
JP7013165B2 JP2017153023A JP2017153023A JP7013165B2 JP 7013165 B2 JP7013165 B2 JP 7013165B2 JP 2017153023 A JP2017153023 A JP 2017153023A JP 2017153023 A JP2017153023 A JP 2017153023A JP 7013165 B2 JP7013165 B2 JP 7013165B2
Authority
JP
Japan
Prior art keywords
task
information
subtask
agent
devices
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017153023A
Other languages
English (en)
Other versions
JP2019032686A5 (ja
JP2019032686A (ja
Inventor
紀之 中澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2017153023A priority Critical patent/JP7013165B2/ja
Priority to US16/056,133 priority patent/US10698646B2/en
Publication of JP2019032686A publication Critical patent/JP2019032686A/ja
Publication of JP2019032686A5 publication Critical patent/JP2019032686A5/ja
Application granted granted Critical
Publication of JP7013165B2 publication Critical patent/JP7013165B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1296Printer job scheduling or printer resource handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • G06F3/1231Device related settings, e.g. IP address, Name, Identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/126Job scheduling, e.g. queuing, determine appropriate device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1286Remote printer device, e.g. being remote from client or server via local network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/121Facilitating exception or error detection and recovery, e.g. fault, media or consumables depleted

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、複数のデバイスを監視可能なエージェントが動作する1又は複数の監視装置と、前記1又は複数の監視装置から送信される情報に基づいてデバイスを管理する管理装置、管理装置の制御方法、及びプログラムに関する。
特許文献1には、ネットワーク接続された機器を分散管理するシステムが開示されている。特許文献1では、管理を行う管理サーバを複数配置し、1つを親管理サーバ、残りを子管理サーバとし、親管理サーバは子管理サーバから各子管理サーバが管理しているネットワーク機器の各種情報を取得し、これを表示する。
特開2009-199458号公報
しかし、従来の技術では、親管理サーバは子管理サーバが収集したネットワーク機器に関する情報を収集、表示するのみである。従来の技術では、親管理サーバが子管理サーバに対して管理対象のネットワーク機器への処理を指示ができないという課題があった。
本発明は、上記の課題を解決するためになされたものである。本発明の目的は、分散管理する複数のデバイスに処理を実行させる場合でも、処理の内容に関係なく管理装置からエージェントに対してデバイスへの処理を指示でき、効率的にデバイスに対して処理を実行可能にする仕組みを提供することである。
本発明は、複数のデバイスを監視可能なエージェントが動作する1又は複数の監視装置から送信される情報に基づいてデバイスを管理する管理装置であって、1以上の指定デバイスに対して実行すべき処理の対象となるデバイスのデバイス識別子が指定されたタスク情報を生成する第1生成手段と、前記タスク情報に基づいて、前記処理の対象となる一部のデバイスのデバイス識別子及び該一部のデバイスに対応するエージェントのエージェント識別子が指定されたサブタスク情報を複数生成する第2生成手段と、前記タスク情報及び前記サブタスク情報を管理する管理手段と、複数のエージェントにタスクの開始を通知する通知手段と、前記エージェント識別子が指定されたサブタスク情報を該エージェント識別子に対応するエージェントに送信する送信手段と、前記エージェントから受信したサブタスクの実行結果を、該サブタスクに対応するサブタスク情報に設定する第1設定手段と、前記生成された全てのサブタスク情報に実行結果が設定されたことに応じて、これらのサブタスク情報に対応するタスク情報に終了日時を設定する第2設定手段と、を有し、前記第1生成手段は、さらに、デバイスを探索する処理のために、探索を実行するエージェントのエージェント識別子が指定されたタスク情報を生成でき、前記第2生成手段は、前記デバイスを探索する処理のためのタスク情報について、対象となるデバイスのデバイス識別子が指定されず、対象となるエージェントのエージェント識別子及び探索の対象となるアドレスが指定された探索処理のためのサブタスク情報を生成し、前記第1設定手段は、前記エージェントから前記サブタスク情報で指定された前記探索の対象となる全てのアドレスに対応する実行結果を受信したことに応じて、前記サブタスク情報に実行結果を設定することを特徴とする。
本発明によれば、複数のエージェントを用いて分散管理する複数のデバイスに処理を実行させる場合でも、処理の内容に関係なく管理装置からエージェントに対してデバイスへの処理を指示でき、効率的にデバイスに対して処理を実行させることができる。
本実施例の分散ネットワーク機器管理システムを例示する図 ホストコンピュータのハードウェア構成の一例を示すブロック図 本実施例の管理アプリケーションの構成の一例を示す図 本実施例の設定値の取得の予約タスクを作成する画面を例示する図 本実施例のタイマー処理、予約開始処理の一例を示すフローチャート 本実施例のエージェントの構成を例示する図 実施例1のタスク起動処理、タスク開始処理を例示するフローチャート 本実施例のサブタスク実行処理を例示するフローチャート 本実施例のサブタスク実行結果受信処理を例示するフローチャート 実施例4のタスク起動処理、タスク再起動処理を例示するフローチャート 本実施例のタスクの開始処理から結果送信までの流れを示すシーケンス図
以下、本発明を実施するための形態について図面を用いて説明する。
図1は、本発明の一実施例を示す分散ネットワーク機器管理システムの構成を例示する図である。
図1において、管理装置101は、ネットワーク機器の管理を集中的に行う管理アプリケーション101aが動作するサーバ装置である。DB112は、管理アプリケーション101aにより管理されるデータを格納するデータベースである。なお、DB112は、管理装置101内に実装される構成でも、管理装置101と通信可能な他の装置に実装される構成でもよい。また、管理装置101は、1台の装置で構成されていてもよいし、複数の装置で構成されてもよく、クラウドサーバ等で構成されていてもよい。例えば、管理装置101は、パブリッククラウドサービス等を利用して構築することも可能である。
ネットワーク機器107、108、109、110、111は、管理アプリケーション101aにより管理されるネットワーク機器である。ネットワーク機器の一例としては、複合機やプリンタ等の画像形成装置、ネットワークカメラ、パーソナルコンピュータ、ネットワークに接続された各種の家電、電子制御機器を複数搭載する車両などが挙げられる。各種の家電には、テレビジョン、冷蔵庫、エアーコンディショナー等が含まれる。なお、ネットワーク機器を、「ネットワークデバイス」又は単位「デバイス」ともいう。
監視装置103、104は、ネットワーク機器を監視するエージェントアプリケーション(以下「エージェント」)103a、104aが動作するサーバ装置であり、1台でも3台以上あってもよい。なお、1つのエージェントで、複数のネットワーク機器を監視可能である。ネットワーク管理者は、監視するデバイスの台数や、デバイスが設置されているネットワークセグメントを考慮して、1以上のエージェントを配置する。図1の例では、監視装置103はネットワーク機器107、108を監視し、監視装置104はネットワーク機器109、110、111を監視する。
なお、1つのエージェントと管理アプリケーション101aは、同じサーバ装置上に実装することも可能である。また、エージェントのインストール時に、管理アプリケーション101aのURL、認証に必要な情報などをエージェントに対して設定可能である。
ネットワーク102は、管理装置101と各監視装置103、104を接続するネットワークである。また、ネットワーク105、106は、それぞれ監視装置103、104とネットワーク機器107、108と109、110、111とを接続するネットワークである。ここでネットワーク102、105、106は、それぞれ独立したネットワークでも、同一のネットワークでも構わない。
各エージェント103a、104aは、管理アプリケーション101aと連携し、管理アプリケーション101aからの指示に従い、ネットワーク105や106を介してネットワーク機器107~111を監視(管理)する。また、各エージェント103a、104aは、監視(管理)結果を管理アプリケーション101aに送信する。
管理アプリケーション101aは、各エージェント103a、104aから受信した監視(管理)結果を受信し、これを必要に応じてDB112に格納する。管理アプリケーション101aは、各エージェントと各ネットワーク機器との紐づけを管理する。図1の例では、エージェント103aはネットワーク機器107、108に、エージェント104aはネットワーク機器109、110、111にそれぞれ紐づけられている。このように、管理アプリケーション101aは、監視対象全てのデバイス情報や稼働情報、エージェントの識別情報と接続情報などを一元管理する。詳細は後述するが、エージェントは、管理アプリケーション101aから取得(受信)したタスクに従いデバイスの監視処理(例えば情報取得、設定配信、アプリケーション配信など)を行う。
なお、各監視装置103、104、各エージェント103a、104aは、それぞれ同一の構成である。よって、以下、監視装置103、エージェント103aについての説明は、監視装置104、エージェント104aについても同様である。
図2は、管理アプリケーション101aやエージェント103a、104aやDB112が動作するホストコンピュータのハードウェア構成の一例を示すブロック図である。
図2に示すように、管理アプリケーション101aやエージェント103a、104aやDB112が動作するホストコンピュータは、CPU201、RAM202、ROM203、外部記憶装置207を備える情報処理装置である。
CPU201は、ROM203や外部記憶装置207に記憶された、或いはネットワーク210よりダウンロードしたソフトウェアを実行し、システムバス209に接続された各デバイスを総括的に制御する。RAM202は、CPU201の主メモリあるいはワークエリアなどとして機能する。
外部記憶装置207はハードディスク(HD)やソリッドステートドライブ(SSD)等からなる。外部記憶装置207は、ブートプログラム、オペレーティングシステム、認証サーバ、認証クライアント等を含む各種のアプリケーション、データベースデータ、ユーザファイル等を記憶する。
キーボードコントローラ(KBDC)204は、キーボードやポインティングデバイスからの入力情報をCPU201に送る。ビデオコントローラ(VC)205は、LCD等からなる表示装置の表示を制御する。ディスクコントローラ(DC)206は、外部記憶装置207とのアクセスを制御する。通信コントローラ(NIC)208は、これを介してネットワーク210に接続する。
表1に、DB112に格納された管理アプリケーション101aにより管理されるエージェント情報の一例を示す。
Figure 0007013165000001
表1において、エージェントIDは、各エージェントを一意に識別するために管理アプリケーション101aが付与した識別子であり、ここではUUIDを使用している。エージェント名は、各エージェントを識別するためにユーザが付けた任意の文字列である。IPアドレスは、エージェントのIPアドレスである。デバイスアドレスは、該エージェントに紐づくネットワーク機器のアドレスを指定する。表1の例では、172.16.0.0から172.16.255.255までのIPアドレスを持つネットワーク機器が指定されている。なお、デバイスアドレスは、複数の開始アドレスと終了アドレスをハイフンで区切った範囲(例えば、172.20.0.0-172.20.0.255)またはIPアドレス(例えば、172.20.1.10)をカンマで区切った文字列等で表すものとする。
表2に、DB112に格納された管理アプリケーション101aにより管理される管理対象のネットワーク機器情報の一例を示す。
Figure 0007013165000002
表2において、デバイスIDは、各ネットワーク機器を一意に識別するために管理アプリケーション101aが付与した識別子であり、ここではUUIDを使用している。エージェントIDは、このネットワーク機器に紐づいたエージェントのエージェントIDである。各ネットワーク機器は、エージェントのデバイスアドレスに基づいてエージェントに紐づいている。ここでは、表1に示したエージェントが紐づいていることを示している。
デバイス名は、各ネットワーク機器を識別するためにユーザが付けた任意の文字列である。製品名、IPアドレス、MACアドレスは、それぞれ該ネットワーク機器の製品名、IPアドレス、MACアドレスである。
管理アプリケーション101aが複数のネットワーク機器に対して実行する処理を、総称して「タスク」と呼ぶ。また、タスクを処理するに際して、各エージェントが各ネットワーク機器に対して実行する処理を「サブタスク」と呼ぶ。即ち、タスクは、複数のサブタスクより構成される。
タスクの例としては、ネットワーク機器の設定値の一覧の取得がある。タスクの別の例としては、ネットワーク機器が画像形成装置である場合、出荷以降に印刷された印刷枚数の取得がある。ここで、印刷枚数には、例えば、総印刷枚数、カラー印刷枚数、モノクロ印刷枚数、両面印刷枚数、片面印刷枚数、両面カラー印刷枚数、両面モノクロ印刷枚数等の各種印刷枚数が含まれる。また、タスクの別の例として、ネットワーク機器の状態の取得がある。ネットワーク機器が画像形成装置の場合、状態には、エラー状態、トナーや感光体などの消耗品情報、給紙部の用紙サイズや用紙残量などの入力情報が含まれる。
図3は、管理アプリケーション101aの構成の一例を示す図である。
図3において、WEBサーバ301は、管理アプリケーション101aが動作する管理装置101上で動作する。管理アプリケーション101aは、WEBアプリケーション302と、スケジューラ303を有する。
スケジューラ303は、定期的にDB112を走査し、実行予定時刻を経過した予約タスクの実行の準備を行い、エージェント103aに対して、タスクの実行を指示する。ここで予約タスクとは、実行するタスクの詳細に実行スケジュールを付加したものである。実行スケジュールは、該タスクを実行する日時や、定期的な実行計画(例えば毎週月曜日の8時等)である。
WEBアプリケーション302は、ホストコンピュータ304で動作するWEBブラウザ305経由でユーザからの要求を受信して応答を返すことによりユーザインターフェイスを提供する。或いは、WEBアプリケーション302は、エージェント103からの各種データの送受信要求を処理する。ここでは、管理アプリケーション101aのユーザインターフェイスは、WEBブラウザ305を用いて提供しているが、オペレーティングシステムの画面を用いたアプリケーションであっても構わない。
以下、上述のようにネットワーク接続された機器の分散管理システムにおけるタスク実行方法について説明する。本実施例では、設定値の取得タスクを例にして処理の詳細を説明する。
図4は、設定値の取得の予約タスクを作成するためにWEBブラウザ305に表示される画面の一例を示す図である。
図4において、タスク名401は、ユーザが各予約タスクを識別するための名前を入力するためのテキストボックスである。取得データ407は、このタスクでネットワーク機器から取得する設定値を選択するためのチェックボックスである。
402~404は、タスクの実行スケジュール(実行タイミング)を設定するUI部品である。図4の例では、毎週月曜日と金曜日の8:00にタスクを実行することを示している。UI部品402~404では、例えば、毎日午後3時、特定の日時、毎月1日の午前10時等のスケジュールを設定することが可能である。なお、WEBアプリケーション302は、実行周期選択用UI部品402の選択に従い、403、404のUI部品を動的に変更する。
405は、設定値の収集の対象となるネットワーク機器を選択するためのチェックボックス付きのテーブルである。406は「予約」ボタンである。WEBアプリケーション302は、ユーザによる「予約」ボタン406の押下を検出すると、DB112に予約タスクのデータを保存する。
表3に、DB112に保存された予約タスクのデータの一例を示す。
Figure 0007013165000003
表3において、予約タスクIDは、各予約タスクを一意に識別するために管理アプリケーション101aが付与した識別子であり、ここではUUIDを使用している。タスククラスは、予約タスクの作成、編集、実行を処理するためのプログラム上のクラスの名前である。このタスククラスからWEBアプリケーション302は予約タスクの編集画面操作のための処理、スケジューラ303は予約タスクから後述のタスク情報とサブタスク情報を作成する処理、エージェント103はタスクの実行処理を実装するクラスを動的に作成する。
タスク名は、ユーザがテキストボックス401に入力した、ユーザが各予約タスクを識別するためにユーザが付けた名前である。タスク詳細は、タスクの詳細を、各タスククラスが解釈できる形で保存したデータである。例えば、収集する設定値を指定できる場合は、ここに取得対象の設定値の名前のリストを保存する。表3の例では、["network","security"]と記載されており、ネットワーク設定とセキュリティ設定の取得を指定している。
スケジュール設定は、タスクの実行スケジュールである。例では、毎週の繰り返しが指定されている(曜日と時刻指定の詳細は省略)。
開始日時は、スケジュール設定に従った場合に、次に予約タスクを実行すべき日時である。例えば、図4で例示するスケジュール設定(毎週金曜日の午前8時)で、今日が水曜日の場合、開始日時は次の金曜日の午前8時となる。なお、タスクの対象となるネットワーク機器は、データベース上の別のテーブル(例えば、予約タスクIDとネットワーク機器を一意に識別するIDとを列に持つテーブル(不図示))で管理されるものとする。即ち表3に示す予約タスク情報は、予約タスクIDによって、タスクの対象となるネットワーク機器のデバイスIDが対応付けられている。このように、表3に示す予約タスク情報は、対象となるネットワーク機器のデバイスIDが指定された予約タスク情報となる。
図5(a)は、スケジューラ303がDB112内の予約タスクの内の、実行予定日時が現在時刻より以前の予約タスクを開始する処理(タイマー処理)の一例を示すフローチャートである。図5(a)及び後述する図5(b)の処理は、管理装置101のCPU201が外部記憶装置207に格納されたプログラムをRAM202にロードして実行することにより実現される管理アプリケーション101aにより実行される。
スケジューラ303は、起動時にオペレーティングシステム(OS)やアプリケーションの実行環境(例えばJREや.NET Framework)が提供するタイマーに対し、図5(a)で示す管理アプリケーション101aのタイマー処理を定期的に呼び出すように指示する。これにより、タイマー処理が開始される。
タイマー処理では、管理アプリケーション101aは、先ずS501において、DB112から実行予定時日時が現在時刻より以前の予約タスクの一覧を取得する。
次にS502において、管理アプリケーション101aは、上記S501で取得した予約タスクの一覧から未処理の予約タスクを1つ取り出し、S503に処理を進める。
S503にて、管理アプリケーション101aは、上記S502で一覧からの予約タスクの取り出しに成功したかの確認を行う。管理アプリケーション101aは、一覧からの予約タスクの取り出しが成功したと判定した場合(S503でYesの場合)、S504に処理を進める。
S504において、管理アプリケーション101aは、上記S502で取り出した予約タスクのタスククラスに従い、該予約タスクの開始処理を実装したクラスのクラスインスタンスを作成し、該クラスインスタンスの予約タスクの開始処理を呼び出す。予約タスクの開始処理については図5(b)を用いて後述する。
次にS505において、管理アプリケーション101aは、上記S502で取り出した予約タスクのスケジュール設定に従い次の実行予定日時を計算し、DB112内の該予約タスクのデータを更新する。ここで、一度限りの実行や、定期実行の終了日が設定されている等の理由により次の実行予定日時が存在しない場合、タイマー処理は遠い未来(例えば、9999年1月1日)を実行予定日時として設定する。予約タスクのデータの更新後は、管理アプリケーション101aは、S502に処理を遷移し、次の予約タスクに対する処理に移行する。
また、上記S503において、管理アプリケーション101aは、上記S502で一覧からの予約タスクの取り出しに失敗したと判定した場合(S503でNoの場合)、即ちS501で取得された全ての予約タスクについて処理が終了した場合、タイマー処理を終了する。
図5(b)は、図5(a)のタイマー処理のS504で呼び出される予約タスクの開始処理(以下「予約開始処理」)のフローチャートである。予約開始用のクラスは、以下に示すTaskRunner抽象クラスを継承する。予約開始用のクラスは、Startという関数を実装している。Start関数は、予約タスク情報を引数に取る。
public abstract class TaskRunner {
public void Start( ReservedTask task );
}
予約開始処理では、管理アプリケーション101aは、S510において、上記引数として渡された予約タスク情報(task)から、新規にタスク情報を作成し、DB112に格納する。
表4に、予約開始処理がS510にて作成するタスク情報の一例を示す。
Figure 0007013165000004
表4において、タスクIDは、このタスク情報を一意に識別するため予約開始処理が付与した識別子であり、ここではUUIDを使用している。予約タスクID、タスククラス、タスク名、タスク詳細は、タイマー処理(図5(a))のS504で予約開始処理に渡した予約タスク情報の予約タスクID、タスククラス、タスク名、タスク詳細である。これらは、タスク情報の作成時点では予約タスク情報と同じものであるが、予約タスクはタスク情報作成後にユーザにより変更や削除がなされることもあるため、タスク情報内に同データを持つことにしている。
ステータスは、このタスク情報により表現されるタスクの状態を示す。作成時点では「実行中」である。タスクの状態には、「実行中」、「正常(全ての対象のネットワーク機器に対する処理が成功した)」及び「失敗(処理に失敗したネットワーク機器が存在する)」がある。開始日時は、このタスク情報が作成された日時を示す。終了日時は、このタスク情報により表現されるタスクの実行が終了した日時を示す。タスク情報の作成時点では、終了日時は空である。
なお、表3の説明に記載したように、タスクの対象となるネットワーク機器は、データベース上の別のテーブル(例えば、予約タスクIDとネットワーク機器を一意に識別するID(デバイスID)とを列に持つテーブル(不図示))で管理される。即ち表4に示すタスク情報は、予約タスクIDによって、タスクの対象となるネットワーク機器のデバイスIDが対応付けられている。このように、表4に示すタスク情報は、対象となるネットワーク機器のデバイスIDが指定されたタスク情報である。
次にS511において、管理アプリケーション101aは、予約タスクの対象となるネットワーク機器の一覧を取得する。例えば、管理アプリケーション101aは、予約タスクIDを用いて、DB112内の不図示のテーブル(予約タスクIDとネットワーク機器を一意に識別するIDとを列に持つテーブル)から、予約タスクの対象となるネットワーク機器の一覧を取得する。
次にS512において、管理アプリケーション101aは、上記S511で取得したネットワーク機器情報の一覧から未処理のネットワーク機器情報を1つ取り出す。
次にS513において、管理アプリケーション101aは、上記S511で取得した一覧からネットワーク機器情報の取り出しに成功したか否かを確認する。管理アプリケーション101aは、一覧からのネットワーク機器情報の取り出しが成功したと判定した場合(S513でYesの場合)、S514に処理を進める。
S514において、管理アプリケーション101aは、上記S512で取り出したネットワーク機器情報に対応するサブタスク情報を作成し、これをDB112に格納した後、S512に処理を遷移する。ここでサブタスクとは、タスクを、対象の各ネットワーク機器に対する処理に分解した処理の単位を示す。
表5に、予約開始処理がS514にて作成したサブタスク情報の一例を示す。
Figure 0007013165000005
サブタスクIDは、このサブタスク情報を一意に識別するために予約開始処理が付与した識別子であり、ここではUUIDを使用している。タスクIDは、図5(a)のS501で作成したタスク情報を一意に識別する識別子、即ち表4のタスクIDである。デバイスIDは、このサブタスク情報の対象となるネットワーク機器を一意に識別する識別子、即ち表2のデバイスIDである。エージェントIDは、対象のネットワーク機器に紐づいたエージェントを一意に識別する識別子、即ち表1及び表2のエージェントIDである。
サブタスク詳細は、このタスクを処理する各クラスが解釈可能な、このサブタスク情報に固有の詳細である。この例では、サブタスク情報固有の詳細は存在しないので空となっている。ステータスは、このサブタスク情報で表現されるサブタスクの状態を示す。サブタスク情報作成時点では、サブタスクの実行は開始されていないため「準備中」である。ステータスには「準備中」、「実行中」、「成功」、「失敗」、「例外(実行中に予期せぬエラーが発生した)」及び「キャンセル」がある。
実行結果は、このタスクを処理する各クラスが解釈可能な、このサブタスクの実行結果である。作成時点では、実行が開始されていないため、実行結果は空である。開始日時、終了日時は、それぞれサブタスクのエージェントによる実行の開始の日時、終了の日時である。即ち、表5に示すサブタスク情報は、エージェントID及び対象デバイスの一部のデバイスIDが指定されたサブタスク情報である。
また、上記S513において、管理アプリケーション101aは、上記S511で取得した一覧からネットワーク機器情報の取り出しに失敗したと判定した場合(S513でNoの場合)、即ち上記S511で取得したネットワーク機器の全てに対する処理が終了した場合、S515に処理を進める。
S515において、管理アプリケーション101aは、タスクの開始を各エージェントに通知し、予約開始処理を終了する。エージェント103aへのタスクの開始指示については後述する。
図6は、エージェント103aの構成を例示する図である。即ち、図6に示すエージェント103aの構成は、監視装置103のCPU201が外部記憶装置207に格納されたエージェント103aに対応するプログラムをRAM202にロードして実行することにより実現される。
図6において、受信部601は、管理アプリケーション101aからの指示を受信する。受信部601は、例えば、HTTP/HTTPSサーバを内蔵し、管理アプリケーション101aからのHTTP要求を受信して、要求のURLやメソッドにより所定の処理を実行する。予約開始処理(図5(b))のS515の「エージェント103aへのタスクの開始通知」は、この受信部601が受信する(詳細は後述する)。
デバイス管理部602は、本実施例の分散ネットワーク機器管理システムにより管理されているネットワーク機器のうち、該エージェント103aに紐づいているネットワーク機器の情報を、管理アプリケーション101aから取得し、これを管理する。デバイス管理部602は、例えばデバイスIDを用いてネットワーク機器の情報を検索する機能を有する。これにより、デバイスIDからネットワーク機器のIPアドレスを取得する等が可能になる。デバイス管理部602は更に、後述する通信部605がネットワーク機器と通信する際の認証情報を管理する機能を有する。例えば、SNMPバージョン3を用いてネットワーク機器に接続する際のユーザ名、コンテキスト名、認証プロトコルとキー、暗号化プロトコルとキー等の情報を管理する。
送信部603は、指定されたデータを、管理アプリケーション101aの指定されたアドレス(URL)に送信する機能を有する。また送信部603は、管理アプリケーション101aの指定されたアドレス(URL)に送信された要求に対する応答を、送信依頼元に返す機能を有する。
タスク実行部604は、管理アプリケーション101aから実行を通知されたタスクを実行する。通信部605は、タスク実行部604からの依頼により、ネットワーク機器107との通信を行う。通信部605は、例えばネットワーク機器107とSNMPやWEBサービス等を用いて通信を行う。
以下、図7(a)、図7(b)を用いて、エージェント103aのタスク実行部604によるタスクの実行処理の流れについて説明する。
図7(a)は、予約開始処理(図5(b))のS515のタスクの開始通知により実行されるタスク起動処理の流れを示すフローチャートである。図7(a)及び後述する図7(b)、図8、図9に示す処理は、監視装置103のCPU201が外部記憶装置207に格納されたプログラムをRAM202にロードして実行することにより実現されるエージェント103aにより実行される。
予約開始処理(図5(b))のS515では、管理アプリケーション101aはエージェント103aに対して、例えば以下のようにタスクの開始を通知する。予約開始処理は、URLパスが「/API/Task/Start」、HTTPメソッドがPOST,本体が以下のJSONデータであるHTTP要求を、エージェント103aに対して送信することでタスクの開始通知を行う。
{ "taskid": "b7f35ba6-e908-47d5-8e22-d140474b31e6",
"taskclass": "GetSettings" }
エージェント103aの受信部601は、上記JSONデータを受信すると、該受信したJSONデータをオブジェクトに変換して、これを引数にして、図7(a)のタスク起動処理を呼び出す。
タスク起動処理において、エージェント103aのタスク実行部604は、S701において、上記引数として渡されたオブジェクト内のタスククラス属性から、タスク実行用のクラスを決定し、このクラスのインスタンスを生成する。タスク実行用のクラスは、以下に示すTaskBase抽象クラスを継承する。タスク実行用のクラスはStartとOnSubtaskEndという2つの関数を実装している。タスク起動処理では、タスク実行用のクラスのインスタンスを作成した際に、上記引数として渡されたオブジェクト内のタスクIDを、作成したインスタンスのTaskIdに設定する。
public abstract class TaskBase {
public UUID TaskId;
public void Start( );
public abstract void OnSubtaskEnd( SubtaskInfo result );
}
次にS702において、タスク実行部604は、上記S701で作成したタスク実行用クラスのインスタンスのStart関数を呼び出す。
図7(b)は、タスク起動処理のS702で呼び出される、タスク実行用クラスのStart関数の処理(タスク開始処理)の流れを示すフローチャートである。
タスク開始処理では、タスク実行部604は、まずS710において、インスタンスに設定されたタスクID(TaskId)で指定されるタスク情報(表4を参照)を、送信部603を用いて管理アプリケーション101aから取得し、タスク情報内のタスク詳細を解釈する。
次にS711において、タスク実行部604は、送信部603を用いて上記タスクIDとエージェント103aに紐づいたサブタスク情報(表5を参照)の一覧を、管理アプリケーション101aから取得する。
次にS712にて、タスク実行部604は、上記S711で取得したサブタスク情報一覧から、未処理のサブタスク情報を1つ取り出し、S713に処理を進める。
S713において、タスク実行部604は、上記S712でサブタスク情報の取り出しに成功したか否かを判定する。タスク実行部604は、上記S712でサブタスク情報の取り出しに成功したと判定した場合(S713でYesの場合)、S714に処理を進める。
S714において、タスク実行部604は、上記S712で取得したサブタスク情報と上記S710で取得したタスク詳細とから、サブタスク実行用クラスのインスタンスを作成・設定し、これをサブタスクキュー(図示しない)に積む。なお、サブタスク実行用クラスについては後述する。その後、タスク実行部604は、S712に遷移し、次のサブタスク情報に処理を移行する。
また、上記S713において、タスク実行部604は、上記S712でサブタスク情報の取り出しに失敗したと判定した場合(S713でNoの場合)、即ち全てのサブタスク情報に対する処理が完了した場合、タスク開始処理を終了する。
なお、上述のサブタスク実行用クラスは、下記に示す抽象クラスを実装する。タスク開始処理(図7(b))のS714では、作成したサブタスク実行用のクラスのインスタンスに、タスク実行用のクラスインスタンス(図7(a)のS701で作成されたインスタンス)と、サブタスク情報に含まれるサブタスクIDと、デバイスIDとを設定する。さらに、後述するサブタスク実行処理では、必要に応じて各タスクの処理に固有の情報を、サブタスク実行用クラスのインスタンスに設定する。
public abstract class SubtaskBase {
public TaskBase Task;
public UUID SubtaskId;
public UUID DeviceId;
public abstract SubtaskInfo Start( );
}
タスク実行部604は、サブタスクキュー処理として、サブタスクキューから、タスク開始処理(図7(b))のS714でサブタスクキューに積まれたサブタスク実行用クラスのインスタンスを順次取り出す。さらに、タスク実行部604は、該取り出したサブタスクのインスタンスを引数にして、図8に示すサブタスク実行処理を呼び出し、サブタスクを実行する。
図8は、サブタスク実行処理の処理の流れを示すフローチャートである。
サブタスク実行処理では、タスク実行部604は、先ずS801において、引数として渡されたサブタスク実行用クラスのインスタンスのStart関数を呼び出し、サブタスク実行結果を受け取る。
サブタスク実行用のクラスのStart関数では、先ず、デバイスIDを用いて、デバイス管理部602から対象のネットワーク機器に関する情報(例えばIPアドレスや各プロトコルに対する認証情報等)を取得する。続いてサブタスク実行用のクラスのStart関数では、取得したネットワーク機器に関する情報を用いて、ネットワーク機器に対して要求された処理を実行し、サブタスク実行結果を返す。サブタスクの実行結果は、表5に示すサブタスク情報と同等である。
次にS802において、タスク実行部604は、上記S801で受け取ったサブタスク実行結果の中の、タスクID、サブタスクID、デバイスID、開始日時、終了日時を更新する。開始日時は、上記S801でサブタスク実行クラスのStart関数を呼び出す前の日時となる。また、終了日時は、現在日時となる。サブタスク詳細、ステータス、実行結果は、サブタスク実行クラスのStart関数により設定される。例えば、ネットワーク機器の設定情報の取得タスクの場合、ネットワーク機器から取得した設定情報を表現するJSON文字列が実行結果となる。同様に、状態や消耗品情報の取得タスクの場合は、ネットワーク機器から取得した状態や消耗品情報を表現するJSON文字列が実行結果となる。
最後にS803にて、タスク実行部604は、サブタスク実行クラスのインスタンのTask属性(即ちタスク実行用のクラスのインスタンス)のOnSubtaskEnd関数を呼び出すことで、サブタスクの実行の終了をタスク実行用クラスに通知する。タスク実行クラスのOnSubtaskEnd関数の典型的な処理は、渡されたサブタスクの実行結果を、管理アプリケーション101a内のWEBアプリケーション302のサブタスク実行結果の受信用のURLに対して送信するように、送信部603に依頼することである。WEBアプリケーション302のサブタスク実行結果受信用のURLの例を以下に示す。ここでは、管理アプリケーション101aの動作するホストのアドレスを172.20.1.11と仮定する。
https://172.20.1.11/api/v1/tasks/subtask/GetSettings
即ち、タスク実行クラスのOnSubtaskEnd関数は、このURLに対して、HTTPメソッドがPOST、本文がサブタスク実行結果をJSON文字列に変換した文字列である、HTTP要求を送信するよう、送信部603に依頼する。
図9は、エージェント103aの送信部603から送信された前記サブタスク実行結果をWEBアプリケーション302が受信した際の処理(サブタスク実行結果受信処理)の流れを示すフローチャートである。
WEBアプリケーション302は、URLパス「/api/v1/tasks/subtask/クラス名」に対するPOSTメソッドのHTTP要求を受信した際に、図9に示すサブタスク実行結果受信処理を、「クラス名」と要求の本文に含まれるサブタスク実行結果を引数にして呼び出す。例えば、前記URLの例では、「クラス名」は「GetSettings」である。
サブタスク実行結果受信処理では、管理アプリケーション101aは、先ずS901において、引数で与えられたクラス名を用いて、このサブタスク受信結果を処理可能なサブタスク実行結果処理用クラスのインスタンスを作成する。サブタスクの実行結果を処理するクラスは、以下に示すインターフェイスを実装したクラスである。
public interface SubtaskResultHooker {
SubtaskInfo Hook(SubtaskInfo result);
}
次にS902において、管理アプリケーション101aは、引数とした渡されたサブタスク実行結果を引数にして、作成したサブタスク実行結果処理用クラスのインスタンスのHook関数を呼び出し、結果を受け取る。
サブタスク実行結果処理用クラスのHook関数では、引数として渡されたサブタスク実行結果を基に各タスクに固有の処理を行い、必要に応じてサブタスク実行結果の内容を変更し、これを返して関数を終了する。ここで各タスクに固有の後処理の例を以下に示す。例えば、ネットワーク機器の状態の取得タスクの場合、ネットワーク機器の現在の状態を格納するDB112内のテーブルの内容を更新し、前回の状態から新たにエラー状態が検出された場合、その旨をユーザが指定したメールアドレスに対してメール送信する。例えば、ネットワーク機器の利用状況(例えばネットワーク機器が画像形成装置である場合、各種カウンタの値)の取得の場合、利用状況の統計を格納するDB112内のテーブルの内容を更新する。
さらに、Hook関数では、関数に渡されたサブタスク実行結果が、サブタスク実行結果としてDB112内のサブタスク情報テーブルに保存する必要のない情報であれば、サブタスク実行結果内の実行結果属性を空にして呼び出し元に返す。
次にS903において、管理アプリケーション101aは、Hook関数の戻り値を判定する。管理アプリケーション101aは、Hook関数の戻り値が空と判定した場合(S903でYesの場合)、サブタスク実行結果受信処理を終了する。
一方、上記S903において、管理アプリケーション101aは、Hook関数の戻り値が空でないと判定した場合(S903でNoの場合)、S904に処理を進める。
S904において、管理アプリケーション101aは、Hook関数から返されたサブタスク実行結果を用いて、表5に示すDB112内のサブタスク情報を更新する。
次にS905において、管理アプリケーション101aは、受信したサブタスク実行結果のタスクIDに紐づいた全てのサブタスクの実行が終了したか否かを判定する。例えば、管理アプリケーション101aは、DB112内の、受信したサブタスクに紐づいたタスクIDと同じタスクIDを持つサブタスク情報のステータスが終了状態(成功、失敗、例外、キャンセル)でないサブタスク情報の数を取得する。そして、該取得した数が0の場合、受信したサブタスク実行結果のタスクIDに紐づいた全てのサブタスクの実行が終了したと判定する。一方、該取得した数が0でない場合、受信したサブタスク実行結果のタスクIDに紐づいたサブタスクのうち、まだ実行が終了していないサブタスクが存在すると判定する。
上記S905において、管理アプリケーション101aは、受信したサブタスク実行結果のタスクIDに紐づいたサブタスクのうち、まだ実行が終了していないサブタスクが存在すると判定した場合(S905でNoの場合)、サブタスク実行結果受信処理を終了する。
一方、上記S905において、管理アプリケーション101aは、受信したサブタスク実行結果のタスクIDに紐づいた全てのサブタスクの実行が終了したと判定した場合(S905でYesの場合)、S906に処理を進める。
S906において、管理アプリケーション101aは、表4に示すDB112内のタスク情報のステータスと終了日時を更新する。ステータスについては、タスクIDを持つ全てのサブタスク情報のステータスが「成功」の場合は「成功」、そうでない場合は「失敗」となる。S906の処理の後、管理アプリケーション101aは、サブタスク実行結果受信処理を終了する。
図11は、管理アプリケーション101aによるタスクの開始処理から、エージェント103aによるタスクの実行と、管理アプリケーション101aへの結果の送信までの流れを示すシーケンス図である。このシーケンス図において、管理アプリケーション101aの処理は、管理装置101のCPU201が外部記憶装置207に格納されたプログラムをRAM202にロードして実行することにより実現される管理アプリケーション101aにより実行される。また、エージェント103aの処理は、監視装置103のCPU201が外部記憶装置207に格納されたプログラムをRAM202にロードして実行することにより実現されるエージェント103aにより実行される。
まず管理アプリケーション101aは、図5(a)及び図5(b)の予約開始処理1101を実行する。予約開始処理1101は、対象デバイスのデバイスIDが対応付けられたタスク情報を生成し、エージェントID及び対象デバイスの一部のデバイスIDが指定されたサブタスク情報を複数生成し、さらにタスク開始要求1102をエージェント103aに送信する。なお、タスク開始要求1102は、エージェント104aを含む複数のエージェントに送信されるが、説明を容易にするために図11に図示していない。
エージェント103aは、タスク開始要求1102を受信部601が受信し、図7(a)のタスク実行処理1103を実行する。タスク実行処理1103は、タスク開始要求1102に含まれるタスク実行用クラスのインスタンスを作成し、図7(b)のタスク開始処理1104を呼び出す。
タスク開始処理1104は、まずタスク開始要求1102に含まれるタスク情報IDを持つタスク情報の取得要求1105を管理アプリケーション101aに送信する。
管理アプリケーション101aは、タスク情報取得要求1105に含まれるタスク情報IDを持つタスク情報をDB112から取得し、これを返信する(1106)。
タスク開始処理1104は、次に、タスク開始要求1102に含まれるタスク情報IDと自身のエージェントIDとを持つサブタスク情報の取得要求1107を管理アプリケーション101aに送信する。
管理アプリケーション101aはサブタスク情報取得要求1107に含まれるタスク情報IDとエージェントIDとを持つサブタスク情報の一覧をDB112から取得しこれを返信する(1108)。
タスク開始処理1104は、取得したタスク情報とサブタスク情報とから、サブタスクを実行するためのクラスを生成・設定しサブタスク実行処理1109を呼び出す。サブタスク実行処理1109は、必要に応じて指定された管理対象のネットワーク機器と通信し、サブタスクの実行結果1110を、管理アプリケーション101aに送信する。より正確には、サブタスク実行処理1109が返すサブタスク実行結果1110を、タスク開始処理1104が、管理アプリケーション101aに送信する。
管理アプリケーション101aは、サブタスク実行結果1110を受信して、図9のサブタスク実行結果受信処理1111を呼び出す。サブタスク実行結果受信処理1111は、サブタスク実行結果1110に含まれるクラス名からサブタスク実行結果処理用クラスを生成し、サブタスク実行結果処理(即ちHook関数)1112を呼び出す。サブタスク実行結果処理1112は、最後に、サブタスク実行結果処理1112が返すサブタスク実行結果の内容で、DB112内のサブタスク情報を更新する。なお、上記管理アプリケーション101aとエージェント103aとの通信に使用される各URL及び各要求の受信処理は、タスクの種類に依らず共通である。
以上のように、実施例1では、管理アプリケーション101aは、処理をネットワーク機器毎のサブタスクに分割し、タスクの開始を通知する。エージェント103aは、各サブタスクを実行し、実行結果を管理アプリケーション101aに送信する。管理アプリケーション101aは、受信したサブタスクの実行結果に基づき前記サブタスク情報を更新し、全てのサブタスク情報を更新されたら、タスク情報を更新する。このような構成により、ネットワーク機器を分散管理するシステムにおいて、管理アプリケーション101aからエージェント103aに、ネットワーク機器に対する処理(例えば設定値の取得処理)を実行させることができる。
上記説明では、デバイスから情報(例えば設定値や稼動情報)を取得する処理について説明したが、例えば、デバイスに設定値を配信する処理や、デバイスにアプリケーションソフトウェアを配信する処理などでも同様である。
実施例2では、タスクがネットワーク機器を探索する処理(探索処理)のタスクである場合について説明する。ここで探索処理は、指定したコミュニティ名を持つSNMPのバージョン1の要求を、指定したIPアドレスに送信し、要求に対する応答を確認することで、ネットワーク機器の接続の有無を判断する。また、SNMPのバージョン1のコミュニティ名はタスク全体で共通とし、要求を送信するIPアドレスの範囲はエージェント毎に指定するものとする。
表6に、タスクがネットワーク機器の探索である場合のタスク情報の一例を示す。
表7に、タスクがネットワーク機器の探索である場合のサブタスク情報の一例を示す。
Figure 0007013165000006
Figure 0007013165000007
以下、表6、表7において、表4、表5と異なる箇所のみ説明する。
表6において、タスククラスは、探索処理を実装したクラス名である「Discovery」になっている。タスク名は、「ネットワーク機器の探索」となっている。また、タスク詳細は、SNMPのバージョン1を利用して探索を行う際のSNMPのバージョン1のコミュニティ名の配列となっている。探索処理は、ここに列挙されたコミュニティ名を用いてネットワーク端末とのSNMPのバージョン1の通信を試行する。探索処理は、ネットワークに接続されたネットワーク機器を見つける処理であるため、サブタスクの対象はエージェントとなり、タスクの対象となるネットワーク機器の情報は存在しない。なお、タスクの対象となるエージェントは、データベース上の別のテーブル(例えば、予約タスクIDとエージェントIDとを列に持つテーブル(不図示))で管理されるものとする。即ち表6に示す実施例2の予約タスク情報は、予約タスクIDによってタスクの対象となるエージェントIDが対応付けられている。このように、実施例2の予約タスク情報は、対象となるエージェントIDが指定された予約タスク情報となる。また、表7において、サブタスク情報のデバイスIDは空になっている。また、探索処理の場合、サブタスクは、処理対象のエージェントごとに生成される。サブタスク詳細は、エージェント上で実行される探索処理が、探索用のSNMPのバージョン1のパケットを送信する宛先となっている。探索処理は、ここに記載されたネットワークアドレスのそれぞれに対して、探索用のSNMPのバージョン1のパケットを送信することで、ネットワーク機器の探索を行う。表7の例では、172.16.0.0~172.16.255.255の合計65536個のIPアドレスのそれぞれに対してSNMPパケットを送信することを意味する。
タスクがネットワーク機器の探索の場合、図7(a)のS701でタスク起動処理により呼び出される、エージェント103a上で動作する探索タスク実行クラスのStart関数は、探索処理を実行し、途中経過を一定時間毎に管理アプリケーション101aに送信する。エージェント103a上で動作する探索処理が、探索処理の途中経過をサブタスク実行結果として管理アプリケーション101aに送信する際の実行結果の一例を以下に示す。
{"scanned": 18272,
"discovered": 18,
"devices": [
{"ip": "172.16.95.117", "name": "MFP-6500",
"mac": "F4:81:28:C8:47:91" },
{"ip": "172.16.110.181", "name": "SFP-2000",
"mac": "F4:81:19:E2:B1:C9" },
{"ip": "172.16.113.134", "name": "SFP-3500",
"mac": "F4:81:23:AC:BF:45" },
{"ip": "172.16.138.91", "name": "MFP-5500",
"mac": "F4:81:92:BE:F1:1A" }
} ]
}
ここで、scannedはその時点までに探索を実行したアドレスの数、discoveredは見つかったネットワーク機器の数、devicesは前回の途中経過の送信から新たに見つかったネットワーク機器の情報のリストである。なお、この時点では、探索対象の全てのIPアドレスに対する処理が完了していないので、送信するサブタスク実行結果のステータスは「RUNNING」となっている(不図示)。
タスクがネットワーク機器の探索の場合、図9のS902でサブタスク実行結果受信処理により呼び出される実行結果処理クラスの実行結果処理関数は、以下の動作を行う。
先ず、実行結果処理関数は、サブタスクの実行結果から、探索されたネットワーク機器情報の一覧(前記「devices」情報)を取り出す。次に、実行結果処理関数は、取り出したネットワーク機器情報のそれぞれに対し、DB112内のネットワーク機器情報のテーブルに同じMACアドレスを持つエントリがあるか否かを判定する。該判定の結果、存在する場合、実行結果処理関数は、DB112内のテーブル内の情報を受信した情報で更新する。存在しない場合、実行結果処理関数は、受信したネットワーク機器情報を、新規にDB112のネットワーク機器情報テーブルに追加する。そして、受信した全てのネットワーク機器情報に対する処理が完了したら、実行結果処理関数は、引数として渡されたサブタスク実行結果データ内の実行結果から「devices」を削除したものを新たな実行結果としたサブタスク実行結果を、関数の呼び出し元に返す。
実行結果処理関数が終了すると、サブタスク実行結果受信処理は、実行結果処理関数から返されたサブタスク実行結果によりサブタスク情報を更新する(S903、S904)。この際、サブタスク実行結果受信処理は、そのサブタスクにおける探索対象の全てのIPアドレスに対する処理が完了していたら、サブタスク情報のステータスを終了状態に更新する。さらに、サブタスク実行結果受信処理は、全サブタスクが終了していたら、対応するタスク情報のステータスと終了日時を更新する(S905、S906)。
以上、実施例2によれば、ネットワーク機器を分散管理するシステムにおいて、管理アプリケーション101aからエージェント103aに、ネットワーク機器に対する処理(例えばネットワーク機器の探索処理)を実行させることができる。
実施例3では、タスクが定期的な管理対象のネットワーク機器のステータス監視の場合について説明する。ネットワーク機器の定期的なステータス監視では、管理アプリケーション101aからの通知に依らずに、エージェント103aが、自身に紐づいたネットワーク機器からステータス情報を取得し、これを管理アプリケーション101aに送信する。従って、DB112のタスク情報やサブタスク情報を格納するテーブルには、ステータス監視用のタスク情報とサブタスク情報は存在しない。
TaskBase抽象クラスを継承したタスク実行クラスには、エージェント起動時に実行する旨を示す属性(「AutoStart」とする)を持つものがある。エージェント103aは、起動時に、タスク実行クラス、即ちTaskBase抽象クラスを継承したクラスの中から前記AutoStart属性を持つクラスの一覧を動的に取得し、それらクラスのインスタンスを生成しStart関数を呼び出す。ステータス監視用のTaskBase抽象クラスを継承したタスク実行クラスは、AutoStart属性を持つため、エージェント103aは、起動時にステータス監視用クラスのインスタンスを作成し、Start関数を呼び出す。
ステータス管理タスククラスのStart関数は、OSやアプリケーション実行環境(例えばJREや.NET Framework)の提供するタイマーに一定時間毎に、監視開始処理を呼び出すように設定する。
監視開始処理は、管理アプリケーション101aから、エージェント103aに紐づいたネットワーク機器の一覧を取得する。そして、監視開始処理は、該取得したネットワーク機器毎に、ステータス監視用のサブタスク実行クラスのインスタンスを作成し、作成したインスタンスをサブタスクキューに追加する。
SubtaskBase抽象クラスを実装するステータス監視用のサブタスク実行クラスのStart関数は、サブタスク情報で指定されたネットワーク機器からスタータス情報を取得し、サブタスク実行結果を返す。
表8に、ステータス監視用のサブタスク実行クラスのStart関数が返すサブタスク実行結果の一例を示す。
Figure 0007013165000008
以下、表8において、表5と異なる箇所のみ説明する。
表8において、実行結果は、ネットワーク機器のエラー情報と消耗品情報と給紙情報のリストより構成される(詳細は省略する)。サブタスクIDとタスクIDは、空のUUIDである。
このサブタスク実行結果がエージェント103aから管理アプリケーション101aのWEBアプリケーション302に送信され、図9のサブタスク実行結果受信処理がこれを受信する。
図9のS902でサブタスク実行結果受信処理は、SubtaskResultHookerインターフェイスを実装したステータス監視用のサブタスク受信結果処理クラスのHook関数を呼び出す。Hook関数は、受信したサブタスク実行結果の実行結果からステータス情報を生成し、DB112内のネットワーク機器のステータス保存用のテーブルにステータス情報を保存し、空の実行結果を返す。空の結果を受け取った図9のサブタスク実行結果受信処理は、S903の判定処理を経て受信処理を終了する。
以上、実施例3によれば、ネットワーク機器を分散管理するシステムにおいて、エージェント103aに、ネットワーク機器に対する処理(例えばネットワーク機器のステータス監視処理)を実行させることができる。
以上、実施例1~3によれば、ネットワーク機器を分散管理するシステムにおいて、処理に依存せず、エージェントに効率的にネットワーク機器に対する処理を実行させることができる。
実施例4は、上述した実施例1において、エージェント103aによるタスクの実行中に、エージェント103aの実行終了及び起動、即ち再起動が発生した場合に、タスクの実行を継続する機能を追加したものである。
図10(a)は、実施例4のタスクの再起動に対応したタスク起動処理の流れを示すフローチャートである。図10(a)及び後述する図10(b)に示す処理は、監視装置103のCPU201が外部記憶装置207に格納されたプログラムをRAM202にロードして実行することにより実現されるエージェント103aにより実行される。
実施例4のタスク起動処理において、エージェント103aのタスク実行部604は、S701のタスク実行クラスのインスタンスの作成後、S1001に処理を進める。
S1001において、タスク実行部604は、タスク起動処理に引数として渡された[タスクID、タスククラス名]の組を記憶装置に保存する。ここで記憶装置とは、例えばエージェント103aが内部に持っているデータベースや、タスクIDとタスククラス名を属性に持つデータのリストを表現したJSONファイル等であり、その実態は例えば監視装置103の外部記憶装置207に記憶される。またS1001では保存に際して、同じタスクIDを持つ[タスクID,タスククラス名]の組が既に存在する場合は上書きするものとする。また、S1001では、タスクIDが空のUUID(全てが0のUUID)である場合、[タスクID,タスククラス名]の組は保存しないものとする。
なお、図示しないが、各タスク実行クラスのOnSubtaskEnd関数は、タスクに紐づいた全てのサブタスクに対する処理が完了した場合、上記S1001で保存された[タスクID、タスククラス名]の組を記憶装置から削除する。
図10(b)は、実施例4においてエージェント103aが起動時に呼び出すタスク再起動処理の流れを示すフローチャートである。
タスク再起動処理において、タスク実行部604は、S1010において、図10(a)のS1001でタスク起動処理が保存した[タスクID、タスククラス名]の組の一覧を、記憶装置から取得する。
次にS1011において、タスク実行部604は、上記S1010で取得した一覧から未処理の[タスクID、タスククラス名]の組を順に取り出し、S1012に処理を進める。
S1012において、タスク実行部604は、上記S1011で[タスクID、タスククラス名]の組の取り出しに成功したか否かを判定する。タスク実行部604は、上記S1011で[タスクID、タスククラス名]の組の取り出しに成功したと判定した場合(S1012でYesの場合)、S1013に処理を進める。
S1013において、タスク実行部604は、図10(a)に示すタスク起動処理を呼び出した後、S1011に遷移し、次の[タスクID、タスククラス名]の組に処理を移行する。
また上記S1012にて、タスク実行部604は、上記S1011で[タスクID、タスククラス名]の組の取り出しに失敗したと判定した場合(S1012でNoの場合)、即ち全ての[タスクID、タスククラス名]の組に対する処理が終了した場合、タスク再起動処理を終了する。
なお実施例4では、図10(a)のタスク起動処理のS702で呼び出される、タスク実行用クラスのStart関数の処理(図7(b)のタスク開始処理)のS711で、管理アプリケーション101aから取得するサブタスク情報は、サブタスク情報のステータスが未完了(実行待ちまたは実行中)であるサブタスク情報の一覧である。これにより、実行が完了したサブタスク情報に対する処理が再度実行されることが抑止され、実行が完了していないサブタスクが処理される。
以上のように、上記各実施例によれば、ネットワーク機器の分散管理システムを、単一の管理サプリケーションと複数のエージェントとにより構成する。管理アプリケーションは各エージェントと、各エージェントは管理アプリケーションと各ネットワーク機器と通信する構成とする。複数のネットワーク機器に同種の処理を一斉に実行する際、管理アプリケーションが事前に各ネットワーク機器への処理情報をサブタスク情報に分解する。エージェントは各サブタスク情報に従って各ネットワーク機器に対する処理を実行し、実行結果を管理アプリケーションに送信する。管理アプリケーションは受信したサブタスクの実行結果から生成したサブタスク情報で事前に生成したサブタスク情報を更新する。これにより、複数のネットワーク機器に同種の処理を実行するに際し、処理の内容に関係なく、管理アプリケーションとエージェント間の共通の呼び出しを使うことが可能となる。よって、管理アプリケーションとエージェント間の呼び出しの管理と管理アプリケーションおよびエージェント上の処理の実装が容易になる。また、処理に紐づいたサブタスクのステータスを調べることにより、処理の進行状況の把握が可能となる。また、各ネットワーク機器に対する処理全体をエージェントに移譲することが可能となり、管理アプリケーションの負荷を軽減することが可能となり、大量のネットワーク機器の管理が可能となる。従って、複数のエージェントを用いて分散管理する複数のデバイスに処理を実行させる場合でも、処理の内容に関係なく管理装置からエージェントに対してデバイスへの処理を指示でき、効率的にデバイスに対して処理を実行させることができる。
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されていてもよい。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施例を組み合わせた構成も全て本発明に含まれるものである。
(その他の実施例)
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形(各実施例の有機的な組合せを含む)が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。

Claims (8)

  1. 複数のデバイスを監視可能なエージェントが動作する1又は複数の監視装置から送信される情報に基づいてデバイスを管理する管理装置であって、
    1以上の指定デバイスに対して実行すべき処理の対象となるデバイスのデバイス識別子が指定されたタスク情報を生成する第1生成手段と、
    前記タスク情報に基づいて、前記処理の対象となる一部のデバイスのデバイス識別子及び該一部のデバイスに対応するエージェントのエージェント識別子が指定されたサブタスク情報を複数生成する第2生成手段と、
    前記タスク情報及び前記サブタスク情報を管理する管理手段と、
    複数のエージェントにタスクの開始を通知する通知手段と、
    前記エージェント識別子が指定されたサブタスク情報を該エージェント識別子に対応するエージェントに送信する送信手段と、
    前記エージェントから受信したサブタスクの実行結果を、該サブタスクに対応するサブタスク情報に設定する第1設定手段と、
    前記生成された全てのサブタスク情報に実行結果が設定されたことに応じて、これらのサブタスク情報に対応するタスク情報に終了日時を設定する第2設定手段と、を有し、
    前記第1生成手段は、さらに、デバイスを探索する処理のためのタスク情報を生成でき、
    前記第2生成手段は、前記デバイスを探索する処理のためのタスク情報について、対象となるデバイスのデバイス識別子が指定されず、対象となるエージェントのエージェント識別子及び探索の対象となるアドレスが指定された探索処理のためのサブタスク情報を生成し、
    前記第1設定手段は、前記エージェントから前記探索処理のためのサブタスク情報で指定された前記探索の対象となる全てのアドレスに対応する実行結果を受信したことに応じて、前記サブタスク情報に実行結果を設定する
    ことを特徴とする管理装置。
  2. 前記第1生成手段は、前記タスク情報を生成した際に、前記タスク情報に開始日時を設定する
    ことを特徴とする請求項1に記載の管理装置。
  3. 前記送信手段は、前記エージェントからの要求に応じて、該エージェントのエージェント識別子が指定されたサブタスク情報を該エージェントに送信する
    ことを特徴とする請求項1又は2に記載の管理装置。
  4. 前記通知手段は、HTTP又はHTTPSを用いて複数のエージェントにタスクの開始を通知し、
    前記第1設定手段は、HTTP又はHTTPSを用いて前記エージェントからサブタスクの実行結果を受信する
    ことを特徴とする請求項1~3のいずれか1項に記載の管理装置。
  5. 前記1以上の指定デバイスに対して実行すべき処理の実行タイミングを含む処理の予約を受け付ける受け付け手段を有し、
    前記第1生成手段は、前記処理の予約に基づいて、前記タスク情報を生成する
    ことを特徴とする請求項1~4のいずれか1項に記載の管理装置。
  6. 前記1以上の指定デバイスに対して実行すべき処理は、前記デバイスから情報を取得する処理、前記デバイスに設定情報を配信する処理、又は、前記デバイスにアプリケーションソフトウェアを配信する処理を含む
    ことを特徴とする請求項1~5のいずれか1項に記載の管理装置。
  7. 複数のデバイスを監視可能なエージェントが動作する1又は複数の監視装置から送信される情報に基づいてデバイスを管理するための制御方法であって、
    1以上の指定デバイスに対して実行すべき処理の対象となるデバイスのデバイス識別子が指定されたタスク情報を生成する第1生成ステップと、
    前記タスク情報に基づいて、前記処理の対象となる一部のデバイスのデバイス識別子及び該一部のデバイスに対応するエージェントのエージェント識別子が指定されたサブタスク情報を複数生成する第2生成ステップと、
    複数のエージェントにタスクの開始を通知する通知ステップと、
    前記エージェント識別子が指定されたサブタスク情報を該エージェント識別子に対応するエージェントに送信する送信ステップと、
    前記エージェントから受信したサブタスクの実行結果を、該サブタスクに対応するサブタスク情報に設定する第1設定ステップと、
    前記生成された全てのサブタスク情報に実行結果が設定されたことに応じて、これらのサブタスク情報に対応するタスク情報に終了日時を設定する第2設定ステップと、を有し、
    前記第1生成ステップでは、さらに、デバイスを探索する処理のためのタスク情報が生成でき、
    前記第2生成ステップでは、前記デバイスを探索する処理のためのタスク情報について、対象となるデバイスのデバイス識別子が指定されず、対象となるエージェントのエージェント識別子及び探索の対象となるアドレスが指定された探索処理のためのサブタスク情報が生成され、
    前記第1設定ステップでは、前記エージェントから前記探索処理のためのサブタスク情報で指定された前記探索の対象となる全てのアドレスに対応する実行結果を受信したことに応じて、前記サブタスク情報に実行結果が設定される
    ことを特徴とする制御方法。
  8. コンピュータを、請求項1~のいずれか1項に記載の手段として機能させるためのプログラム。
JP2017153023A 2017-08-08 2017-08-08 管理装置、管理装置の制御方法、及びプログラム Active JP7013165B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017153023A JP7013165B2 (ja) 2017-08-08 2017-08-08 管理装置、管理装置の制御方法、及びプログラム
US16/056,133 US10698646B2 (en) 2017-08-08 2018-08-06 Management apparatus and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017153023A JP7013165B2 (ja) 2017-08-08 2017-08-08 管理装置、管理装置の制御方法、及びプログラム

Publications (3)

Publication Number Publication Date
JP2019032686A JP2019032686A (ja) 2019-02-28
JP2019032686A5 JP2019032686A5 (ja) 2020-08-27
JP7013165B2 true JP7013165B2 (ja) 2022-01-31

Family

ID=65275190

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017153023A Active JP7013165B2 (ja) 2017-08-08 2017-08-08 管理装置、管理装置の制御方法、及びプログラム

Country Status (2)

Country Link
US (1) US10698646B2 (ja)
JP (1) JP7013165B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10862787B2 (en) * 2018-11-26 2020-12-08 Canon Kabushiki Kaisha System, management apparatus, method, and storage medium
US11068543B2 (en) * 2019-06-11 2021-07-20 Dell Products L.P. Component and object management of information handling systems
JP7360086B2 (ja) * 2019-09-27 2023-10-12 京セラドキュメントソリューションズ株式会社 遠隔操作システム、管理クライアントおよび管理クライアントプログラム
CN111464390B (zh) * 2020-03-31 2022-06-10 中国建设银行股份有限公司 网络应用***监控预警方法及***
CN111694711A (zh) * 2020-06-10 2020-09-22 浪潮商用机器有限公司 一种服务器设备监控方法、装置、设备及可读存储介质
JP7196134B2 (ja) * 2020-06-15 2022-12-26 キヤノン株式会社 管理装置、方法、およびプログラム
JP2023007771A (ja) * 2021-07-02 2023-01-19 京セラドキュメントソリューションズ株式会社 スケジュール連携システム及び多機能周辺装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014174671A1 (ja) 2013-04-26 2014-10-30 株式会社日立製作所 計算機システム及び負荷分散方法
JP2015176594A (ja) 2014-03-18 2015-10-05 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5111153B2 (ja) 2008-02-22 2012-12-26 キヤノン株式会社 サーバ、デバイス管理方法、プログラム
US8650280B2 (en) * 2011-12-28 2014-02-11 Sybase, Inc. Monitoring distributed task execution using a chained text messaging system
CN104834722B (zh) * 2015-05-12 2018-03-02 网宿科技股份有限公司 基于cdn的内容管理***

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014174671A1 (ja) 2013-04-26 2014-10-30 株式会社日立製作所 計算機システム及び負荷分散方法
JP2015176594A (ja) 2014-03-18 2015-10-05 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム

Also Published As

Publication number Publication date
US10698646B2 (en) 2020-06-30
JP2019032686A (ja) 2019-02-28
US20190050187A1 (en) 2019-02-14

Similar Documents

Publication Publication Date Title
JP7013165B2 (ja) 管理装置、管理装置の制御方法、及びプログラム
JP3682777B2 (ja) 画像形成装置および遠隔管理システム
JP4898269B2 (ja) 通信装置及びそのインストール方法
US8826176B2 (en) Information processing apparatus and control method
US9635207B2 (en) Management system and information processing apparatus managing installation and settings of an application
JP2006295883A (ja) サービス利用システム、画像取扱装置、外部処理装置,状態変化通知方法および状態変化通知プログラム
JP2019045904A (ja) 管理装置、制御方法、およびプログラム
US8713570B2 (en) Electronic device, information processing method, and storage medium
JP2013145504A (ja) 配信サーバ、監視装置、画像処理装置、および配信サーバの制御方法、およびプログラム
JP2012053511A (ja) サーバ装置、情報処理装置、サービス処理装置、ネットワークシステム、ジョブ処理方法及びプログラム
JP6525776B2 (ja) 監視装置、監視装置の制御方法、及びプログラム
JP2018061142A (ja) 管理装置、制御方法、及びプログラム
JP6442230B2 (ja) 情報処理装置、同期制御方法、及びプログラム
JP7080604B2 (ja) クライアント装置、制御方法、およびプログラム
JP6274758B2 (ja) ネットワーク機器管理装置、ネットワーク機器管理方法、およびネットワーク機器管理方法を実行するプログラム
JP2018136876A (ja) 監視装置及び方法及びプログラム
US9459914B2 (en) Processing method for control apparatus involves controlling job subsequent to proceeding job based on execution result acquired by executing the proceeding job
JP2011061608A (ja) 仮想サーバ管理システム、画像処理システム、仮想サーバ管理装置及び制御プログラム
JP7051507B2 (ja) システムおよびシステムにおける方法
JP2016212852A (ja) 情報処理装置、情報処理システムおよび方法
JP2006065871A (ja) 家電機器ネットワークシステム
JP2020048050A (ja) 管理システム及び管理方法
JP2014216817A (ja) 情報端末管理システム
JP5924884B2 (ja) 管理装置、管理方法、及びプログラム
JP2019091180A (ja) システム、および制御方法

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20180306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200717

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200717

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210720

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211221

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220119