ソースからのインストール

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を rootbin、または特別な権限を持つ他のアカウントで実行することは、セキュリティリスクとなります。

ホームディレクトリ(オプション)

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 repository からインストールする場合は、最初に次を実行する必要があります:

$ 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 にインストールされます。マニュアルページは <prefix>/share にインストールされます。

6 設定ファイルの確認と編集
  • Zabbix エージェントの設定ファイル (zabbix_agentd.conf) を編集します。

zabbix_agentd がインストールされている各ホストごとに、このファイルを設定する必要があります。

ファイル内には Zabbix サーバーの IPアドレス を指定しなければなりません。 他のホストからの接続は拒否されます。

データベース名、ユーザー、パスワード(使用する場合)を指定する必要があります。

監視対象ホストが 10 台以下の小規模な構成であれば、残りのパラメータはデフォルト値のままで問題ありません。ただし、Zabbix サーバー(またはプロキシ)の性能を最大化したい場合は、デフォルトパラメータを変更してください。

  • Zabbix プロキシをインストールしている場合は、プロキシの設定ファイル (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 WebインターフェースはPHPで記述されているため、実行するにはPHPをサポートするWebサーバーが必要です。
インストールは、uiディレクトリからPHPファイルをWebサーバーのHTMLドキュメントディレクトリに単純にコピーするだけで完了します。

Apache WebサーバーでのHTMLドキュメントディレクトリの一般的な場所は次のとおりです。

  • /usr/local/apache2/htdocs (Apacheをソースからインストールした場合のデフォルトディレクトリ)
  • /srv/www/htdocs (OpenSUSE, SLES)
  • /var/www/html (Debian, Ubuntu, Fedora, RHEL)

HTMLルートの代わりにサブディレクトリを使用することを推奨します。
サブディレクトリを作成し、Zabbix Webインターフェースのファイルをそこにコピーするには、<htdocs> を実際のディレクトリに置き換えて、次のコマンドを実行します。

mkdir <htdocs>/zabbix
cd ui
cp -a . <htdocs>/zabbix

英語以外の言語を使用する予定がある場合は、手順について 追加のWebインターフェース言語のインストール を参照してください。

フロントエンドのインストール

Zabbixフロントエンドのインストールウィザードについては、Webインターフェースのインストールページを参照してください。

Zabbix エージェント 2 のロード可能なプラグインのインストール

Zabbix エージェント 2 のロード可能なプラグインのインストールは、組み込みプラグインで対応していない監視対象(例: MongoDB サーバーまたはクラスター、PostgreSQL およびその派生版など)を監視したい場合にのみ必要です。
ロード可能なプラグイン組み込みプラグイン の一覧を参照してください。

プラグインをインストールする前に、README ファイルを確認してください。
そこには、特定の要件やインストール手順が記載されている場合があります。

ソースからインストールするには、まず ダウンロード して、ロード可能なプラグインのソースアーカイブを展開します。

プラグインをコンパイルするには、展開したプラグインディレクトリに移動して make を実行します。

make

Zabbix エージェント 2 のロード可能なプラグインをビルドするには、サポートされている Go のバージョン がインストールされている必要があります。

プラグインの実行ファイルは、Zabbix エージェント 2 から読み込める限り、任意の場所に配置できます。
プラグインの設定ファイル内でプラグインバイナリへのパスを指定します。たとえば、PostgreSQL プラグインでは postgresql.conf に次のように記述します。

Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql

プラグイン設定ファイルへのパスは、Zabbix エージェント 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 オプション付きで実行します。デフォルトの /usr/local 以外のインストール先を指定するために、--prefix オプションを指定することを推奨します。Javaゲートウェイのインストールでは、単一の実行ファイルではなく、ディレクトリツリー全体が作成されるためです。

./configure --enable-java --prefix=$PREFIX

Javaゲートウェイをコンパイルして JAR ファイルにパッケージ化するには、make を実行します。この手順では、javacjar の実行ファイルがパス上にある必要があります。

make

これで、src/zabbix_java/bin に zabbix-java-gateway-$VERSION.jar ファイルが作成されます。配布ディレクトリ内の src/zabbix_java から Javaゲートウェイを実行することに問題がなければ、Javaゲートウェイ の設定と実行に関する手順に進めます。そうでない場合は、十分な権限があることを確認して make install を実行してください。

make install

Javaゲートウェイの設定と実行の詳細については、セットアップ に進んでください。

Zabbix web serviceのインストール

Zabbix web serviceのインストールは、スケジュールレポートを使用したい場合にのみ必要です。

ソースからインストールするには、まずダウンロードしてソースアーカイブを展開します。

Zabbix web serviceをコンパイルするには、./configure スクリプトを --enable-webservice オプション付きで実行します。

Zabbix web serviceをビルドするには、サポートされているGoのバージョンがインストールされている必要があります。

web serviceがインストールされているマシンで zabbix_web_service を実行します。

zabbix_web_service

スケジュールレポート生成の設定について詳しくは、セットアップに進んでください。

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 オプションを使用して、スレッドごとのスタックサイズを増やすことができます。
この問題は、特に複数のスレッドが作成される 前処理 中に、デフォルトのスレッドスタック制限が低いシステムで発生することがあります。

次の例では、スレッドごとのスタックサイズを 512 KB に設定しています。

./configure --enable-server --with-mysql --with-stacksize=512

Linux ベースのシステムでは、ulimit -s コマンドを使用して、実行時にシステムのスレッドスタック制限を確認できます。