ソースからのインストール
Zabbixの最新バージョンは、ソースからコンパイルすることで入手できます。 Zabbixソースコードの取得も参照してください。
ソースからZabbixをインストールするためのステップバイステップのチュートリアルをここに示します。
- Zabbixデーモンのインストール
1 ソースアーカイブのダウンロード
Zabbixダウンロードページにアクセスし、ソースアーカイブをダウンロードします。ダウンロードしたら、以下のコマンドを実行してソースを展開します。
tar -zxvf zabbix-8.0.0.tar.gz
コマンドには正しいZabbixバージョンを入力してください。ダウンロードしたアーカイブ名と一致する必要があります。
2 ユーザーアカウントの作成
すべてのZabbixデーモンプロセスは、特権のないシステムユーザーで実行されます。 Zabbixデーモンが特権のないユーザーアカウントから起動された場合、そのユーザーで実行され続けます。
デフォルトの設定では、デーモンが root として起動された場合、zabbix ユーザーアカウントに切り替わります。このアカウントは存在している必要があります。
zabbix システムユーザーとグループを作成するには、以下のコマンドを実行してください。
RedHat系システムの場合:
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
Debian系システムの場合:
addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix
Zabbixフロントエンド用に別のユーザーアカウントを作成する必要はありません。
セキュリティ推奨
Zabbixのサーバーとエージェントが同じマシンで動作する場合は、別々のユーザーアカウントで実行することを推奨します。 両方を同じユーザーで実行すると、エージェントがサーバーの設定ファイルにアクセスできるようになり、データベースのパスワードなどの機密情報がZabbixの管理者レベルのユーザーに漏洩する可能性があります。
Zabbixを root、bin、または特別な権限を持つ他のアカウントで実行することは、セキュリティリスクとなります。
ホームディレクトリ(オプション)
Zabbixプロセスはホームディレクトリを必要としないため、通常は作成を推奨しません。 ただし、$HOME/.my.cnfにMySQLの認証情報を保存するなど、ホームディレクトリが必要な機能を利用する場合は、以下のコマンドで作成できます。
RedHat系システムの場合:
mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix
Debian系システムの場合:
mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
3 Zabbixデータベースの作成
Zabbixのサーバーおよびプロキシデーモン、ならびにZabbixフロントエンドにはデータベースが必要です。Zabbixエージェントの実行には必要ありません。
データベーススキーマの作成とデータセットの挿入には、SQLスクリプトが提供されています。Zabbixプロキシのデータベースにはスキーマのみが必要ですが、Zabbixサーバーのデータベースにはスキーマに加えてデータセットも必要です。
Zabbixデータベースを作成したら、Zabbixのコンパイルの次の手順に進みます。
4 ソースの設定
Zabbixサーバー、Zabbixプロキシ、またはZabbixエージェントをビルドするには、GNU拡張付きのC99が必要です。 このバージョンは、CFLAGS="-std=gnu99"を設定することで明示的に指定できます。
export CFLAGS="-std=gnu99"
Zabbix Gitリポジトリからインストールする場合は、最初に以下を実行する必要があります。\
./bootstrap.sh
Zabbixサーバーまたはプロキシのソースを設定する場合は、使用するデータベースタイプを指定する必要があります。サーバーまたはプロキシプロセスで一度にコンパイルできるデータベースタイプは1つだけです。
サポートされているすべての設定オプションを確認するには、展開したZabbixソースディレクトリ内で以下を実行します。
./configure --help
Zabbixサーバーおよびエージェントのソースを設定するには、次のように実行できます。
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares
Zabbixサーバー(PostgreSQLなど)用のソースを設定するには、次のように実行できます。
./configure --enable-server --with-postgresql --with-net-snmp
Zabbixプロキシ(SQLiteなど)用のソースを設定するには、次のように実行できます。
./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2
Zabbixエージェントのソースを設定するには、次のように実行できます。
./configure --enable-agent
または、Zabbix agent 2の場合は次のように実行します。
./configure --enable-agent2
Zabbix agent 2をビルドするには、サポートされているGoバージョンがインストールされている必要があります。
コンパイルオプションに関する注意事項:
--enable-agent- Zabbixエージェント、およびZabbix getやZabbix senderコマンドラインユーティリティをコンパイルします。--with-libcurl- 仮想マシン監視、SMTP認証、およびweb.page.*Zabbixエージェントアイテムに必要です。詳細は要件(libcurl)も参照してください。--with-libxml2- 仮想マシン監視に必要です。--with-libpcre2[=DIR]- Zabbixは常にPCRE2ライブラリでコンパイルされます。このオプションはカスタムPCRE2インストールパスを指定する場合のみ使用します。--with-mysql=/path/to/mysql_config- 特定のMySQLクライアントライブラリ設定へのパスを指定します。複数のバージョンのMySQLまたはMariaDBがインストールされている場合に便利です。--enable-static- ライブラリを静的にリンクします(Solarisではサポートされていません)。必要なライブラリがないシステムにコンパイル済みバイナリを配布する場合に使用します。Zabbixサーバーのビルド時には推奨されません。サーバーを静的にビルドするには、すべての外部ライブラリの静的バージョンが必要です。configureスクリプトはこれを自動的にチェックしません。--with-stacksize=<value>- スレッドごとのスタックサイズをキロバイト単位で設定します(例:--with-stacksize=512)。Zabbixがスタックオーバーフロー(例:デフォルトのスレッドスタック制限が低いシステムでの前処理時)でクラッシュまたはフリーズする場合は、この値を増やすことができます。
./configureがライブラリの不足やその他の問題で失敗した場合は、詳細なエラー情報をconfig.logファイルで確認してください。
たとえば、libsslが不足している場合、直近のエラーメッセージは誤解を招く可能性があります。
checking for main in -lmysqlclient... no
configure: error: Not found mysqlclient library
この場合、config.logには実際の原因が記載されています。
/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto
関連情報:
5 すべてを作成してインストールする
Zabbix Gitリポジトリからインストールする場合は、最初に次を実行する必要があります:\
$ make dbschema
make install
このステップは、十分な権限を持つユーザー(通常は'root'、またはsudoを使用して)として実行する必要があります。
make installを実行すると、デフォルトでデーモンバイナリ(zabbix_server、zabbix_agentd、zabbix_proxy)は/usr/local/sbinに、クライアントバイナリ(zabbix_get、zabbix_sender)は/usr/local/binにインストールされます。
/usr/local以外の場所を指定するには、前のソース構成ステップで--prefixキーを使用します。例えば--prefix=/home/zabbixのように指定します。この場合、デーモンバイナリは<prefix>/sbin、ユーティリティは<prefix>/binにインストールされます。Manページは<prefix>/shareにインストールされます。
6 設定ファイルの確認と編集
- Zabbixエージェントの設定ファイル /usr/local/etc/zabbix_agentd.conf を編集します。
このファイルは、zabbix_agentdをインストールしたすべてのホストで設定する必要があります。
ファイル内でZabbixサーバーのIPアドレスを指定する必要があります。 他のホストからの接続は拒否されます。
- Zabbixサーバーの設定ファイル /usr/local/etc/zabbix_server.conf を編集します。
データベース名、ユーザー、およびパスワード(使用している場合)を指定する必要があります。
他のパラメータは、小規模なインストール(監視対象ホストが10台まで)の場合はデフォルトのままで問題ありません。ただし、Zabbixサーバー(またはプロキシ)のパフォーマンスを最大化したい場合は、デフォルトのパラメータを変更する必要があります。
- Zabbixプロキシをインストールした場合は、プロキシの設定ファイル /usr/local/etc/zabbix_proxy.conf を編集します。
サーバーのIPアドレスとプロキシのホスト名(サーバーで認識されている必要があります)、およびデータベース名、ユーザー、パスワード(使用している場合)を指定する必要があります。
SQLiteを使用する場合は、データベースファイルへのフルパスを指定する必要があります。DBユーザーとパスワードは不要です。
7 デーモンの起動
サーバー側でzabbix_serverを実行します。
zabbix_server
システムが36MB(またはそれ以上)の共有メモリの割り当てを許可していることを確認してください。そうでない場合、サーバーが起動せず、サーバーログファイルに「Cannot allocate shared memory for <type of cache>.」と表示されることがあります。これはFreeBSDやSolaris 8で発生する可能性があります。\
監視対象のすべてのマシンでzabbix_agentdを実行します。
zabbix_agentd
システムが2MBの共有メモリの割り当てを許可していることを確認してください。そうでない場合、エージェントが起動せず、エージェントログファイルに「Cannot allocate shared memory for collector.」と表示されることがあります。これはSolaris 8で発生する可能性があります。
Zabbixプロキシをインストールした場合は、zabbix_proxyを実行します。
zabbix_proxy
- Zabbix Webインターフェースのインストール
PHPファイルのコピー
ZabbixフロントエンドはPHPで書かれているため、実行するにはPHPをサポートするWebサーバーが必要です。 インストールは、uiディレクトリからWebサーバーのHTMLドキュメントディレクトリにPHPファイルをコピーするだけで行えます。
Apache WebサーバーのHTMLドキュメントディレクトリの一般的な場所は以下の通りです:
- /usr/local/apache2/htdocs (ソースからApacheをインストールした場合のデフォルトディレクトリ)
- /srv/www/htdocs (OpenSUSE, SLES)
- /var/www/html (Debian, Ubuntu, Fedora, RHEL)
HTMLルートの代わりにサブディレクトリを使用することを推奨します。 サブディレクトリを作成し、Zabbixフロントエンドファイルをコピーするには、<htdocs>を実際のディレクトリに置き換えて以下のコマンドを実行します:
mkdir <htdocs>/zabbix
cd ui
cp -a . <htdocs>/zabbix
英語以外の言語を使用する場合は、追加フロントエンド言語のインストールの手順を参照してください。
フロントエンドのインストール
Zabbixフロントエンドのインストールウィザードについては、Webインターフェースのインストールページを参照してください。
- Zabbix agent 2のロード可能なプラグインのインストール
Zabbix agent 2のロード可能なプラグインのインストールは、組み込みプラグインでカバーされていないターゲット(例:MongoDBサーバーやクラスター、PostgreSQLやそのフォークなど)を監視したい場合にのみ必要です。
ロード可能なプラグインと組み込みプラグインの全リストを参照してください。
プラグインをインストールする前に、そのREADMEファイルを確認してください。
特定の要件やインストール手順が記載されている場合があります。
ソースからインストールするには、まずダウンロードして、ロード可能なプラグインのソースアーカイブを展開します。
プラグインをコンパイルするには、展開したプラグインディレクトリに移動し、makeを実行します。
make
Zabbix agent 2のロード可能なプラグインをビルドするには、サポートされているGoバージョンがインストールされている必要があります。
プラグインの実行ファイルは、Zabbix agent 2からロード可能であれば、どこに配置してもかまいません。
プラグインの設定ファイル(例:PostgreSQLプラグインの場合はpostgresql.conf)で、プラグインバイナリへのパスを指定します。
Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql
プラグイン設定ファイルへのパスは、Zabbix agent 2の設定ファイルのIncludeパラメータで指定する必要があります。
Include=/path/to/plugin/configuration/file/postgresql.conf
プラグインの設定の詳細については、セットアップを参照してください。
Zabbixが提供するロード可能なプラグインは、以下のビルドターゲットを持つシンプルなmakefileを使用しています。
make- プラグインのビルドmake clean- プラグインのビルドで作成されたすべてのファイルを削除make check- セルフテストの実行(実際の監視ターゲット、例:PostgreSQLデータベースが必要)make style-golangci-lintでGoコードスタイルをチェックmake format-go fmtでGoコードをフォーマットmake dist- すべての依存関係を含むソースアーカイブを作成
- Javaゲートウェイのインストール
JMXアプリケーションを監視する場合のみ、Javaゲートウェイのインストールが必要です。Javaゲートウェイは軽量で、データベースを必要としません。
ソースからインストールするには、まずソースアーカイブをダウンロードして展開します。
Javaゲートウェイをコンパイルするには、./configureスクリプトを--enable-javaオプション付きで実行します。Javaゲートウェイのインストールでは単一の実行ファイルだけでなくディレクトリツリー全体が作成されるため、--prefixオプションでデフォルトの/usr/local以外のインストールパスを指定することを推奨します。
./configure --enable-java --prefix=$PREFIX
JavaゲートウェイをコンパイルしてJARファイルにパッケージ化するには、makeを実行します。このステップでは、javacおよびjarの実行ファイルがパスに含まれている必要があります。
make
これで、src/zabbix_java/binにzabbix-java-gateway-$VERSION.jarファイルが作成されます。配布ディレクトリのsrc/zabbix_javaからJavaゲートウェイを実行しても問題ない場合は、Javaゲートウェイの設定と実行の手順に進んでください。
そうでない場合は、十分な権限があることを確認し、make installを実行してください。
make install
Javaゲートウェイの設定と実行の詳細については、セットアップに進んでください。
- Zabbix Webサービスのインストール
Zabbix Webサービスのインストールは、定期レポートを使用する場合にのみ必要です。
ソースからインストールするには、まずソースアーカイブをダウンロードし、展開します。
Zabbix Webサービスをコンパイルするには、--enable-webserviceオプションを付けて./configureスクリプトを実行します。
Zabbix Webサービスをビルドするには、サポートされているGoバージョンがインストールされている必要があります。
Webサービスがインストールされているマシンでzabbix_web_serviceを実行します:
zabbix_web_service
定期レポート生成の設定の詳細については、セットアップに進んでください。
- Zabbixソースコードの取得
Zabbixソースコードを取得する方法はいくつかあります。
- 公式Zabbixウェブサイトからリリースされた安定バージョンをダウンロードできます
- 公式Zabbixウェブサイトの開発者ページからナイトリービルドをダウンロードできます
- Gitソースコードリポジトリシステムから最新の開発バージョンを取得できます:
- フルリポジトリの主な場所はhttps://git.zabbix.com/scm/zbx/zabbix.gitです
- マスターおよびサポートされているリリースは、Githubのhttps://github.com/zabbix/zabbixにもミラーリングされています
リポジトリをクローンするには、Gitクライアントがインストールされている必要があります。公式のコマンドラインGitクライアントパッケージは、ディストリビューションでは一般的にgitと呼ばれています。例えば、Debian/Ubuntuでインストールするには、次のコマンドを実行します。
sudo apt-get update
sudo apt-get install git
すべてのZabbixソースを取得するには、コードを配置したいディレクトリに移動し、次のコマンドを実行します。
git clone https://git.zabbix.com/scm/zbx/zabbix.git
- コンパイルの問題
これらは、ソースからのZabbixのコンパイルに関する既知の問題です。他のすべての場合については、既知の問題のページを参照してください。
非標準の場所にあるライブラリ
Zabbixでは、非標準の場所にあるライブラリを指定することができます。以下の例では、Zabbixは指定された非標準の場所からcurl-configを実行し、その出力を使用して使用する正しいlibcurlを決定します。
$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
これは、システムにインストールされているlibcurlがこれだけの場合は動作しますが、標準の場所(たとえばパッケージマネージャによって)に別のlibcurlがインストールされている場合は動作しないことがあります。たとえば、Zabbix用に新しいバージョンのライブラリが必要で、他のアプリケーション用に古いバージョンが必要な場合などです。
したがって、非標準の場所にあるコンポーネントを指定しても、同じコンポーネントが標準の場所にも存在する場合は常に動作するとは限りません。
たとえば、/usr/localにインストールされた新しいlibcurlをlibcurlパッケージがまだインストールされている状態で使用すると、Zabbixが間違ったものを取得してコンパイルに失敗することがあります。
usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
/tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
collect2: error: ld returned 1 exit status
ここで、関数curl_easy_header()は古い/usr/lib/x86_64-linux-gnu/libcurl.soにはありませんが、新しい/usr/local/lib/libcurl.soにはあります。
問題はリンカーフラグの順序にあり、解決策の1つはLDFLAGS変数でライブラリへのフルパスを指定することです。
$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config
一部のシステムでは-Wl,--no-as-neededオプションが必要な場合があることに注意してください(参考:Debian系システムのデフォルトリンクオプション)。
一部のシステムでスタックサイズが小さい
Zabbixがスタックオーバーフローによりクラッシュまたはフリーズする場合は、ソースの設定時に--with-stacksizeオプションを使用してスレッドごとのスタックサイズを増やすことができます。
この問題は、デフォルトのスレッドスタック制限が低いシステム、特に事前処理中に複数のスレッドが作成される場合に発生することがあります。
次の例では、スレッドごとのスタックサイズを512KBに設定しています。
./configure --enable-server --with-mysql --with-stacksize=512
Linuxベースのシステムでは、ulimit -sコマンドを使用して実行時にシステムのスレッドスタック制限を確認できます。