Zabbix 5.0をソースからインストールしてみた
前回、Azure環境上に、Zabbix 5.0をセットアップしてみたのですが、Azure Database for MariaDBとの接続が暗号化できませんでした。
【実際に出力されたエラーメッセージ】
“DBTLSConnect" configuration parameter cannot be used: Zabbix server was compiled
エラーメッセージから推測するにZabbix5.0をソースからコンパイルしてセットアップする必要がありそうという事でZabbix5.0 をソースからコンパイルしてセットアップしてみました。
今回構築したシステム環境は前回と同様に下記の通りになります。
-
- ZabbixサーバはAzure VMを利用 (Market Placeからデプロイしたものを利用)
- ZabbixサーバのOSはCentOS 7.7を利用
- DBはAzure Database for MariaDB を利用
- Zabbixは5.01を利用
今回は、前回同様に、Azure VMやOSのセットアップやAzure Database for MariaDBのセットアップが終了している前提で作業を進めます。SElinuxやFirewalldは停止している前提(セキュリティ的にはお勧めしません。今回の設定メインはここじゃないので割愛と言う事です。)で作業を進めています。
Azure Database for MariaDBの接続設定等は、前回の記事(3.Azure Database for MariaDBでZabbixを利用する為の設定を行う)を参考願います。
また、Azure Database for MariaDBの構築は、以下の記事に纏めておりますので、こちらを参照願います。
パッケージのインストール作業
まず、最初にパッケージのインストール作業を実施します。
環境に合わせて適時修正頂ければと思います。バージョンその時の最新の情報を確認して適時修正して下さい。
セットアップするユーザーの権限に応じて、SUDOを利用してセットアップを実施して下さい。
PHP関連とhttpdのパッケージをyumを使ってインストール
コンパイル時やZabbixセットアップ時に要求されたパッケージを纏めてインストールします。
#PHP関連のパッケージをインストールします。SCLを利用しています。 [user@server ]#yum -y install centos-release-scl [user@server ]#yum install -y rh-php72-php-ldap rh-php72-php-bcmath rh-php72-php-fpm rh-php72-php-mysqlnd rh-php72-php-gd rh-php72-php-mbstring #httpdのパッケージをインストールします。 [user@server ]#yum -y install httpd |
MySQL(MariaDB)関連のパッケージをインストール
#MariaDBクライアントをインストールします。最初にリポジトリを登録しています。 [user@server ]#curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash #新規にファイルが作成されますので、以下の内容を貼り付けて保存します。 [mariadb] [user@server ]#yum -y install MariaDB-client MariaDB-shared mariadb-devel |
Zabbixコンパイル時に必要となるパッケージをインストール
Zabbixコンパイル時のオプションによって必要となるパッケージが異なります。コンパイル時にエラーとなった場合は追加で必要なパッケージをインストールしてください。(対象VMにOpenSSL等が入ってない場合は別途パッケージ追加して下さい。)
#パッケージをインストールする際に必要なので [user@server ]#yum -y install epel-release #コンパイル自体に必要になので [user@server ]#yum -y install gcc #コンパイル時のオプションをつけると必要になるので [user@server ]#yum -y install net-snmp net-snmp-devel |
goをセットアップする
yumでもgoのインストール可能なのですが、実際にyumを使ってインストールするとzabbixコンパイル時にエラーとなります。この事象は既知のバグらしくサイトからダウンロードして利用します。
#パッケージをダウンロードします [user@server ]#wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz #/usr/localにgolangを置く [user@server ]#tar -C /usr/local -xzf go1.14.4.linux-amd64.tar.gz #PATHを通す。永続化させる為にファイルにも書く。 [user@server ]#export PATH=$PATH:/usr/local/go/bin [user@server ]#vi /etc/profile.d/go.sh #/bin/bash |
Zabbixをソースからコンパイルしてインストールする
Zabbixをダウンロードしてコンパイルします。今回作業は/usr/local/srcで実施しています。
#Zabbixをダウンロードする [user@server ]#wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.1.tar.gz [user@server ]#tar xzvf zabbix-5.0.1.tar.gz [user@server ]#cd zabbix-5.0.1/ #Zabbixユーザーを作成する [user@server ]#mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix [user@server ]#groupadd –system zabbix [user@server ]#chown zabbix:zabbix /usr/lib/zabbix #Zabbixをコンパイルする [user@server ]#./configure –enable-server –enable-agent –enable-agent2 –with-mysql=/usr/bin/mariadb_config –with-openssl –with-net-snmp –with-openipmi –with-libcurl –with-libxml2 –with-ssh2 –with-ldap [user@server ]#make install |
エラーが発生せずに終了したら、コンパイル終了です。
Azure Database for MariaDBでZabbixを利用設定を行う
前回と同様に設定を行います。DBの文字コード設定とMariaDB上にZabbixユーザーを行います。
Azure Database for MariaDBの文字コード設定
Azure Database for MariaDBの画面でサーバパラメータを選択します。
以下の通りcharacter_set_serverにUTF8、collation_serverにUTF8_BINを選択します。
設定が終わったら保存します。
データベースとDBユーザーを作成
DBユーザーはZabbixで作成しています。DBユーザーを@Localhostで作成すると外部からアクセスできないので、今回はZabbixのサーバのグローバルIPを設定します。(環境に応じて変更してください。)
#DBログイン時にAzure Database for MariaDBサーバ管理者のパスワードが必要になりますので適時入力してください。 [user@server ]#mysql -h サーバ名 -u サーバ管理者名 -p –ssl MySQL [(none)]>create database zabbix character set utf8 collate utf8_bin; MySQL [(none)]> Grant all privileges on zabbix.* to zabbix@アクセス元のIP identified by 'パスワード’; |
Zabbixの初期設定用SQLを実行
Zabbixの初期設定を行うSQLを流します。
#Zabbixを解凍したディレクトリに移動します。解凍されたファイル内のdatabase/mysqlに、実行すべきsqlが配置されています。 [user@server ]#cd /usr/local/src [user@server ]#cd zabbix-5.0.1/database/mysql #パスワードが必要になりますので適時入力してください。 [user@server ]#mysql -h サーバ名 -u zabbix zabbix -p –ssl < database/mysql/schema.sql [user@server ]#mysql -h サーバ名 -u zabbix zabbix -p –ssl < database/mysql/images.sql [user@server ]#mysql -h サーバ名 –u zabbix zabbix -p –ssl < database/mysql/data.sql [user@server ]#mysql -h サーバ名 -u -u zabbix zabbix -p –ssl < database/mysql/double.sql |
zabbixの設定ファイルを編集をする
rpmを使ってインストールした時とはファイルの場所が異なります。
【ソース】/usr/local/sbin/zabbix_server
【rpm】/usr/sbin/zabbix_server
【ソース】/usr/local/etc/zabbix_server.conf
【rpm】/etc/zabbix/zabbix_server.conf
という感じです。また、ディレクトリも自分で作成する必要があります。
今回はrpmと同じような構成になるように、実体のファイルをコピーする形で実施しています。
なお、シンボリックリンクや、設定ファイルをソースでコンパイルした場合に合わせて編集する形が一般的かと思います。
Zabbixで利用するディレクトリを作成
#Zabbixで利用するディレクトリを作成する(今回はrpm利用時に合わせてみてます。環境に合わせて修正して下さい。) [user@server ]#mkdir -m u=rwx,g=rx,o= -p /var/log/zabbix [user@server ]#mkdir -m u=rwx,g=rx,o= -p /var/run/zabbix [user@server ]#mkdir -m u=rwx,g=rx,o= -p /etc/zabbix [user@server ]#mkdir -m u=rwx,g=rx,o= -p /usr/share/zabbix [user@server ]#mkdir -m u=rwx,g=rx,o= -p /etc/zabbix/web [user@server ]#mkdir -m u=rwx,g=rx,o= -p /var/log/snmptrap [user@server ]#mkdir -m u=rwx,g=rx,o= -p /usr/lib/zabbix/alertscripts/ [user@server ]#mkdir -m u=rwx,g=rx,o= -p /usr/lib/zabbix/externalscripts/ |
再起動後/var/run配下のディレクトリが削除されるので対応する
#/usr/lib/tmpfiles.dにConfファイルを新規作成する [user@server ]#vi /usr/lib/tmpfiles.d/zabbix-server.conf d /run/zabbix 0755 zabbix zabbix – – [user@server ]#vi /usr/lib/tmpfiles.d/zabbix-agent.conf d /run/zabbix 0755 zabbix zabbix – – |
Zabbix関連の設定ファイルやモジュールをコピー
#Zabbixモジュールをコピーする [user@server ]#cp -rfp /usr/local/sbin/zabbix_* /usr/sbin/ #ZabbixのConfをコピーする [user@server ]#cp -rfp /usr/local/etc/zabbix_* /etc/zabbix/ #ZabbixのUIをコピーする(UIは解凍したディレクトリのui配下にあります。今回は/var/www/html/zabbixではなくAliaseを利用しています) [user@server ]#cp -rfp /usr/local/src/zabbix-5.0.1/ui/* /usr/share/zabbix/ #zabbix.conf.phpをコピーする(rpm利用時と違う場所になります) [user@server ]#cp -p /usr/share/zabbix/conf/zabbix.conf.php.example /usr/share/zabbix/conf/zabbix.conf.php |
Zabbix用のhttpd設定ファイルを新規作成
#httpdの設定を行う [user@server ]#vi /etc/httpd/conf.d/zabbix.conf # Alias /zabbix /usr/share/zabbix <Directory “/usr/share/zabbix"> <IfModule dir_module> <FilesMatch \.(php|phar)$> <Directory “/usr/share/zabbix/conf"> <Directory “/usr/share/zabbix/app"> <Directory “/usr/share/zabbix/include"> <Directory “/usr/share/zabbix/local"> |
zabbix_server.confを設定
zabbix_server.confでDB接続やLog等のディレクトリ設定します。
#設定ファイルのバックアップを取得してから設定します。 [user@server ]#cp -p /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.`date “+%Y%m%d"` #設定変更箇所のみ記載すると、こんな感じになります。(Log設定等はZabbixセットアップのデフォルトにしています。) LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid SocketDir=/var/run/zabbix DBHost=サーバ名(XXX.mariadb.database.azure.com) DBUser=ユーザ名(zabbix@XXX) DBPassword=パスワード(DB上に作成したZabbixユーザのパスワード) DBPort=3306 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts DBTLSConnect= required |
zabbix_agentd.confを設定
今回はzabbix_agent2.confは割愛します。
#設定ファイルのバックアップを取得してから設定します。 [user@server ]#cp -p /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.`date “+%Y%m%d"` #設定変更箇所のみ記載すると、こんな感じになります。(Log設定等はZabbixセットアップのデフォルトにしています。) PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Include=/etc/zabbix/zabbix_agentd.d/*.conf |
zabbix用のPHPファイルを新規作成
[user@server ]# vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf [zabbix] listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock pm = dynamic php_value[session.save_handler] = files php_value[max_execution_time] = 300 |
zabbix_server、zabbix_agentdをサービス登録
zabbix_serverをサービス登録
#zabbix_serverのサービス登録を実施します。 [user@server ]# cd /usr/lib/systemd/system/ [user@server ]# vi zabbix-server.service [Unit] [Service] [Install] |
zabbix_agentdをサービス登録
#zabbix_agentdのサービス登録を実施します。 [user@server ]# cd /usr/lib/systemd/system/ [user@server ]# vi zabbix-agent.service [Unit] [Service] [Install] |
サービスを起動する
zabbixに関するサービスの起動設定
#Zabbixサーバに関するサービスを起動します。 [user@server ]# systemctl start zabbix-agent zabbix-server rh-php72-php-fpm httpd |
Zabbixにアクセスして設定をする
zabbix Serverにアクセスした設定を行います。初期設定では下記の通りになっています。
-
- アクセス先URL : http://ZabbixサーバのIP/zabbix/
(1)URLにアクセスすると下記画面が表示されます。
(2)Next Stepをクリックすると、プレチェックの画面が表示されます。すべてOKであればNext Stepをクリックします。
(3)Next Stepをクリックすると、DBコネクション設定が表示されます。以下の値を入力します。TLS encryptionはチェックを入れてください。これによりDB接続が暗号化されます。
-
- Database host : サーバ名(XXX.mariadb.database.azure.com
- User : ユーザ名(zabbix@XXX)
- パスワード : パスワード(DB上に作成したZabbixユーザのパスワード)
- TLS encryption:チェックを入れます
(4)Zabbix server details、Pre-instlation Summary画面はそのまま変更せずに、Next Stepをクリックします。完了するとログイン画面が表示されます。
(5)ログイン画面が表示されたら、初期ユーザーでログインして下さい。
-
- ユーザーID ; Admin
- パスワード : zabbix
(6)ログインが成功すると下記画面が表示されます。
Zabbix server is runningが”Yes”となっていれば正常起動しています。(画面が表示されていてもここのがNoの場合は正常動作していません。)
セットアップがエラーになった場合
DBの接続関連でエラーになった場合、以下のファイルを確認してみて下さい。DB['VERIFY_HOST’]やDB接続情報周りを確認します。
#zabbix_agentdのサービス登録を実施します。 [user@server ]# vi zabbix-agent.service <?php $DB['TYPE’] = 'MYSQL’; // Schema name. Used for PostgreSQL. // Used for TLS connection. ~以下略~ |
今回はユーザー、設定、暗号化を含む多くの設定をデフォルトで作成しています。環境やセキュリティ等を考えて適時設定は変更するようにして下さい。
その他、メール設定は下記で試しています。