DevOps実践に有用なZabbixの機能〜開発と運用を近づける監視:クラウド&DevOps時代の運用をZabbixで(2)(2/2 ページ)
ますますクラウド化が進む環境において、システムにはより迅速な対応が求められるようになっています。変化の早いシステムを適切に運用していくためにはどうすればいいのでしょうか? この記事では、クラウドやDevOpsを前提としたITシステムの「運用」に求められることを整理し、そういった運用に対して、オープンソースの統合監視ツール「Zabbix」がどのように有効活用できるかを紹介します。
相手に応じたスクリーンを提供
ZabbixのWebインターフェイスでは、運用者や開発者など、見る人の役割に応じて見せ方を変えて管理することで、より迅速に求める情報にたどり着けます。前述した運用者向けの監視結果や開発者向けの監視結果をそれぞれスクリーンで一覧化することで、どこが原因なのかを一目で判別できます。スクリーンには、グラフだけでなく、以下のようなコンポーネントを配置できるようになっています。
- URLで指定された画面
- アクション履歴
- イベント履歴
- グラフ
- サーバ情報
- システムステータス
- シンプルグラフ
- スクリーン
- データの概要
- トリガーの概要
- トリガー情報
- プレーンテキスト
- ホストのトリガーステータス
- ホストグループのトリガーステータス
- ホスト情報
- マップ
- 時刻
この機能を活用し、例えば開発者向けならば、次のような情報を一覧表示するスクリーンを作成できます。
- Web監視結果画面表示
- URLを指定して、実際のWebサービス画面を表示
- DB監視結果のグラフ表示
また、役割ごとにZabbixへのログインユーザーやユーザーグループを管理することも重要です。例えば次のように管理するといいでしょう。
【ユーザーグループ】
- Operators: 運用者用グループ
- Developers: 開発者用グループ
【ユーザー】
- OperatorA: Operatorsグループに所属するユーザー
- DevelperA: Developersグループに所属するユーザー
Zabbixでは、ユーザーごとにログイン後に最初に表示するURLを指定可能です。OperatorAには運用者向けスクリーンのURLを、DeveloperAには開発者向けスクリーンのURLを指定しておくことで、よりスムーズに確認作業に移ることができます。
アラートの振り分け&ステップ実行の効果的な利用
Zabbixの画面を見て、原因を判断してから対応する……。という手順を踏むと、それだけで対応が遅れてしまうことがあります。
そこで、迅速な対応に活用したいのが、Zabbixのアクション機能です。障害とみなすためのトリガー条件を正しく設定した上で、その条件にマッチした時のアクションを定義します。
Zabbixのアクション機能には次のような特徴があります。
- アクションの種類は「メッセージの送信」と「リモートコマンド」の2種類
- 障害発生時だけでなく復旧時にもメッセージの送信が可能
- メッセージの送信はアクションごとに宛先を指定可能
- 送付方法(メディア設定)は、SMTP経由のメール通知だけでなく、SMSやJabberなどさまざまな手段に対応
- リモートコマンドは、Zabbix ServerやZabbix Agentが実行するだけでなく、SSHやTelnet接続した上で実行することも可能
- 障害状態が継続する場合に、アクションのステップ実行が可能
具体的な例として次のような場面を想定します。
- Webサービスの応答遅延発生をZabbixが検知
- 障害状況を運用者・開発者双方に通知
- 即座に運用者にはインフラ層の稼働状況レポートメールを、開発者にはアプリケーション層の稼働状況レポートメールを送付
- 障害状態が継続している場合、再度稼働状況レポートメールを送付
これをZabbixのアクション設定に置き換えると、以下のようになります。
【ステップ1】
- デフォルトメッセージをOperators/Developers両グループに通知
- 運用者向けメッセージをOperatorsグループに通知
- 開発者向けメッセージをDevelopersグループに通知
- 次のステップ(ステップ2)の実行までの間隔を30分に設定
【ステップ2】
- ステップ2実行時点での最新情報を含んだ運用者向けメッセージをOperatorsグループに通知
- ステップ2実行時点での最新情報を含んだ開発者向けメッセージをDevelpersグループに通知
このようなアクションを設定する際には、アクション設定で利用できるZabbixのマクロ情報が何であるかを知っておくと便利です。Zabbixのマクロとは、各種設定中で利用する情報を変数として管理できる機能です。公式マニュアルに利用できるマクロの一覧が記載されています。
具体的には、監視アイテムの最新値やインベントリに登録されている情報などを、メッセージ中でマクロ展開できます。加えて、トリガーの条件式で利用する{host:key.func(param)}の形式で取得できる値も展開できるため、稼働状況レポートの作成に有効です。
例えば、開発者向けの稼働状況レポートメールに、過去3回分のWeb監視結果(応答時間)の情報を含めたい場合には、次のようにメッセージを記述します。
最新: {Host01:web.test.time[WebServiceA,Page1,resp].last(0)} sec 1つ前: {Host01:web.test.time[WebServiceA,Page1,resp].last(1)} sec 2つ前: {Host01:web.test.time[WebServiceA,Page1,resp].last(2)} sec
まとめ
ここまで紹介したように、開発者・運用者など役割によって、知りたい情報は異なります。開発・運用を迅速に回していくにはそれぞれの担当者がどういった情報を必要としているのかを検討し、Zabbixを活用して統合的に監視します。
それらの情報を、それぞれの担当者にとって分かりやすい形で提示し、場合によっては通知を使い分けることで、開発者にとっても、運用者にとっても有用な監視システムをZabbix中心で形成可能となります。
次回、第3回目は、運用作業面に焦点を絞り、監視運用作業を減らし、効率良い運用を実現するにはどうすればいいのかを紹介します。
著者プロフィール
池田大輔
Twitter : @ike_dai
TIS株式会社戦略技術センター所属。社内向けシステムの保守運用業務を経験後、クラウド時代の効率的な統合運用管理をテーマに活動中。その中でZabbixを利用した統合運用管理システム(HyClops for Zabbix)の開発に取り組む。ZABBIX-JP運営スタッフ所属。Zabbix認定スペシャリスト。『Zabbix統合監視[実践]活用 - 物理・仮想・クラウド混在環境の省力運用(仮)』という書籍を執筆中で、11月中旬頃発売予定。戦略技術センターでは、技術情報をブログ『Tech-Sketch』にて発信中。
Copyright © ITmedia, Inc. All Rights Reserved.