FJcloud実践
ZabbixでFJcloud-Vを監視する方法
ITシステムを運用する上で欠かせないのが、システムダウンを検知したり、将来的に障害の原因となりそうな要因を早期に発見するための「監視」です。しかし、監視に多数の工数を割いたとしても、ビジネスの価値に直接コミットするわけではありません。従い、なるべく手間をかけず、クラウド事業者が用意しているサービスや監視SaaSを使うのが一般的だと言えるでしょう。
しかし環境や条件によっては、こうしたサービスが使えない場合もあります。そういう時は、オンプレミス時代のように、監視システムをセルフホストする必要性が出てきます。本記事では、オープンソースで人気の監視システムである「Zabbix」を、FJcloud-V上に構築する方法を紹介します。
前提条件
Zabbixの動作には、Zabbixサーバー本体、ユーザーが操作するWebフロントエンド、そしてバックエンドとなるデータベースが必要です。本記事ではUbuntu 22.04 LTSのインスタンスを1台起動し、必要なコンポーネント一式をすべてオールインワンで構築し、Zabbixサーバーとします。
また、監視対象となるサーバーと、監視対象にインストールするエージェントも必要となります。これにはUbuntu 22.04 LTSのインスタンスをもう1台用意し、監視エージェントをインストールします。
Zabbixサーバーと監視対象のサーバーは、FJcloud-Vのプライベートネットワークで通信できるように設定しておきます。
Zabbixサーバーのインストール
サーバー用のインスタンスにログインして、Zabbixサーバーをインストールしましょう。今回は以下の設定でインストールを行います。
ZABBIXバージョン | Zabbix 7.0 LTS |
---|---|
OSディストリビューション | Ubuntu |
OSバージョン | 22.04 LTS |
ZABBIX COMPONENT | Server, Frontend, Agent |
データベース | MySQL |
WEB SERVER | Apache |
インストール手順は公式のダウンロードページにアクセスし、上記の表を参考に、Zabbixサーバーのプラットフォームを選択することで確認できます。ですが公式の手順はいくつか不足している部分があるため、以下でそれを補完した手順を解説します。
まずはzabbix-releaseパッケージをインストールします。これはZabbix本体ではなく、Zabbixインストール用のリポジトリをシステムに追加するためのパッケージです。
# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb
# apt install ./zabbix-release_latest_7.0+ubuntu22.04_all.deb
以下のコマンドでZabbixサーバーと、それ以外の必要なパッケージ一式をインストールします。
# apt update
# apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent mysql-server fonts-noto-cjk
ZabbixサーバーのWebフロントエンドは、日本語にも対応しています。ですがそのままではフォントが足りず、グラフ内の日本語が文字化けしてしまいます。そこでNotoフォントをインストールした上で、以下のコマンドでzabbix-frontend-fontの向き先をNotoSansCJK-Regular.ttcに変更してください。ここでは優先度を20としているため、デフォルトのDejaVuSansフォント(優先度10)よりも優先して、Notoフォントが使われるようになります。
# update-alternatives --install /usr/share/zabbix/assets/fonts/graphfont.ttf zabbix-frontend-font /usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc 20
mysqlコマンドで、MySQLデータベースを対話的に操作します。以下を参考にクエリを実行し、データベースとユーザーの作成を行ってください。
# mysql -uroot
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'DBのzabbixユーザーのパスワード';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
以下のコマンドでクエリを実行し、データベースの初期設定を行います。
# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -pDBのzabbixユーザーのパスワード zabbix
再度mysqlコマンドを実行し、log_bin_trust_function_creatorsを無効にします。
# mysql -uroot
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
「/etc/zabbix/zabbix_server.conf」というファイルに、先ほど作成したZabbix用のMySQLユーザーのパスワードを記述します。以下のコマンドでファイルを書き換えてください。
# sed -i.bak -e 's/# DBPassword=/DBPassword=DBのzabbixユーザーのパスワード/' /etc/zabbix/zabbix_server.conf
ZabbixのWebインターフェイスが使える言語は、システムのロケールに依存します。以下のコマンドで日本語ロケールを生成してください。
# locale-gen ja_JP.UTF-8
ここまでできたら、ZabbixサーバーとApache HTTPDサーバーを再起動します。
# systemctl restart zabbix-server zabbix-agent apache2
# systemctl enable zabbix-server zabbix-agent apache2
これでサーバーのインストールは完了です。Webブラウザーから「http://サーバーのIPアドレス/zabbix」にアクセスしてみましょう。Zabbixのセットアップ画面が表示されます。指示に従い、セットアップを完了させてください。
「監視データ」→「ホスト」を見てみましょう。Zabbixサーバー自身が、既に監視されています。グラフやダッシュボードなどを見て、雰囲気を掴んでみましょう。
Zabbixエージェントのインストール
続いて監視対象のサーバーに、Zabbixエージェントをインストールします。こちらもダウンロードページで、以下を選択することでインストール手順を表示できますが、設定ファイルを書き換える必要があるため、ここで詳しく紹介します。
ZABBIXバージョン | Zabbix 7.0 LTS |
---|---|
OSディストリビューション | Ubuntu |
OSバージョン | 22.04 LTS |
ZABBIX COMPONENT | Agent 2 |
まずZabbixサーバーと同様に、zabbix-releaseパッケージをインストールします。
# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb
# apt install ./zabbix-release_latest_7.0+ubuntu22.04_all.deb
Zabbixエージェントをインストールします。サーバーと異なり、インストールするパッケージは少なめです。
# apt update
# apt install zabbix-agent2 zabbix-agent2-plugin-*
Zabbixエージェントの設定ファイルは「/etc/zabbix/zabbix_agent2.conf」です。デフォルトの状態のZabbixエージェントは、自分自身(localhost)からのアクセスしか許可していません。そこで設定ファイルを編集し、別のZabbixサーバーから接続できるようにします。以下のコマンドを実行して、設定ファイルを書き換えてください。
$ sed -i -e 's/^\(Server.*=\)127.0.0.1.*/\1ZabbixサーバーのプライベートIPアドレス/' /etc/zabbix/zabbix_agent2.conf
$ sed -i -e 's/^Hostname=.*/Hostname=このサーバーのホスト名/' /etc/zabbix/zabbix_agent2.conf
設定ファイルの書き換えが完了したら、Zabbixエージェントを再起動します。
# systemctl restart zabbix-agent2
# systemctl enable zabbix-agent2
ホストの追加と監視アイテムの設定
Zabbixサーバーに監視対象を追加しましょう。「監視データ」→「ホスト」を開き、右上にある「ホストを作成」ボタンをクリックしてください。すると以下の画面が表示されます。
「ホスト名」には、任意のホスト名を入力します。ここでは「ubuntu」としました。
「表示名」には、ZabbixのWebインターフェイス上に表示される名前を、ホスト名とは別途指定できます。今回は指定していません。
「テンプレート」とは、どのような項目を監視するのかを定義した、エンティティのセットです。テンプレートをリンクすることで、複数のホストで手軽に同じ監視項目を設定できます。今回はデフォルトで用意されている「Linux by Zabbix agent」を選択しました。
「ホストグループ」とは、監視対象ホストのグループです。どのホストも、最低ひとつのグループに所属する必要があります。今回はデフォルトで用意されている「Linux servers」を指定しました。
「インターフェイス」は、ホストの情報を収集するためのインターフェイスです。今回はZabbixエージェントを利用するため「エージェント」を選択し、監視対象サーバーのプライベートIPを指定しました。
最後に「追加」をクリックすると、ホストが追加されます。情報が取得されるまで、しばらく待ちましょう。なおホストの追加については、公式のドキュメントも参考にしてください。
まとめ
Zabbixは非常に高度で複雑なシステムであるため、ここですべての設定を説明することはできません。ですがシンプルな監視であれば、このようにインストールしてデフォルトのテンプレートを適用するだけでも、簡単にはじめることができます。監視システムを自前で用意する必要があるのであれば、公式ドキュメントの情報も参考にしながら、ぜひ実際に手を動かして、Zabbixを触ってみてください。