You are viewing documentation for the development version, it may be incomplete.
Join our translation project and help translate Zabbix documentation into your native language.

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

Zabbixの最新バージョンは、ソースからコンパイルすることで入手できます。 Zabbixソースコードの取得も参照してください。

ソースからZabbixをインストールするためのステップバイステップのチュートリアルをここに示します。

1 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 getZabbix 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

2 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インターフェースのインストールページを参照してください。

3 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 - すべての依存関係を含むソースアーカイブを作成

4 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ゲートウェイの設定と実行の詳細については、セットアップに進んでください。

5 Zabbix Webサービスのインストール

Zabbix Webサービスのインストールは、スケジュールレポートを使用する場合にのみ必要です。

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

Zabbix Webサービスをコンパイルするには、--enable-webserviceオプションを付けて./configureスクリプトを実行します。

Zabbix Webサービスをビルドするには、サポートされているGoバージョンが必要です。

Webサービスをインストールしたマシンでzabbix_web_serviceを実行します:

zabbix_web_service

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

6 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

7 コンパイルの問題

これらは、ソースからの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コマンドを使用して実行時にシステムのスレッドスタック制限を確認できます。