システム運用の上で重要な「監視」と「ジョブ管理」について、効率的な実現方法を解説。
「監視」と「ジョブ管理」はシステム運用の要といえるもの。オープンソース、商用ともに多様なツールが存在しますが、本連載ではオープンソースソフトウエア(以降、OSS)に焦点を当て、「Zabbix」と「JobScheduler」の活用法を詳しく解説します。監視やジョブ管理の機能を持つツールは種々存在しますが、その中でも特にオープンソースソフトウエア(以降、OSS)のZabbixとJobSchedulerを活用する方法について解説します。
前編となる本稿では、監視とジョブ管理の正しい在り方と、ZabbixやJobSchedulerを用いることによるメリット、TISが開発したOSSであるZabbixとJobScheduler連携ツール「HyClops JobMonitoring」の概要について紹介します。
監視とジョブ管理はシステムを安定して運用し続けるための非常に重要な要素です。監視は「システムの状態を知る」上で、ジョブ管理は「アプリケーションの機能要件や非機能要件を満たす」上で、不可欠な要素です。
監視には「運用のために必要な情報を集め、使える形で管理している状態」が、ジョブ管理には、「機能要件・非機能要件を満たすために必要となる処理を決まった時間通りに失敗することなく稼働させること」が求められます。システム基盤を構築する際は、まず設計のフェーズで、こうした要件を満たせるような監視設計とジョブ管理設計を行います。
一般に、こうした設計 ――例えば「ジョブの実行スケジュール」や「サーバーのスペックの見積もり」などは、それまでの実績や、ツール提供者が公表している指標など、さまざまな 要因を基に予測して行います。
しかし、長期間の運用や環境の状態の変化、システムの利用状況の変化などに伴い、当初の予測通りに全てが稼働し続けることができるわけではありません。そんなとき、常に状況を監視し、その結果と連携してジョブの管理を行っていれば、このような変化に耐え得る安定したシステム運用が実現可能となります。
「あるジョブの実行中にサーバーのリソースがどういった状態であるのか」「ジョブの実行により、どういった影響を与えたのか」「監視結果の状況により、どういったジョブを実行することが必要となっているのか」など、監視とジョブ管理はそれぞれ別のものとして考えるのではなく統合的に管理することが重要となります。
特にクラウドや仮想化を導入した環境変化が激しいシステムでは、実行ジョブの処理状況を監視した上でシステムの改善を繰り返すことが、より一層重要となります。
例えば、あるバックエンド処理実行ジョブの実行時間が長くかかるようになってきた場合、その原因をシステム環境全体の監視状況とひも付けて判断し、スケールアウトやスケールアップの運用処理を行う必要があります。
スケールアップやスケールアウトといった運用が仮想化やクラウド化によって容易に実現できるようになってきているからこそ、それを効果的にコントロールすることが求められるのです。
監視やジョブ管理の機能を持つOSSには、さまざまなものがあります。その中でも前述したように監視とジョブ管理の両方をOSSで実現するための代表的な構成例としては以下のようなパターンが考えられます。
JobArranger for ZabbixはZabbixのオプションツールとしてジョブ管理機能を提供するOSSです。
HinemosはNTTデータが開発する監視・ジョブ管理双方の機能を備えた統合運用管理ツールです。
Nagiosは古くから利用されているOSSの監視ツールです。
ZabbixとJobSchedulerについての詳細は後述します。
各パターンの特徴は以下の表のようになります。
パターン番号 | 採用ツール | 機能性 | 操作性 | 拡張性 | 監視とジョブ管理の連携機能 | |
---|---|---|---|---|---|---|
1 | 監視 | Zabbix | ・非常に豊富な監視機能を備えている ・監視設定の自動化機能も充実 |
・監視設定、監視結果の確認は全てWeb管理画面で実施可能 ・表示したい項目を一覧でまとめるスクリーン機能などビューを管理する機能がある |
・APIで監視設定、監視結果取得できるなど拡張性が高い ・ローダブルモジュール機能など監視機能拡張の仕組みがある |
・ログインアカウントの共有 ・管理対象ホスト、ホストへの権限情報の共有 ・ジョブの実行時の失敗監視 ・ジョブの開始失敗監視 |
ジョブ管理 | JobArranger for Zabbix | ・基本的なジョブ管理機能(条件分岐やカレンダー管理など)は備えている ・ジョブ実行排他制御や優先度制御など、より細かい管理の面では未対応項目あり |
・ジョブ登録・ジョブ実行状況確認にはWindowsのクライアントソフトが必要 ・Zabbixのテーブル情報と密連携し、ユーザー情報やホスト情報はそれぞれで共有 ・クライアントソフト上でジョブのリアルタイムフローが見られるなど視覚的に優れている ・ジョブフローの設定もドラッグ&ドロップで直感的にフロー作成が可能 |
・コマンドにより、ジョブネット起動、状態確認、実行ログ確認、保留処理解除の処理を外部から実行可 ・APIはないため上記コマンドを使った連携のみ可 |
||
2 | 監視 | Hinemos | ・幅広い監視(SNMP監視、エージェントを使ったログ監視など)が可能 ・SNMPの探索機能がある |
・監視・ジョブ管理が統合的に同一のダッシュボードから管理可能 ・Windowsのクライアントソフトが必要(パートナーソリューションとしてWebのUIがある) |
・Hinemos APIを使った拡張が可能(監視とジョブ管理いずれの操作もAPIを使った制御が可能) | ・管理対象ホスト情報の共有(同一システムのため) ・ログインアカウントの共有(同一システムのため) ・ジョブの実行時の失敗監視 ・ジョブの開始遅延・終了遅延の監視 ・監視結果に伴うジョブ実行 |
ジョブ管理 | Hinemos | ・高機能なジョブ管理(Agentを経由したジョブ実行管理)が可能 ・スケジュールの48時間対応など実運用に則した細やかな管理機能がある |
・ジョブフローを視覚的に見られる追加機能がある(有償オプションとして提供) | |||
3 | 監視 | Nagios | ・監視についてはSNMPをベースとした監視が可能 ・Nagiosプラグインの活用による幅広い監視が実現可能 ・監視結果はテキストファイルへの保存で、グラフ化機能などは標準では備えていない |
・Nagiosの監視設定はテキストベースでの管理 ・WebのUIで監視結果が確認可能 |
・Nagiosプラグインを作ることで追加の監視機能実装が容易になる | ・ジョブの実行失敗の情報をNagiosで検知(JobSchedulerのNagiosプラグインを利用) |
ジョブ管理 | JobScheduler | ・基本的なジョブ管理機能(条件分岐やスケジュール管理など)に加え、ジョブ実行の排他制御や優先度制御、休日の扱い管理など、より細かい管理に対応 ・JobSchedulerサーバーの冗長構成や負荷分散構成などに標準で対応 |
・ジョブの定義、スケジュール定義は全てXML形式のテキストファイルで実施 ・XMLの定義を編集するエディタツールがある ・ジョブの実行状況を管理するJobScheduler Operating Centerがある |
・APIを備えており、全操作をAPIベースで管理可能 | ||
4 | 監視 | Zabbix | パターン1のZabbixの特徴と同様 | パターン1のZabbixの特徴と同様 | パターン1のZabbixの特徴と同様 | ・ジョブの実行失敗の情報をZabbixで検知 ・ジョブの実行時間の推移情報をZabbixで検知 ・ジョブの実行状況に合わせた監視設定自動化(HyClops JobMonitoring(後述)を利用) |
ジョブ管理 | JobScheduler | パターン3のJobSchedulerの特徴と同様 | パターン3のJobSchedulerの特徴と同様 | パターン3のJobSchedulerの特徴と同様 | ||
パターン3.のNagios+JobSchedulerについては記事「JobSchedulerを活用したこれからの運用自動化(5):Nagiosと連携して運用自動化! 事例と適用ポイント」にも紹介されていますので、ご参照ください。
それぞれの構成にメリット、デメリットはありますが、中でも特に4.のZabbixとJobSchedulerについては、プログラムから制御できるAPIを搭載している他、ベースとなる監視機能、ジョブ機能が非常に充実しています。この両者の組み合わせ構成については非常に可能性を持った構成ということができます。
Zabbixは高機能な監視ソフトウエアであり、さまざまなシーンで利用されています。標準でサポートしている監視機能が非常に豊富で、サーバーからネットワーク機器まであらゆる監視が可能です。さらに、その監視結果に基づいて自動実行するアクション機能も充実しています。
ただし、Zabbixは「監視」に特化したツールであるため、『状態を検知→視覚化→アクションを実行』といった一連の監視運用をカバーする機能しか備えていません。そのため、ジョブ管理やインシデント管理など、他の運用プロセスも含めて統合管理する場合には他ツールとの連携が重要なポイントとなります。
他ツールと連携させるという面においてもZabbixは優れています。Zabbixの操作を外部のプログラムから実施するためのZabbix APIや、アクション処理時にスクリプト実行を柔軟に行える機能、監視結果を外部から柔軟に登録するzabbix_sender機能など、優れた機能を標準で備えています。こういった観点からZabbixを監視フレームワークとして活用することが有用といえます。
JobSchedulerについては下記連載において、その機能が紹介されているので、ご参照ください。
記事にもある通り、他のOSSのジョブ管理ツールと比べてジョブの実行制御機構が非常に充実しているため、複雑なジョブフローでも標準の機能の範囲内でカバーできます。さらに、API(内部API、外部API(SOAP/REST))をベースとしたさまざまな処理の自動化が可能なことなどがポイントです。
それぞれ「監視」と「ジョブ管理」という面においてはZabbix、JobSchedulerは非常に高機能なツールです。この高機能なツール同士をもともとの機能を損なわずに組み合わせることでより効果が発揮されます。それぞれAPIの提供など連携機能が充実しているため、システムの要件に合わせて柔軟に融合させることが可能となります。
Copyright © ITmedia, Inc. All Rights Reserved.