Zabbixの概要(Appendix)
サーバーやネットワークの状態を監視するための運用監視ツール「Zabbix」について、その特徴の紹介からインストールと初期設定の仕方まで紹介します。(LinuCレベル2 参考ドキュメント)
Zabbixとは、システム運用時に、サーバーやネットワークの状態を監視するための運用監視ツールです。システムの状態を監視し、必要に応じてアラートをあげるために、
- ネットワーク経由でサーバーやデバイスなどの死活監視やリソース消費状況を監視する
- 指定したしきい値を超えたりエラーが検出されたりしたらメールなどで通知をする
- 指定の条件を満たしたら、コマンドを実行する
などを行う機能を有しています。
目次
Zabbixでできること
Zabbixは以下のような機能を有しています。
1.1さまざまなデバイスやアプリケーションの監視
監視対象には以下のようなものが挙げられます。
- Zabbixエージェントをインストールしたサーバーや仮想マシン
- SNMPで監視可能なネットワークデバイス
- エンドユーザーのWebブラウザー
- Webアプリケーション
- データベース
1.2 障害検知
1で挙げたような監視対象から収集した稼働状況やパフォーマンスについての情報から、障害ステータスを自動的に検知します。Zabbixは障害検知に関連して以下のような機能を提供します。
- 柔軟な定義設定
- 障害の切り分けと障害復旧状況
- 障害の緊急度・深刻度(Severity)レベル
- 原因の解析・推定
- 異常検知(障害発生はしていないが、リソースがひっ迫しているなど)
- 傾向予測
1.3 可視化
Zabbixに内蔵されたWebインターフェースを用いると、以下のような情報にアクセスできます。
- ウィジェット(機能ごと)ベースのダッシュボード(一覧表示画面)
- グラフ
- ネットワーク構成図
- スライドショー
- ドリルダウンレポート(詳細分析機能)
1.4 アラート通知と復旧
Zabbixを用いると、システム管理者にさまざまな経路で障害の発生を通知したり、復旧用スクリプトの実行などが可能になります。
- メールによる通知
- あらかじめ設定した復旧用のスクリプトの実行
- 問題の深刻度によるレポート機能(エスカレーション)のカスタマイズ
- メッセージのカスタマイズ
1.5 セキュリティと認証
Zabbixでは、エージェントやノード間の通信においてデータ保護を実現するためのセキュリティ機能を提供します。
- Zabbixコンポーネント(サーバー・エージェント・WebUI)間での強力な暗号化
- 複数の認証方法への対応
- Open LDAP, Active Directory(Microsoftの認証プロダクト)
- ユーザー権限の設定
1.6 簡単な導入
Zabbixは導入・運用のハードルを下げるために以下のような機能が提供されます。
- 主要ディストリビューション向けの公式インストールパッケージ
- すぐに使えるテンプレート機能
- テンプレートのカスタマイズ機能
- ユーザコミュニティで公開されている多数のテンプレ―ト
- 有償のテンプレート作成サービス
1.7 オートディスカバリー
Zabbixを用いるとコンポーネントの追加・削除・変更を自動で行えます。
- ネットワークディスカバリー
定期的にネットワークをチェックし、デバイスタイプ、IPアドレス、ステータス、アップタイム・ダウンタイムなどを発見し、問題を発見した際には事前に定義したアクションを実行します。 - ローレベルディスカバリー
あらかじめ定義したターゲットデバイスに対して、監視対象となるファイルシステム項目、トリガー(アクションを実行するきっかけやしきい値)、グラフを自動で生成します。 - アクティブエージェントの自動登録
Zabbixエージェントがインストールされている機器が接続されると自動的に監視をスタートします。
1.8 分散監視
Zabbixは分散したデバイスやアプリケーションの集中管理を実現します。例えば、以下のような分散監視が可能になります。
- 数千の監視ターゲットからのデータ収集・可視化
- ファイアウォールやDMZ(ネットワーク上の非武装領域、ファイアウォールと同じゾーンまたは外にある領域)越しの監視
- ネットワーク障害時にも(可能な限り)データを収集
- 監視ターゲット上で、リモート環境からカスタムスクリプトを実行
1.9 Zabbix API
ZabbixはAPI(アプリケーション・プログラミング・インターフェース)を提供し、他のアプリケーションから、Zabbixの機能にアクセスしたり連携したりすることができます。例えば、以下のような連携が可能になります。
- API経由でのZabbix管理の自動化
- 200以上のメソッド(関数)を用いたZabbixの機能へのアクセス
- Zabbixと連携するアプリケーション開発用のAPIの提供
- 外部アプリケーションとの連携
- 設定管理、チケットシステム(障害トラッカーへの自動登録・チケット発行)
- 設定やログの取り出し、管理
Zabbixを構成するコンポーネント
Zabbixは三つのコンポーネントから構成されています。
- Zabbixサーバー
監視ターゲットからデータを取得してデータベースに保存したり、特定の条件を満たした場合に通知を送信したりする - Zabbix Web UI
収集したデータやリソース消費状況などを表示したり、監視内容の設定をWebベースで実行したりする - Zabbixエージェント
監視ターゲットとなるマシンにインストールして常時起動し、サーバーから監視を実行できるようにするクライアント
Zabbixのインストール(2020年4月現在)
Zabbixの最新安定版のバージョンは4.4, 長期サポート対応版は4.0となっています。
Zabbixの公式サイトでは、バージョンやディストリビューション、データベースソフトウェアの種類などを選択すると、その組み合わせに対応したインストール手順が表示されるようになっています。
それでは、CentOS 8.0とMySQL、Apacheの組み合わせでインストールを実行してみましょう。
(1)Zabbixのリポジトリの追加とテンポラリファイルのクリーンアップ(削除)
# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
# yum clean all
(2)Zabbixサーバー、Webインターフェース、Apache設定ファイル、Zabbixエージェントのインストール
# yum install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
(3)MySQLデータベース上にZabbixの収集したデータを保存するデータベースインスタンスを追加してzabbixユーザーにアクセス権を追加する。
# mysql -uroot -p
<password>
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<zabbixユーザのパスワード>';
mysql> quit;
Zabbixサーバー上で、データベースのスキーマ(テーブル構成)や初期データのインポートを行います。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
(4)Zabbixの設定ファイル(/etc/php-fpm.d/zabbix.conf)にデータベース設定(zabbixユーザのDBパスワード)を追記する。
DBPassword=<zabbixユーザーのパスワード>
(5)タイムゾーンの設定をPHPの設定ファイル(/etc/php-fpm.d/zabbix.conf)に追加する。
; php_value[date.timezone] = Europe/Riga
⇒
php_value[date.timezone] = Asia/Tokyo
(6)ZabbixサーバーとApache, PHP(FastCGIモードのPHPプロセス)を起動する。またOS再起動時に自動起動するためのenable設定を行う。
# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm
(7)Webインターフェースにアクセスしてフロントエンドの設定を行う。
http://Zabbixサーバーをインストールしたサーバーのホスト名・IP/zabbix
にアクセスします。
◎フロントエンドの設定URLを開いたところ
インストール条件の確認(問題があればPHP設定などを変更)
データベースの接続設定を入力して「Next step」をクリックします。
Zabbixサーバーの設定を行います。Nameはオプションですが、入れておくと管理画面に表示され、他のサーバーと識別しやすくなります。
すると設定のサマリー(要約)ページが表示されます。
設定ファイルをダウンロードして、zabbixのドキュメントルートのconfディレクトリに保存します。
インストールを完了します。
インストールが完了したら、ログイン画面が出るので、初期ID・パスワード(Admin・zabbix)でログインしましょう。
Zabbixの初期設定(ユーザの追加・設定)
無事にログインできたら、Administration ⇒ Users というメニューを開いて、ユーザー一覧を表示しましょう。
右上の「Create User」をクリックして、ユーザーの追加を行います。
「Add」をクリックしてユーザーが追加されたら、続いては上部の「Media」タブをクリックして通知設定を行います。
- Send toは送信先のメールアドレス
- When activeは、通知を送信する時間帯の指定
- Use if severityは、情報や障害の深刻度により送受信の可否を設定できます。例えば、Disasterは障害発生情報、Warningは警告や注意、それ以外はパフォーマンスなどの情報です。
- Enabledでは通知の有効化・無効化を切り替えられます。
続いては「Permissions」タブをクリックして、監視対象のデバイスやサーバーの選択をします。
Selectをクリックすると選択肢の一覧が表示されます。
例えば、下の図では「Linux Servers」へのアクセスを選択しています。それ以外には、自動検知されたホスト、ハイパーバイザー、テンプレート、仮想マシン、Zabbixサーバーなどが選択可能となっています。
チェックを入れたら「Select」をクリックして、設定を保存しユーザー情報のページに戻ります。
以上の設定で、WebインターフェースからLinuxサーバーの情報にアクセスできるようになります。
◎インターフェースの日本語化
ページ右上のユーザプロフィールを表示するアイコンをクリックすると、言語設定を切り替えることができます。
デフォルトでは英語メニューになっています。もし、日本語メニューで使用したい場合には、「Japanese(ja_JP)」を選択すると日本語メニューに切り替えることができます。
監視対象の追加と表示例
あとは、監視ターゲットの情報を追加して、監視する対象(例えば、CPU使用率やメモリ使用量)などを指定します。
まずは監視対象のホストを追加します。
監視対象のホストを追加したら、次は監視するリソースを設定します。
例えば、下の図ではCPU使用率のデータを設定しています。
ダッシュボードに戻ると、以下のようなCPU使用率の推移を可視化したグラフを得ることができます。
◎SELinuxを有効化した状態でZabbixを動作させるための設定
SELinuxが有効になっている状態では、Zabbixが外部と通信することができません。そこで、Zabbix用のSELinuxのポリシーパッケージをインストールして、OSを再起動しましょう
# semodule -i my-zabbixserver.pp
執筆者紹介
・太田 俊哉
・井上 博樹
このドキュメントは、LinuCレベル2の学習用の教材から抜粋して作成されたものです。教材全体は以下のPDFファイルをご覧ください。
LinuCレベル2学習教材