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

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エージェント 2 の場合は以下を実行します。

./configure --enable-agent2

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

./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サービスをコンパイルするには、./configureスクリプトを--enable-webserviceオプション付きで実行します。

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

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

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

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

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