Zabbixは「自動化」で運用管理者の負担をどう減らしてきたのか:クラウド/コンテナ時代のZabbix再入門(前編)(1/2 ページ)
Zabbixの概要をあらためて振り返り、Zabbixが「自動化」によって運用管理者の負担をどう減らしてきたのかを機能ごとに見ていく。
Zabbixとは
Zabbix(ザビックス)とは、オープンソースソフトウェア(OSS)の統合監視ツールです。開発元は、ヨーロッパの「ラトビア」という国にあるZabbix社。同社はZabbix本体のソースコードを全て公開しています。ライセンスはGPL v2です。
Zabbixは、ネットワークに接続されているサーバやネットワーク機器などの状態を把握して「正常に機能しているか」を監視し、問題があった場合、メールなどで運用管理者に通知したり、自動回復を試みたりします。
Zabbixを使ってサーバを監視する場合、専用のエージェントを利用することで、CPUやメモリ、ネットワーク、HDDなどの使用状況を把握して監視することができます。専用のエージェントを使用しなくても監視できますが、その場合は、TelnetやSSH、IPMI(Intelligent Platform Management Interface)、SNMP(Simple Network Management Protocol)などのプロトコルを使います。
ネットワーク機器であれば、各ポートのトラフィックなど、SNMPなどを使用して取得できる情報を把握して監視することができます。Linuxのような対話的なログインが可能であれば、TelnetやSSHで接続してコマンドを実行し、その結果を監視することもできます。
サーバやネットワーク機器以外でも、スクリプトを実行して文字列や数値が取得できるのであれば、それを監視対象とすることもできます。例えば、ミドルウェアやサービスの状態をスクリプトやコマンドの実行によって取得できるのであれば、その結果を監視することも可能です。
また、監視を行うために取得してきた値が数値であれば、それをグラフとして表示させることができます。時系列での変化や傾向を把握するためには、このグラフ化(視覚化)の機能は有効です。日次、週次、月次など、グラフとして表示させる時間の範囲を選択できるので、時間帯ごとの変化や長期間の傾向を把握するのを助けてくれることでしょう。
大規模なネットワークを監視する際には、中継するサーバと組み合わせて利用することで、より大規模なネットワークを監視できます。中継するサーバは、「Zabbixプロキシ」と呼ばれます。大規模ではなくとも、ネットワークが遠隔地に分散している場合もありますが、各拠点に中継するサーバを配置して利用することで、「Firewall」といったセキュリティ設定を集約するなど、各拠点内の監視対象をより効率的に監視できます。
Zabbixの運用には注意点もあります。Zabbixでは、監視の設定や監視のために収集した監視項目の値を、Zabbixサーバが接続しているデータベース上に保存します。そのため、収集する監視項目が多くなってくると、単位時間当たりで処理しなければならないデータ数が多くなり、それらを処理できるだけのデータベースの性能が必要となります。
用語の整理
この先を読み進めるためにもZabbixで利用する特に重要な用語を整理しておきます。
用語 | 概要 |
---|---|
ホスト | 監視対象のこと。主にサーバやネットワーク機器ごとに登録する |
ホストグループ | ホストをグルーピングしたもの。視点や役割を考慮して、1つのホストを複数のホストグループに所属させて、アクセス制御させることにも利用できる |
アイテム | 監視項目のこと。監視間隔はアイテムごとに設定可能。Zabbixエージェントを使用したりSNMPを使用したりして監視するなど、監視する方法(タイプ)を指定して設定できる |
トリガー | アイテムで取得した情報を障害であるかどうかを判定するための条件式と重要度を設定する。複数のアイテムの値を組み合わせた条件式を設定することも可能 |
グラフ | アイテムの値が数値である場合、その値の変化を視覚化するためのもの |
テンプレート | アイテム、トリガー、グラフなどの設定を一まとまりにしたもの。OSやアプリケーションごとに用意しておくことで、依存関係を設定したり、組み合わせて利用したりすることもできる |
マップ | ネットワークマップ。各ホストやホストグループのアイコンを画面上に配置し、各ホストやホストグループで障害が発生していないか、アイコン上のマークやメッセージで把握しやすくするためのもの |
スクリーン | グラフやマップ、障害発生のイベント一覧などを、1画面内に自由に配置して、1画面でより多くの情報を確認できるようにするためのもの |
ニーズの変化に対応した、自動化、省力化のための機能
監視について、昔は、オンプレミスのサーバやネットワーク機器のみが対象となっていたと思います。しかし、クラウドやコンテナなどの利用が増えるにつれて、現在ではそれらを監視することも必要となってきています。
Zabbixでは、標準の監視項目以外に、簡単に監視項目を追加して監視することが可能です。そのため、コマンドやスクリプトを利用して取得できる数値や文字列を監視することで、クラウドやコンテナの状態を把握して監視することもできます。
また現在は、クラウド上で負荷に応じて自動的にノードを追加する場合など、監視対象が動的に変化するような環境が増えてきているため、そのノードの追加や削除といった変化に合わせて、監視対象や監視項目の設定変更が必要となっています。
その監視設定を、運用管理者が手動で行っている場合、作業負荷が増加してしまいます。システムやサービスの規模によっては、その対応だけに運用管理者が日々追われてしまうことになりかねません。
そこでZabbixでは、自動的に監視対象や監視項目を追加するための設定サポート機能として、以下のような機能を持っています。
- テンプレート
- 自動登録
- ネットワークディスカバリ
- ローレベルディスカバリ
- API
これらの機能を活用することで、運用管理者の作業を軽減できます。
テンプレート
テンプレートとは、監視項目、監視項目に対して障害かどうかを判定するための条件式、グラフなどを一まとめにしたものです。監視対象を追加したときに、このテンプレートを監視対象にリンクさせるだけで監視の設定を終了できます。つまり、監視設定を省力化するための機能です。
テンプレートの設計を工夫することで、OSレイヤー、アプリケーションレイヤーなどベースの部分と役割によって組み合わせて使うこともできます。
例えば、Zabbix標準の「Template OS Linux」は、「Template App Zabbix Agent」テンプレートに依存したテンプレートです。この「Template App Zabbix Agent」は、Zabbixエージェントを導入したサーバの汎用的なテンプレートです。そのZabbixエージェントの監視項目に追加するかたちで、OSに依存する部分が各OS用に用意されています。そのうちLinux用のものが「Template OS Linux」です(Windows用は「Template OS Windows」)。
Linuxの基本的な監視であれば、「Template OS Linux」を監視対象のサーバ(ホスト)にリンクするだけで監視を開始できます。
実際に本番環境で監視を行う場合は、導入するネットワークでの管理基準に合わせて、テンプレートをカスタマイズしたり、新規にテンプレートを作成したり、デフォルトのテンプレートを複製したりして、導入する環境に合った監視設定にすることをお勧めします。
自動登録
自動登録は、Zabbixエージェントを導入したサーバを起動したときに、自動的に監視対象として登録する機能です。Zabbixエージェントに設定された情報を基に、リンクさせるテンプレートを自動的に選択できます。
ネットワークディスカバリ
ネットワークディスカバリは、起動中のサーバやネットワーク機器を探索し、見つかったら監視対象として追加する機能です。
ローレベルディスカバリ
ローレベルディスカバリ(LLD)とは、サーバやネットワーク機器を検出するものではなく、サーバやネットワーク機器内で複数存在する監視対象をリストアップして、それぞれの対象に自動で監視項目を設定するための機能です。
例えば、最初に監視対象を登録するときに、接続しているネットワークインタフェースやマウントしているディスクを探索して、自動的にそれぞれのインタフェースやディスクの監視項目を設定することができます。
また、サーバにネットワークインタフェースを追加したり、HDDを追加してマウントしたりなど、“状態”が変化したときに自動的に、それぞれのインタフェースやHDDに対して監視項目を追加できます。
ネットワーク機器でも同様に、最初に登録したときやネットワークインタフェースを追加して認識された後に、SNMPでリストを取得して各インタフェースの監視項目を自動的に追加することができます。
「Template OS Linux」テンプレートにもLLDの設定が用意されています。詳細は、メニューの「設定」→「テンプレート」からテンプレートの一覧を確認し、「Template OS Linux」の「ディスカバリ」の設定内容を確認してみてください。
Zabbix自体が標準的に持っているのは上記のようなLLDの機能だけですが、独自に拡張できるため、「監視したい対象のリストを取得する」スクリプトと、「取得したリストに対して細かく状態を確認する」スクリプトを用意することで、動的に変化する監視対象でも監視できます。例えば、Dockerを使用している場合に、起動しているコンテナのリストを取得して、各コンテナのCPUやメモリ、ネットワークインタフェースのI/Oなどを監視することも可能です。
API
APIでは、監視対象の登録変更削除など、Zabbixの多くの機能を操作することが可能なため、他のシステムを連携させることもできます。
例えば、クラウド環境を統合して管理するようなアプリケーションから、監視対象の追加や変更を行うようなこともできます。つまり、クラウドを統合管理するツールから、仮想マシンを新規に作成して、仮想マシンが起動できたら、それを監視対象としてZabbixサーバに登録してテンプレートをリンクさせるようなことが考えられます。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- クラウド&DevOps時代に求められる運用とは〜Zabbixが有効な理由
ますますクラウド化が進む中、システムにはより迅速な対応が求められるようになっています。要件の変化が早いシステムを適切に運用していくためにはどうすればいいのでしょうか? この記事では、クラウドやDevOpsを前提としたITシステムの「運用」に求められることを整理し、そういった運用に対して、オープンソースの統合監視ツール「Zabbix」がどのように有効活用できるかを紹介します。 - あなたの運用管理が十分にうまくいかないワケ
この連載では、オープンソースの運用監視ソフトウェア「ZABBIX」ではどんなことができるのかを、実際の使い方とともに紹介していきます(編集部) - なぜネットワークを管理しなければならないか?
この連載では、SNMPについて説明します。SNMPの管理モデルと役割、 SNMPのアーキテクチャとしてMIBの基礎とSNMPの動作、またMIBの拡張について解説していきます。