Zabbixの最新バージョンは、ソースからコンパイルすることで入手できます。 Zabbixソースコードの取得も参照してください。
ソースからZabbixをインストールするためのステップバイステップのチュートリアルをここに示します。
Zabbixダウンロードページにアクセスし、ソースアーカイブをダウンロードします。ダウンロードしたら、以下のコマンドを実行してソースを展開します。
コマンドには正しいZabbixバージョンを入力してください。ダウンロードしたアーカイブ名と一致する必要があります。
すべてのZabbixデーモンプロセスは、特権のないシステムユーザーで実行されます。 Zabbixデーモンが特権のないユーザーアカウントから起動された場合、そのユーザーで実行され続けます。
デフォルトの設定では、デーモンが root として起動された場合、zabbix ユーザーアカウントに切り替わります。このアカウントは存在している必要があります。 zabbix システムユーザーとグループを作成するには、以下のコマンドを実行してください。
RedHat系システムの場合:
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbixDebian系システムの場合:
addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbixZabbixフロントエンド用に別のユーザーアカウントを作成する必要はありません。
Zabbixのサーバーとエージェントが同じマシンで動作する場合は、別々のユーザーアカウントで実行することを推奨します。 両方を同じユーザーで実行すると、エージェントがサーバーの設定ファイルにアクセスできるようになり、データベースのパスワードなどの機密情報がZabbixの管理者レベルのユーザーに漏洩する可能性があります。
Zabbixを root、bin、または特別な権限を持つ他のアカウントで実行することは、セキュリティリスクとなります。
Zabbixプロセスはホームディレクトリを必要としないため、通常は作成を推奨しません。 ただし、$HOME/.my.cnfにMySQLの認証情報を保存するなど、ホームディレクトリが必要な機能を利用する場合は、以下のコマンドで作成できます。
RedHat系システムの場合:
Debian系システムの場合:
Zabbixのサーバーおよびプロキシデーモン、ならびにZabbixフロントエンドにはデータベースが必要です。Zabbixエージェントの実行には必要ありません。
データベーススキーマの作成とデータセットの挿入には、SQLスクリプトが提供されています。Zabbixプロキシのデータベースにはスキーマのみが必要ですが、Zabbixサーバーのデータベースにはスキーマに加えてデータセットも必要です。
Zabbixデータベースを作成したら、Zabbixのコンパイルの次の手順に進みます。
Zabbixサーバー、Zabbixプロキシ、またはZabbixエージェントをビルドするには、GNU拡張付きのC99が必要です。 このバージョンは、CFLAGS="-std=gnu99"を設定することで明示的に指定できます。
Zabbix Gitリポジトリからインストールする場合は、最初に次を実行する必要があります。
./bootstrap.sh
Zabbixサーバーまたはプロキシのソースを設定する場合は、 使用するデータベースタイプを指定する必要があります。サーバーまたはプロキシプロセスで一度にコンパイルできるデータベースタイプは1つだけです。
サポートされているすべての設定オプションを表示するには、展開した Zabbixソースディレクトリ内で次を実行します。
Zabbixサーバーとエージェントのソースを設定するには、次のように実行できます。
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-aresZabbixサーバー(PostgreSQLなど)用のソースを設定するには、次のように実行できます。
Zabbixプロキシ(SQLiteなど)用のソースを設定するには、次のように実行できます。
Zabbixエージェント用のソースを設定するには、次のように実行できます。
または、Zabbix agent 2の場合は次のようにします。
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が不足している場合、直前のエラーメッセージは誤解を招く場合があります。
この場合、config.logには実際の原因が記載されています。
関連情報:
Zabbix Gitリポジトリからインストールする場合は、最初に次を実行する必要があります:
$ make dbschema
このステップは、十分な権限を持つユーザー(通常は'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にインストールされます。
このファイルは、zabbix_agentdをインストールしたすべてのホストで設定する必要があります。
ファイル内でZabbixサーバーのIPアドレスを指定する必要があります。 他のホストからの接続は拒否されます。
データベース名、ユーザー、およびパスワード(使用している場合)を指定する必要があります。
他のパラメータは、小規模なインストール(監視対象ホストが10台まで)の場合はデフォルトのままで問題ありません。ただし、Zabbixサーバー(またはプロキシ)のパフォーマンスを最大化したい場合は、デフォルトのパラメータを変更する必要があります。
サーバーのIPアドレスとプロキシのホスト名(サーバーで認識されている必要があります)、およびデータベース名、ユーザー、パスワード(使用している場合)を指定する必要があります。
SQLiteを使用する場合は、データベースファイルへのフルパスを指定する必要があります。DBユーザーとパスワードは不要です。
サーバー側でzabbix_serverを実行します。
システムが36MB(またはそれ以上)の共有メモリの割り当てを許可していることを確認してください。そうでない場合、サーバーが起動せず、サーバーログファイルに「Cannot allocate shared memory for <type of cache>.」と表示されることがあります。これはFreeBSDやSolaris 8で発生する可能性があります。
監視対象のすべてのマシンでzabbix_agentdを実行します。
システムが2MBの共有メモリの割り当てを許可していることを確認してください。そうでない場合、エージェントが起動せず、エージェントログファイルに「Cannot allocate shared memory for collector.」と表示されることがあります。これはSolaris 8で発生する可能性があります。
Zabbixプロキシをインストールした場合は、zabbix_proxyを実行します。
ZabbixフロントエンドはPHPで書かれているため、実行するにはPHPをサポートするWebサーバーが必要です。 インストールは、uiディレクトリからWebサーバーのHTMLドキュメントディレクトリにPHPファイルをコピーするだけで行えます。
Apache WebサーバーのHTMLドキュメントディレクトリの一般的な場所は以下の通りです:
HTMLルートの代わりにサブディレクトリを使用することを推奨します。 サブディレクトリを作成し、Zabbixフロントエンドファイルをコピーするには、<htdocs>を実際のディレクトリに置き換えて以下のコマンドを実行します:
英語以外の言語を使用する場合は、追加フロントエンド言語のインストールの手順を参照してください。
Zabbixフロントエンドのインストールウィザードについては、Webインターフェースのインストールページを参照してください。
Zabbix agent 2 ローダブルプラグインのインストールは、組み込みプラグインでカバーされていないターゲット(例:MongoDB サーバーやクラスター、PostgreSQL やそのフォークなど)を監視したい場合にのみ必要です。 ローダブルプラグインと組み込みプラグインの全リストを参照してください。
プラグインをインストールする前に、必ずその README ファイルを確認してください。 特定の要件やインストール手順が記載されている場合があります。
ソースからインストールするには、まずダウンロードしてローダブルプラグインのソースアーカイブを展開します。
プラグインをコンパイルするには、展開したプラグインディレクトリに移動し、make を実行します。
Zabbix agent 2 ローダブルプラグインのビルドにはサポートされている Go バージョンが必要です。
プラグインの実行ファイルは、Zabbix agent 2 からロード可能であればどこに配置しても構いません。 プラグインの設定ファイル(例:PostgreSQLプラグインの場合は postgresql.conf)で、プラグインバイナリへのパスを指定します。
プラグイン設定ファイルへのパスは、Zabbix agent 2 の設定ファイルの Include パラメータで指定する必要があります。
プラグインの設定の詳細については、セットアップに進んでください。
Zabbix が提供するローダブルプラグインは、以下のビルドターゲットを持つシンプルな makefile を使用しています。
make - プラグインのビルドmake clean - プラグインのビルドで作成されたすべてのファイルを削除make check - セルフテストの実行(実際の監視ターゲット、例:PostgreSQL データベースが必要)make style - golangci-lint で Go コードスタイルをチェックmake format - go fmt で Go コードをフォーマットmake dist - すべての依存関係を含むソースアーカイブを作成JMXアプリケーションを監視する場合のみ、Javaゲートウェイのインストールが必要です。Javaゲートウェイは軽量で、データベースを必要としません。
ソースからインストールするには、まずソースアーカイブをダウンロードして展開します。
Javaゲートウェイをコンパイルするには、./configureスクリプトを--enable-javaオプション付きで実行します。Javaゲートウェイのインストールでは単一の実行ファイルだけでなくディレクトリツリー全体が作成されるため、--prefixオプションでデフォルトの/usr/local以外のインストールパスを指定することを推奨します。
JavaゲートウェイをコンパイルしてJARファイルにパッケージ化するには、makeを実行します。このステップでは、javacおよびjarの実行ファイルがパスに含まれている必要があります。
これで、src/zabbix_java/binにzabbix-java-gateway-$VERSION.jarファイルが作成されます。配布ディレクトリのsrc/zabbix_javaからJavaゲートウェイを実行しても問題ない場合は、Javaゲートウェイの設定と実行の手順に進んでください。 そうでない場合は、十分な権限があることを確認し、make installを実行してください。
Javaゲートウェイの設定と実行の詳細については、セットアップに進んでください。
Zabbix Webサービスのインストールは、スケジュールレポートを使用する場合にのみ必要です。
ソースからインストールするには、まずソースアーカイブをダウンロードして解凍します。
Zabbix Webサービスをコンパイルするには、--enable-webserviceオプションを付けて./configureスクリプトを実行します。
Zabbix Webサービスをビルドするには、サポートされているGoバージョンが必要です。
Webサービスをインストールしたマシンでzabbix_web_serviceを実行します:
スケジュールレポート生成の設定の詳細については、セットアップに進んでください。
Zabbixソースコードを取得する方法はいくつかあります。
リポジトリをクローンするには、Gitクライアントがインストールされている必要があります。公式のコマンドラインGitクライアントパッケージは、ディストリビューションでは一般的にgitと呼ばれています。例えば、Debian/Ubuntuでインストールするには、次のコマンドを実行します。
すべてのZabbixソースを取得するには、コードを配置したいディレクトリに移動し、次のコマンドを実行します。
これらは、ソースからのZabbixのコンパイルに関する既知の問題です。他のすべての場合については、既知の問題のページを参照してください。
Zabbixでは、非標準の場所にあるライブラリを指定することができます。以下の例では、Zabbixは指定された非標準の場所からcurl-configを実行し、その出力を使用して使用する正しいlibcurlを決定します。
これは、システムにインストールされている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に設定しています。
Linuxベースのシステムでは、ulimit -sコマンドを使用して実行時にシステムのスレッドスタック制限を確認できます。